DE4000215A1 - Einrichtung zum erzeugen von bildausschnitten unter verwendung eines testfensters in einem graphiksystem - Google Patents

Einrichtung zum erzeugen von bildausschnitten unter verwendung eines testfensters in einem graphiksystem

Info

Publication number
DE4000215A1
DE4000215A1 DE19904000215 DE4000215A DE4000215A1 DE 4000215 A1 DE4000215 A1 DE 4000215A1 DE 19904000215 DE19904000215 DE 19904000215 DE 4000215 A DE4000215 A DE 4000215A DE 4000215 A1 DE4000215 A1 DE 4000215A1
Authority
DE
Germany
Prior art keywords
coordinate
registers
offset
window
register
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE19904000215
Other languages
English (en)
Other versions
DE4000215C2 (de
Inventor
Curtis Priem
Chris Malachowsky
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE4000215A1 publication Critical patent/DE4000215A1/de
Application granted granted Critical
Publication of DE4000215C2 publication Critical patent/DE4000215C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/30Clipping

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Description

Die Erfindung ist auf eine Einrichtung und ein Verfahren zur Verbesserung der Effizienz beim Ausschneiden von Bildern gerichtet, die auf einem Graphikanzeige-Untersystem zur Anzeige gebracht werden. Hierzu wird erfindungsgemäß ein Testfenster definiert, welches ein der Bildwiedergabe dienendes Fenster (das Ausschnittfenster) umgibt. Objekte werden danach getestet, um festzustellen, ob ihre Ecken bzw. Scheitelpunkte außerhalb des Testfensters liegen. Die Benutzung dieses Testfensters ermöglicht eine Leistungsoptimierung zwischen der Verarbeitung eines Ausschnittobjekts mittels eines graphischen Untersystems auf Hardwarebasis, das die vorliegende Erfindung zur Verfügung stellt, oder durch Graphiksoftware, ausgeführt von einer Universal-CPU, die auch als Interface zum Graphikdisplay dient. Durch geeignete Definition der Testfenstergröße relativ zum Ausschnittfenster gelingt es, daß vollständig in das Testfenster fallende Objekte trotz ihrer Begrenzung bzw. Beschneidung und der möglichen Notwendigkeit der Verarbeitung zahlreicher unsichtbarer Pixel schneller von dem graphischen Untersystem erfaßt werden können, im Vergleich zu dem Fall, daß das Objekt mit Hilfe graphischer Software, bekannten Algorithmen und Verfahren gerade auf diejenigen Pixel beschränkt wird, die sichtbar sein und zuletzt mit Hilfe des Videodisplay ausgegeben werden sollen. Objekte mit aus dem Testfenster herausfallenden Ecken werden der Graphiksoftware zur Verarbeitung zugewiesen, da sie die sichtbaren Teile des Objekts in kürzerer Zeit entwickelt als wenn das graphische Untersystem das Objekt verarbeiten würde. Diese Optimierung der Einsatzfälle, spezieller Graphik-Hardware zur Verarbeitung eines ausgeschnittenen Objekts kann einen wesentlichen Effekt auf die Gesamtleistung des Graphiksystems haben.
Die Erfindung wird unter Bezugnahme auf ein Graphik-Untersystem beschrieben, bei dem die zum Beschneiden (clipping) notwendigen Vergleiche in Hardware durchgeführt werden. Als Nebenprodukte dieser Vergleiche fallen gewisse Informationen an, die zur Bestimmung der Beziehung zwischen den Ecken bzw. Scheitelpunkten eines Objekts und eines der Objektwiedergabe dienenden Fensters benötigt werden.
Der Gegenstand der Erfindung ist Bestandteil einer Einrichtung, die das Ausschneiden bzw. Kappen (clipping) von auf einem Videodisplay wiederzugebenen Bildern, wenn immer möglich, in Hardware vornimmt, und der Software nur diejenigen Bilder oder Bildausschnitte überläßt, die unter Verwendung des graphischen Untersystems gemäß der Erfindung nicht zuverlässig oder aus Leistungsgründen optimal ausgeschnitten oder beschnitten werden können.
Im folgenden wird die Erfindung aufgrund eines in der Zeichnung dargestellten Ausführungsbeispiels näher erläutert. In der Zeichnung zeigt
Fig. 1 ein allgemeines Blockschaltbild eines graphischen Untersystems für eine Arbeitsstation (work station),
Fig. 2 ein Blockschaltbild des Koordinatenentwicklungs- und -einspeicherabschnitts des erfindungsgemäßen Graphik-Untersystems,
Fig. 3 ein genaueres Blockschaltbild des Addierers 31 und des Multiplexers 35,
Fig. 4 ein genaueres Blockschaltbild von X/Y-Koordinatenregistern 37,
Fig. 5 ein genaueres Blockschaltbild von Ausschnittkoordinatenregistern 39;
Fig. 6 ein genaueres Blockschaltbild eines Raster- Offsetregisters 41,
Fig. 7 ein genaueres Blockschaltbild einer Testfenstersteuerung 45,
Fig. 8 ein genaueres Blockschaltbild einer Vergleichslogik- und Ergebnisspeichereinrichtung 47,
Fig. 9 eine Tabelle mit relativen Zeitgaben für die Ladesteuerungszustandsmaschine 35 und von der Vergleichslogik und Ergebnisspeicherung 47 durchgeführten Vergleichen,
Fig. 10 eine Wahrheitstabelle unter Verwendung von Vergleichsergebnissen für die X 0-Koordinate,
Fig. 11a und 11b Wahrheitstabellen unter Verwendung der Vergleiche zwischen jeder der vier X-Scheitel- bzw. Eckpunkte und jeder der vier Y-Scheitel- bzw. Eckpunkte,
Fig. 12a-12d eine Wahrheitstabelle unter Verwendung von Vergleichen zwischen den vier X- und den vier Y-Eck- bzw. Scheitelpunkten und den Ausschnittgrenzen,
Fig. 13 eine Wahrheitstabelle unter Verwendung von Vergleichen zwischen den vier X- und den vier Y-Scheitel- bzw. Eckpunkten und den Testfenstergrenzen und
Fig. 14 eine Wahrheitstabelle, welche die Richtung anzeigt, in der Objekte gezeichnet oder Blits durchgeführt werden sollen.
Die Erfindung ist auf ein graphisches Untersystem einer Konstruktionsarbeitsstation und insbesondere auf eine Hardware- Implementierung zur Verarbeitung graphischer Informationen gerichtet, die innerhalb eines definierten Fensters zur Anzeige gebracht werden sollen. Durch Verwendung von Informationen, die durch Vergleichshardware zur Verfügung gestellt werden, kann festgestellt werden, ob die Eck- oder Scheitelpunkte des Objekts außerhalb eines das zu betrachtende Fenster umgebenden Testfensters liegen. Sobald solche Informationen zur Verfügung stehen, kann häufig festgestellt werden, ob das Objekt vollständig außerhalb des echten Fensters liegt, wodurch die Durchführung von Berechnungen für das Zeichnen des Objektes überflüssig wird.
Insbesondere unterstützt die Erfindung eine sekundäre Ausschnittsgrenze, die als Testfenster bezeichnet wird. Das Testfenster liefert ein Mittel zur Entscheidung zwischen der Hardwareverarbeitung eines Objekts mit einigen abgeschnittenen (dunklen) Teilen und der Hardwarezurückweisung des Objekts, was bedeutet, daß die CPU-Software die Verarbeitung des Objekts übernimmt. Das nach dem Stande der Technik verwendete Softwareverfahren beinhaltet mathematische Operationen zum Auffinden der Schnittstelle(n) des Objekts und der Ausschnittgrenzen. Da dies eine zeitaufwendige (zahlreiche Taktzyklen erfordernde) Aufgabe ist, ist es in vielen Fällen tatsächlich zeitsparend, das Objekt unter Einsatz von Hardware zu verarbeiten, obwohl dazu viele Zyklen für die Verarbeitung dunkler Teile des Objekts notwendig sein können. Die Entscheidungskriterien hinsichtlich des Einsatzes von Hardware zur Verarbeitung bestimmter abgeschnittener Objektteile wird danach getroffen, ob die Scheitel- oder Eckpunkte des Objekts sich innerhalb oder außerhalb des Testfensters befinden, das definitionsgemäß stets das Ausschnittfenster vollständig umschließt. Die Größe des Testfensters wird nach vorheriger Kenntnis der Leistungsfähigkeit der Hardware und der Leistungsfähigkeit des Hauptprozessors bei der Berechnung der Schnittstellen und der Umsetzung sichtbarer Teile des Objekts eingestellt. Zur Unterstützung des Testfensters und der sich auf dieses beziehenden Entscheidungen führt die Koordinatenvergleichslogik auch Vergleiche jedes Eck- oder Scheitelpunktes mit der entsprechenden (X- oder Y-)minimal- und maximal- Testfenstergrenze durch. Wie genauer weiter unten erläutert werden wird, dient diese Information der Zustandserzeugungslogik 51 zur Erzeugung der Signale HW und SW, die jeweils die Entscheidung darüber treffen, ob die Objektwiedergabe mit dem Graphikuntersystem oder mittels Software erfolgen soll.
Die Koordinateneinspeicherungs(coordinate staging)- und -vergleichslogikblöcke (Fig. 1) dienen der Beschaffung der notwendigen Speicher- und Vergleichsinformationen, die zu einer beliebigen Viereckumsetzung mit Beschneidung sowie für Blockbildübertragungen (BLIT) mit Beschneidung erforderlich sind. In beiden Fällen ist es notwendig, vier X/Y-Koordinatenpaare anzugeben und die Fensterausschnittsgrenzen zu spezifizieren.
Die Viereckerzeugung bedingt die Verfügbarkeit von vier Eckpunkten, welche das Viereck definieren. Das beschriebene Ausführungsbeispiel der Erfindung legt diesen Eckpunkten nur sehr wenig Beschränkungen an. Sie werden in vier Registerpaaren gespeichert (ein Registerpaar besteht aus einem Register für die X-Koordinate und einem Register für die Y-Koordinate) und werden mit den Ecknummern 0 bis 3 bezeichnet. Es wird impliziert, daß Eckpunkt 0 mit Eckpunkt 1, Eckpunkt 1 mit Eckpunkt 2, Eckpunkt 2 mit Eckpunkt 3 und Eckpunkt 3 mit Eckpunkt 0 verbunden ist. Keine Verbindung ist zwischen den Eckpunkten 0 und 2 oder den Eckpunkten 1 und 3 vorgesehen. Die Koordinateneinspeicher- und -vergleichslogik bildet die Stufen einer Pipeline, welche eventuell die Umsetzung des spezifizierten Vierecks in den Displayspeicher eventuell bewirkt. Die nachfolgenden Pipelinestufen bedingen Informationen bezüglich der Beziehung jedes Eckpunkts zu seinen Nachbarn, d. h. für Eckpunkt 1: X 1 zu X 0, Y 1 zu Y 0, X 1 zu X 2 und Y 1 zu Y 2. Diese Information wird benötigt, um den funktionellen Adressierblock mit einer Folge von Trapezoiden zu versorgen, die nach der Zusammensetzung das ursprüngliche Viereck genau darstellen. Die Zerlegung des willkürlichen Vierecks geschieht durch die Koordinaten-Sequentialisierungs- bzw. Reihenfolgebestimmungslogik.
Um das Beschneiden des Vierecks auf die Ausschnittgrenzen in aufeinanderfolgenden Pipelinestufen zu unterstützen, wird die Beziehung der Eckpunkte zu den entsprechenden Schnittgrenzen benötigt. Dies bedeutet, daß beispielsweise alle X-Eckpunkte sowohl mit der minimalen X-Schnittgrenze als auch mit der maximalen X-Schnittgrenze verglichen werden. Ein ähnlicher Satz von Vergleichen ist auch für die Y-Eckpunkte erforderlich. In einigen Fällen können diese Vergleiche angeben, ob ein Objekt überhaupt über sichtbare (nicht abgeschnittene) Bereiche verfügt. Durch vorhergehende Identifizierung der unsichtbaren Objekte kann der Einsatz von nachfolgenden Pipelinestufen vermieden werden, da keine sichtbaren Pixel für ein Einschreiben in den Displayspeicher jemals identifiziert werden. Dies ist ein betrieblicher Vorteil, da die Erzeugung des Vierecks als unmittelbar nach der Analyse der beschnittenen Information abgeschlossen angesehen werden kann.
Bei dem bevorzugten Ausführungsbeispiel des Graphiksystems wird ein mathematischer 16-Bit-zweier-Komplementärwert für die Bestimmung des einem Liniensegment zugeordneten Pixels verwendet. Diese mathematische Operation beinhaltet die Differenz der beiden X- und der beiden Y-Eckpunkte des Liniensegments. Um mathematischen Überlauf zu vermeiden, muß der numerische Bereich der X- und Y-Eckwerte auf Werte beschränkt werden, die in 15 Bits oder zwischen -2¹⁴ und (2¹⁴-1) darstellbar sind. Zu diesem Zweck wird der numerische Bereich der Eckpunkte von der Koordinatenvergleichslogik überprüft.
Die Erzeugung von BLITs bedingt auch vier Eck- oder Scheitelpunkte, von denen zwei die gegenüberliegenden Ecken eines Quellenrechtecks (SRC) und zwei die gegenüberliegenden Ecken eines Bestimmungsrechtecks (DEST) spezifizieren. Zweck der BLIT-Operation ist das Kopieren der im SRC-Rechteck enthaltenen Pixel in das DEST-Rechteck. Im beschriebenen Ausführungsbeispiel wird die obere linke Ecke des SRC-Rechtecks im Eckpunkt 0 gespeichert, während die untere rechte SRC-Ecke im Eckpunkt 1 liegt. In ähnlicher Weise befindet sich die obere linke DEST-Ecke im Eckpunkt 2 und die untere rechte Ecke im Eckpunkt 3. Um die SRC geeignet in DEST zu kopieren, muß besondere Aufmerksamkeit auf den Fall gerichtet werden, daß zwei Rechtecke einander überlappen. Ist dies der Fall, muß die Reihenfolge, in der Pixel kopiert werden, beachtet werden, wenn das richtige Ergebnis gewonnen werden soll. Dies ist ein für den Fachmann bekanntes Problem. Die Informationen, die zur richtigen Bestimmung der Pixel-Kopierbedingungen erforderlich sind, umfassen den Vergleich der SCR-Rechteckgrenzen mit den DEST-Rechteckgrenzen. Dieser Vergleich wird sowohl für die X- als auch die Y-Koordinaten benötigt.
Zum Zwecke des Beschneidens sowohl der SRC- als auch der DEST-Rechtecke in aufeinanderfolgenden Pipelinestufen ist außerdem die Beziehung der SRC- und DEST-Eckpunkte zu den entsprechenden Beschneidungsgrenzen notwendig. Auch dies kann anzeigen, daß entweder das SRC- oder das DEST-Rechteck vollständig dunkel (unsichtbar) ist, und es kann die Benutzung aufeinanderfolgender Pipelinestufen überflüssig machen. Auch dies stellt einen betrieblichen Vorteil dar, da die Ausführung des BLIT so angesehen werden kann, als hätte sie unmittelbar nach der Analyse der Beschneidungsinformationen stattgefunden.
Die Koordinateneinspeichersteuerlogik eröffnet mehrere Wege für die Gewinnung der Koordinatenwerte. Dementsprechend erhält die Koordinatenvergleichslogik die notwendigen Vergleichsinformationen unabhängig von der Art der Beschaffung der Koordinatenwerte aufrecht. Die verschiedenen Methoden der Koordinatengewinnung können wie folgt zusammengefaßt werden: absolute, Index- und relative Methode. Die benutzte spezielle Methode wird von der Adresse des Registers bestimmt, welches die CPU zum Identifizieren des oder der zu ladenden Register benutzt. Ein absoluter Koordinatenwert wird durch Speicherung des von der CPU in das adressierte Register zugeführten aktuellen Werts geladen. Diese Lademethode wird zum Laden der Ausschnittgrenzenregister und der Rasteroffsetregister sowie von individuellen Koordinatenregistern verwendet. Die zweite Methode, die Indexmethode, dient zum wirksamen Laden von Mehrfachkoordinaten mit den gleichen Werten. In diesem Falle wird der von der CPU gelieferte Wert zunächst zu dem entsprechenden Rasteroffsetregister hinzuaddiert (entweder Rasteroffset X oder Y), bevor er für die Speicherung in einem oder mehreren Koordinatenregistern zur Verfügung steht. Die Addition des Rasteroffset bildet ein Mittel zur Verschiebung (offsetting) des X/Y-Adreßraums, der von der CPU einem anderen Bereich des Displayspeichers zur Verfügung gestellt wird.
Der Index-Lademechanismus benutzt einen 2-Bit-Index zur Eigenführung und zur Identifizierung dafür, wieviele und welche Koordinatenregister während eines vorgegebenen Zyklus zu laden sind. Es ist dieser Mechanismus, welcher es möglich macht, daß die CPU zum Identifizieren eines zu einem Punkt degenerierten Vierecks nur einX/Y-Paar, zwei X/Y-Paare für eine Linie oder drei X/Y-Paare für ein Dreieck zu spezifizieren hat. Wenn eines der vorgenannten degenerierten Vierecke in die vier Ecken-Register geladen wird, so kann ein oder mehrere Eckpunkte wiederholt werden. Dies ist notwendig, damit aufeinanderfolgende Pipelinestufen das als Viereck oder Vierseit definierte Objekt (trotz Degenerierung) stets interpretieren können und es nicht als Spezialfall von Objekten niedrigerer Ordnung (d. h. Punkt, Linie, Dreieck) behandeln. Das Index-Ladeschema ermöglicht es auch, daß nur die entgegengesetzten Ecken eines Rechtecks eingegeben werden, um alle vier Ecken des entsprechenden Vierecks in geeigneter Weise zu definieren.
Die letzte Lademethode, die relative Methode, ermöglicht es der CPU, gerade die Differenz zwischen der zuletzt eingegebenen Koordinate und dem vorgesehenen neuen Koordinatenwert anzugeben. In diesem Falle wird ein von der CPU geliefertes Delta oder Offset der zuvor geladenen Koordinate hinzuaddiert, bevor es in ein oder mehrere Register geladen wird. Der 2-Bit-Index dient zur Identifizierung der zuletzt eingegebenen Koordinate (Ecke(Index-1)mod4) für die notwendige Addition und identifiziert, welches Register oder welche Register zu laden sind, wie bei der Index-Lade-Methode.
Im Ergebnis hat die CPU die freie Wahl, die Koordinatenregister auf irgendeine Weise zu laden. Wenn die Operation, entweder eine Viereckumsetzung oder BLIT, tatsächlich verlangt wird (nach dem Laden der Koordinaten), wird der aktuelle Zustand der vier Eck- bzw. Scheitelwerte direkt benutzt, und zwar unabhängig davon, wie er gewonnen worden ist. Dies gibt der CPU höchste Flexibilität.
Fig. 1 ist eine Gesamtdarstellung eines Graphikuntersystems, in welchem die Erfindung verwendet werden kann. Eine Bus-Interfacelogik 11 ist über Adreß-, Daten- und Steuerbusse mit einer zentralen Verarbeitungseinheit (CPU) verbunden. Die Funktionskomponenten des Graphikuntersystems sind ein Datenweg- und Speicherinterface 13, ein Koordinateneinspeicherabschnitt 15, ein Koordinatensequentialisierungsabschnitt 17, ein funktioneller Adreßblock 19, ein Maskenerzeugungsblock 21 und ein linearer Adreßgenerator 23.
Das Datenweg- und Speicherinterface 13 aktualisiert einen in der Zeichnung nicht dargestellten Rahmenpuffer, der einen auf einem Videodisplay, beispielsweise einer CRT, wiederzugebende graphische Informationen speichernden Speicher bildet. Daten, die in den Rahmenpuffer geladen werden, werden von einer Videoschaltung zugegriffen, welche die Daten in geeignete elektrische Signale umsetzt, die ihrerseits einzelne Pixel der Videoanzeige ein- und ausschalten. Die Daten von der Bus-Interfacelogik werden von dem Maskenerzeugungsblock 21 und dem Linearadressengenerator 23 auf der Basis der vom Koordinateneinspeicherabschnitt 15, vom Koordinatensequentialisierungsabschnitt 17 und von der funktionellen Adressierstufe 19 durchgeführten Verarbeitung modifiziert. Die funktionelle Adressierstufe 19 bewirkt auch einen Teil der Beschneidung, die zum Einpassen der speziellen Graphikobjekte in das für ihre Anzeige vorgesehene Ausschnittfenster notwendig ist und überträgt danach die Signale zur Maskenerzeugungsstufe 21, welche die Informationen in sechzehn Pixelabschnitte ordnet. Letztere überspannen das sichtbare Objekt vom Anfang bis zum Ende für jede Abtastlinie und dienen zur Adressierung der Datenweg- und Speicherinterfacestufe 13.
Die Maskenerzeugungssignale werden auch an den Linearadressengenerator 23 angelegt, der die von der Maskenerzeugungsstufe 21 gelieferten Adressen in Signale zum linearen Adressieren des Rahmenpuffers für die Übertragung zum Ausgabedisplay umsetzt. Die Erfindung ist auf eine Schaltung im Koordinateneinspeicherblock (coordinate staging block) 15 gerichtet, welche gewisse Operationen an ihren Eingangssignalen durchführt, deren Einzelheiten weiter unten unter Bezugnahme auf die Fig. 2 bis 14 beschrieben werden, wobei Informationen nach Art von Steuersignalen erzeugt werden, die ein Graphikuntersystem dazu befähigen, beliebige Viereckwiedergaben unter Beschneiden und Blockbildübertragungen (BLITs) mit Beschneidungen durchzuführen. Daher ist die Erfindung auf eine spezielle Schaltung innerhalb des Koordinateneinspeicherabschnitts 15 gerichtet.
Eine Implementierung der verschiedenen Zeitgabe- und Steuersignale, wie sie für die entsprechende Operation der oben angegebenen Funktionsblöcke für ein Video-Displayuntersystem benötigt wird, ist dem Fachmann bekannt und braucht daher nicht im einzelnen beschrieben zu werden, soweit ihre Beschreibung nicht für das Verständnis der vorliegenden Erfindung erforderlich ist.
Im folgenden wird auf Fig. 2 Bezug genommen, in der ein Gesamtüberblick über den Koordinateneinspeicherabschnitt 15 gezeigt ist. Der Koordinateneinspeicherabschnitt 15 weist einen Addierer 31, eine Ladesteuerungszustandsmaschine 33, einen Multiplexer 35, XY-Koordinatenregister 37, Abschnittskoordinatenregister 39, Rasteroffsetregister 41, eine Indexlogik 43, eine Testfenster-Steuerlogik 45, eine Vergleichslogik und Ergebnisspeichereinheit 47, eine Vergleichssteuerungszustandsmaschine 49 und eine Zustandserzeugungslogik 51 auf.
Vor dem Eingehen auf die erfindungsspezifischen Merkmale soll zunächst kurz beschrieben werden, wie Objekte dargestellt werden, um das Verständnis dafür zu erleichtern, wie die vorliegende Erfindung implementiert wird.
XY-Paare von Eck- oder Scheitelpunkten stellen Videodisplaykoordinaten dar. Bei einem typischen Display liegen X-Werte im Bereich von 0-1151 und Y-Werte im Bereich zwischen 0-899. Jede X-Koordinate und jede Y-Koordinate wird in einem getrennten 32-Bit-Register oder in zwei 16-Bit-Registern gespeichert. Obwohl 16 Bits mehr als ausreichen für die Speicherung der höchsten Bildschirmkoordinate (d. h. bis zu 65 535 oder -32 768 bis +32 767), werden 32 Informationsbits gespeichert, da es sich dabei um den in Graphiksoftware am meisten verbreiteten Datentyp handelt, der einen genügend großen Bereich zur Verarbeitung der meisten lebensechten Objekte liefert, welche Flächen überspannen, die wesentlich größer als das Videodisplay sind.
Viereckige Objekte werden als Kombinationen von vier Paaren von Eck- oder Scheitelpunktkoordinaten (X₀, Y₀), (X₁, Y₁), (X₂, Y₂) und (X₃, Y₃) dargestellt. Wenn ein Objekt ein Punkt ist, so sind alle vier Paare von Eckpunktkoordinaten die gleichen oder drei Punkte werden wiederholt. Wenn ein Objekt eine Linie ist, so werden zwei der vier (oder drei der vier) Eckpunktkoordinatenpaare repliziert. Wenn ein Objekt ein Dreieck ist, so wird ein Eckpunktkoordinatenpaar aus vier Paaren wiederholt. Wenn ein Objekt ein Viereck ist, so sind alle vier Paare unterschiedlich. Objekte (d. h. Punkt, Linie, Dreieck oder Viereck) werden unter Verwendung der Minimalzahl von besonderen Eckpunkten am wirksamsten definiert, die notwendig sind, um das Objekt vollständig zu beschreiben, d. h. für einen Punkt -1, für eine Linie -2, für ein Dreieck -3, für ein Viereck -4 und für ein Rechteck -2 (entgegengesetzte Eckpunkte).
Wenn eine Blockbildübertragungsoperation (BLIT) durchgeführt werden soll, so haben die vier X/Y-Register die folgende Interpretation und werden dementsprechend geladen:
X 0 - X-Koordinate für die obere linke Ecke des Quellenblocks,
Y 0 - Y-Koordinate für die obere linke Ecke des Quellenblocks,
X 1 - X-Koordinate für die untere rechte Ecke des Quellenblocks,
Y 1 - Y-Koordinate für die untere rechte Ecke des Quellenblocks,
X 2 - X-Koordinate für die obere linke Ecke des Bestimmungsblocks,
Y 2 - Y-Koordinate für die obere linke Ecke des Bestimmungsblocks,
X 3 - X-Koordinate für die untere rechte Ecke des Bestimmungsblocks,
Y 3 - Y-Koordinate für die untere rechte Ecke des Bestimmungsblocks.
Auf einem Display, beispielsweise einer Bildröhre, anzuzeigende Bilder werden als diskrete Pixel gebildet, welche in einem Direktzugriffsspeicher (RAM), bekannt als Rahmenpuffer, in einer oder mehreren Ebenen (oder Bits) gespeichert werden, wobei die Anzahl von Ebenen beim Farbsystem typischerweise acht ist. In dem Rahmenpuffer gespeicherte Daten werden von einem Koordinatenpaar X und Y adressiert, wobei ein X,Y-Paar ein spezielles Pixel in allen Ebenen identifiziert, X die Zeile und Y die Spalte darstellt. Ein Pixel wird durch ein einzelnes Bild aus jeder Ebene definiert. Wenn acht Ebenen verwendet werden, wird daher jedes wiedergegebene Pixel durch 8 Bits im Rahmenpuffer definiert. Auf diese Weise kann ein Bit eines Pixels dazu verwendet werden, anzugeben, ob es an oder aus ist, wobei die restlichen 7 Bits die Pixelfarbe bezeichnen. Alternativ können alle acht Pixel zur Bezeichnung der Farbe verwendet werden, wobei eine der Farbe entsprechend der Hintergrundfarbe des Displays das Pixel ausschaltet.
Die Erfindung liegt hauptsächlich in der Implementierung der Testfenstersteuerlogik 45 und der Zustandserzeugungslogik 51. Die Operationsweise und Implementierung der anderen Funktionsblöcke aus Fig. 2 werden nur so weit genauer beschrieben, wie sie für eine geeignete Erläuterung der erfindungsgemäß getroffenen Maßnahmen notwendig sind.
Addierer 31 und Multiplexer (MUX) 35
Addierer 31 ist ein 16- oder 32-Bit-zweier-Komplement-Binäraddierer mit zwei Eingängen, nämlich einem Dateneingang von der Bus-Interfacelogik 11 mit einlaufenden Daten von der CPU und einem Eingang vom MUX 35, einem Multiplexer, der einen aus einer Gruppe von Eingängen von den Rasteroffsetregister 47, X/Y-Koordinatenregistern 37 oder Ausschnittkoordinatenregistern 39 auswählt. Der Eingang vom MUX 35 wird durch Signale ausgewählt, welche von der Ladesteuerungszustandsmaschine 33 in der weiter unten beschriebenen Weise erzeugt werden.
Die Details des Addierers 31 und des Multiplexers 35 werden im folgenden unter Bezugnahme auf Fig. 3 beschrieben. In Fig. 3 ist der Addierer 31 als 16-Bit-Addierer gezeigt. Obwohl ein 32-Bit-Addierer verwendet werden könnte, da die Dateneingabe bei dem beschriebenen Ausführungsbeispiel 32 Bits ist, wird ein 16-Bit-Addierer verwendet, um Platz auf der integrierten Schaltung zu sparen, in der die Erfindung implementiert ist, und da die Zeitgabeerfordernisse der erfindungsgemäß verwendeten Pipeline durch eine 2-Schritt-Addition erfüllt sind. Die Unterschiede gegenüber der Verwendung eines 32-Bit-Addierers sind für den Fachmann klar und brauchen hier nicht im einzelnen beschrieben zu werden.
Der Multiplexer 35 besteht tatsächlich aus zwei Multiplexern 35 a und 35 b und einem dritten Multiplexer 36, der zur Eingabe der 16 Bits höherer und niedrigerer Ordnung von der Dateneingabe verwendet wird. Multiplexer 35 a und 35 b erhalten die 16 Bits höherer und niedriger Ordnung aus sieben 32-Bit-Eingängen wie folgt: eine 16-Bit-Eingabe (Vorzeichen erweitert auf 32 Bits) von Rasteroffsetregistern 41, vier 32-Bit-Eingänge von X/Y-Koordinatenregistern 37 und zwei 16-Bit-Eingaben (Zeichen erweitert auf 32-Bits) von Ausschnittkoordinatenregistern 39. Die Ausgangssignale der Multiplexer 35 a und 35 b werden zur Bildung der Signal-Datenausgabe kombiniert (um der CPU Lesezugriff zu diesen Registerwerten zu geben) und werden außerdem in einen dritten Multiplexer 40 eingegeben, der die Ausgabe des Multiplexers 35 a immer dann durchläßt, wenn die Bits hoher Ordnung von X₀-X₃ oder Y₀-Y₃ zugegriffen werden; anderenfalls wählt der Multiplexer 40 den Ausgang von Multiplexer 35 b aus. Der Ausgang des Multiplexers 40 wird als Eingang an ein Logikgatter 42 angelegt, das entweder das 16-Bit-Ausgangssignal des Multiplexers 40 oder sechzehn 0-Bits durchläßt. Nullen werden vom Logikgatter 42 ausgegeben, wenn die Bits der Dateneingabe vom Multiplexer 36 zum direkten Laden (absolutes Laden) in ein Register innerhalb der Rasteroffsetregister 41, X/Y-Koordinatenregister 37 oder Ausschnittkoordinatenregister 39 durchgelassen werden. Ebenfalls in Fig. 3 gezeigt sind Logikschaltungen 44 und 46, welche die folgende Funktion erfüllen. Wenn eine Addition der sechzehn Bits niedriger Ordnung stattfindet, wird das UND-Gatter 44 ausgangsseitig auf einen niedrigen Wert gedrückt, was einen einlaufenden Übertrag einer "0" an den Addierer 31 anlegt. Der auslaufende Übertrag dieser Addition wird in einem Flipflop 46 zwischengespeichert. Das Ausgangssignal des Flipflops 46 wird von dem UND-Gatter 44 zum Übertragseingang des Addierers 31 während der Addition der oberen sechzehn Bits übertragen. Diese Kombination bildet ein 2-Zyklus 32-Bit-Additionsäquivalent zu einer 1-Zyklus 32-Bit- Addition.
Die Operation des Addierers 31, der Rasteroffsetregister 41, der X/Y-Koordinatenregister 37, der Ausschnittkoordinatenregister 39, der Testfenstersteuerung 45 und der Vergleichslogik und Ergebnisspeichereinheit 47 wird von der Ladesteuerungszustandsmaschine 33 und der Vergleichslogikzustandsmaschine 49 koordiniert, welche bewirkt, daß die oben angegebenen Funktionsblöcke derart arbeiten, daß die Daten in einer Pipeline (zeitverschachtelt) fließen. Obwohl nicht alle Steuerleitungen von der Ladesteuerungszustandsmaschine 33 und der Vergleichslogikzustandsmaschine 49 gezeigt sind, werden die Einzelheiten für den Fachmann aus der Beschreibung der Ladesteuerungszustandsmaschine 33 und der Vergleichslogikzustandsmaschine 39 klar.
X/Y-Koordinatenregister 37
Die Koordinatenregister 37 bestehen, wie in Fig. 4 gezeigt ist, aus einer Gruppe von 16-Bit-Registern, welche die (X₀, Y₀)-(X₃, Y₃)-Eck- oder Scheitelpunkte eines zu zeichnenden Objekts speichern. Ein 16-Bit-Register dient zur Speicherung der oberen 16 Bits jeder X-Koordinate und ein anderes 16-Bit-Register wird zur Speicherung der unteren 16 Bits jeder X-Koordinate verwendet. In ähnlicher Weise hält ein anderes 16-Bit-Register die oberen 16 Bits jeder Y-Koordinate, und ein weiteres 16-Bit-Register hält die niedrigeren 16 Bits jeder Y-Koordinate. Diese Register sind in Fig. 4 als X 0 L für die unteren 16 Bits der X₀-Koordinate und X 0 U für die oberen 16 Bits der X₀-Koordinate gezeigt. Register X 1 L-X 3 L und X 1 U-X 3 U stellen die unteren und oberen 16 Bits der X₁-X₃-Koordinaten dar. In ähnlicher Weise speichern Register Y 0 L-Y 3 L und Y 0 U-Y 3 U die unteren und oberen 16 Bits der Y₀-Y₃-Koordinaten des Objekts. Referenzen auf Y 0, Y 0 usw. bedeuten den 32-Bit-Wert, der in dem zugehörigen Registerpaar gespeichert ist, d. h. X 0 U, X 0 L und X 0 U, Y 0 L.
Jedes Registerpaar (C 0 L, Y 0 L)-(X 3 L, Y 3 L) ist mit einem Multiplexerpaar gekoppelt, das zur Auswahl entweder des entsprechenden X- oder Y-Registers dient. So sind beispielsweise die Register X 0 L und Y 0 L mit Multiplexern 61 a und 61 b gekoppelt. Die Ladesteuerungszustandsmaschine 33 erzeugt ein Signal, welches den Multiplexer 61 a zur Auswahl des Eingangs vom Register X 0 L oder Y 0 L veranlaßt, und zwar in Abhängigkeit davon, ob die X-Koordinaten oder die Y-Koordinaten zu bearbeiten sind. Jeder der Multiplexer 32 a und 32 b, 64 a und 64 b arbeitet in der gleichen Weise auf Daten von Registerpaaren (X 1 L, Y 1 L)-(X 3 L, Y 3 L). Die Ausgangssignale von Multiplexern 61 a-64 a laufen zum Multiplexer 65 b, während die Ausgangssignale von Multiplexern 61 b-64 b zur Vergleichslogik und Ergebnisspeicherung 47 laufen.
Die Blöcke 67, 69, 71 und 73, bezeichnet mit "alle Nullen, alle Einsen", sind jeweils logische Schaltungen, welche die oberen 18 Bits ihres zugehörigen X-, Y-Koordinatenpaars für alle Nullen oder alle Einsen prüfen. 16 der Bits kommen aus den Registern (X 0 U, Y 0 U)-(X 3 U, Y 3 U), wobei die siebzehnten und achtzehnten Bits von den beiden Bits höherer Ordnung des korrespondierenden Registers in der Gruppierung (X 0 L, Y 0 L-X 3 L, Y 3 L) kommen. Der siebzehnte und achtzehnte Bit-Eingang ist in Fig. 4 nicht gezeigt, um eine unnötige Überladung der Figur zu vermeiden. Die Registerpaare (X 0 U, Y 0 U)-(X 3 U, Y 3 U) werden in Multiplexer 75-78 eingegeben, welche entweder die X-Koordinate oder die Y-Koordinate in der gleichen Weise wie die Multiplexerpaare 61 a, 61 b-64 a, 64 b auswählen. Die Ausgänge der Multiplexer 75-78 laufen zum Multiplexer 35 a. Einer der 4-Bit-Ausgänge von jedem der logischen Blöcke 67-73 führt jeweils eine "1", wenn die oberen 18 Bits ihres entsprechenden Registers alle Nullen oder alle Einsen sind; anderenfalls ist jedes der vier Bits 0. Die vier 4-Bit-Ausgänge von Blöcken 67-73 werden in die Zustandserzeugungslogik 51 eingegeben.
Ausschnittskoordinatenregister 39
Die in Fig. 5 gezeigten Ausschnittskoordinatenregister enthalten vier Register XSchnittMin, XSchnittMax, YSchnittMin, YSchnittMax und Multiplexer 81 a, 81 b, 83 a und 83 b. Die Werte XSchnittMin, XSchnittMax, YSchnittMin, YSchnittMax, die in den o. g. gleichnamigen Registern gespeichert sind, definieren die linke, rechte, obere und untere Seite des gerade aktiven Fensters. Diese Werte werden von der CPU erzeugt und in den Addierer 31 eingegeben, der diesen Werten 0 hinzufügt, um die Register XSchnittMin, XSchnittMax, YSchnittMin und YSchnittMax zu laden. Die Multiplexer 81 a und 83 a einerseits und die Multiplexer 81 b und 83 b andererseits wählen XSchnittMin und XSchnittMax oder YSchnittMin und YSchnittMax nach Maßgabe von Steuersignalen aus, die von der Ladesteuerungszustandsmaschine 33 und der Vergleichssteuerungszustandsmaschine 49 erzeugt werden. Die Werte aus den Multiplexern 81 a und 83 a werden an den Multiplexer 35 und die Werte aus den Multiplexern 81 b und 83 b an die Vergleichslogik- und Ergebnisspeichereinheit 47 und die Testfenstersteuerung 45 übertragen.
Rasteroffsetregister 41
Die in Fig. 6 gezeigten Rasteroffsetregister 41 weisen zwei Register XRasOff, YRasOff und einen Multiplexer 53 auf. Die Werte von XRasOff und YRasOff, die in den gleichbezeichneten Registern gespeichert sind, definieren jeweils das X- und Y-Offset, das gegebenenfalls zur Dateneingabe zu addieren ist, bevor jede der vier Gruppen von X-, Y-Koordinaten im X/Y-Koordinatenregister 37 gespeichert wird. Diese Werte werden von der CPU zur Speicherung in XRasOff und YRasOff erzeugt. Multiplexer 53 wählt XRasOff oder YRasOff in Abhängigkeit von Steuersignalen aus, die von der Ladesteuerungszustandsmaschine 33 erzeugt worden sind. Der vom Multiplexer 53 ausgewählte Wert wird zum Multiplexer 35 übertragen.
Testfenstersteuerung 45
Die Testfenstersteuerung 45 wird im folgenden unter Bezugnahme auf Fig. 7 beschrieben. Die CPU erzeugt die Werte TestXVal und TestYVal, die um eine vorgegebene Strecke, d. h. Anzahl von Pixeln, über und unter (für TestYVal) und rechts und links (für TestXVal) des gerade aktiven Ausschnittfensters verschoben sind. Mit anderen Worten, für ein vorgegebenes Fenster auf einer Anzeige gibt es ein Δ X und Δ Y, welche ein das echte Ausschnittfenster umgebendes Testfenster definieren. Zweck dieses Testfensters ist es, immer dann, wenn es vorteilhaft ist, den sonst notwendigen Einsatz von Hardware zur Berechnung der Lage von Objekten oder Objektteilen zu vermeiden, welche außerhalb des Ausschnittfensters liegen.
Die 4-Bit-Werte TestXVal und TestYVal sind in 4-Bit-Registern TestX bzw. TestY gespeichert. Ein Multiplexer 91 wählt eines der Register TestX oder TestY in Abhängigkeit davon aus, ob die X-Koordinaten oder die Y-Koordinaten je nach dem von der Ladesteuerungszustandsmaschine 33 erzeugten MUX-Aktivierungssignal bearbeitet werden. Das Ausgangssignal des Multiplexers 91 wird in einen Abwärtszähler (DEC) 93 und in einen Aufwärtszähler (INC) 95 eingegeben. Der Abwärtszähler hat als zweiten Eingang den Wert XSchnittMin oder YSchnittMin, und der Aufwärtszähler 95 hat als zweite Eingabe den Wert XSchnittMax oder YSchnittMax, was wiederum davon abhängt, ob die X- oder Y-Koordinaten entsprechend dem MUX-Aktivierungssignal der Ladesteuerungszustandsmaschine 33 bearbeitet werden. Die vom Abwärtszähler 93 und Aufwärtszähler 95 erzeugten Ausgangssignale werden als XTestMin, YTestMin und XTestMax, YTestMax bezeichnet. Der Abwärtszähler 93 erzeugt die Werte XTestMin und YTestMin durch Subtraktion eines Werts von 2 potenziert mit (TestX-1) bzw. (TestY-1) von XSchnittMin und YSchnittMin. In ähnlicher Weise erzeugt der Aufwärtszähler 91 die Werte XTestMax bzw. YTestMax durch Addition eines Wertes gleich 2 zur Potenz (TestX-1) bzw. (TestY-1) zu dem Wert XSchnittMax bzw. YSchnittMax (d. h. 2(TestX-1) oder 2(TestY-1)).
Ladesteuerungszustandsmaschine 33 und Indexlogik 43
Die Ladesteuerungszustandsmaschine 33 erzeugt die Steuersignale MUX-Aktivierung, Index und Registeraktivierung. MUX-Aktivierung ist ein Satz von Steuersignalen, von denen eins bewirkt, daß die verschiedenen Multiplexer in den Rasteroffsetregistern 41, X/Y-Koordinatenregistern 37 und Ausschnittkoordinatenregistern 39 ihre entsprechenden X- oder Y-Eingänge auswählen. Ein zweites dieser Steuersignale sorgt dafür, daß der Multiplexer 35 einen seiner Eingänge aus den Rasteroffsetregistern 41, X/Y-Koordinatenregistern 37 oder Ausschnittkoordinatenregistern 39 auswählt. Index ist ein einzelnes Steuersignal, welches ein Indexregister in der Indexlogik 43 um 1 zwischen den Werten 0, 1 und 2 weiterschalten und wenn der Wert 3 ist auf 0 rücksetzen läßt (modulo 4). Registeraktivierung ist ein Satz von Steuersignalen, eines für jedes der Register in den Rasteroffsetregistern 41, X/Y-Koordinatenregistern 37 und Ausschnittkoordinatenregistern 39, welches jedes dieser Register den 16-Bit-Wert auf der Leitung vom Addierer 31 laden läßt.
Die Funktionen der Ladesteuerungszustandsmaschine 33 und der Indexlogik 43 werden nachfolgend anhand eines Beispiels genauer beschrieben, wobei die Implementierungseinheiten für den Fachmann erkennbar sind. Wie oben angegeben, sind die zu erzeugenden Bilder definiert, als ob sie aus einem oder mehreren Objekten mit jeweils vier Eckpunktkoordinatenpaaren (X₀, Y₀)-(X₃, Y₃) bestehen. Objekte können Punkte, Linien, Dreiecke, Rechtecke oder beliebige Vierecke sein. Bei Punkten stimmen die vier Scheitelpunktkoordinatenpaare identisch überein. Bei Linien gibt es nur zwei Paare von unterschiedlichen Eck- oder Scheitelpunkten (vertices). Vierseitige Objekte haben vier unterschiedliche Ecken. Ein Rechteck stellt einen Spezialfall eines Vierecks dar, wobei es nur zwei unterschiedliche X-Koordinaten und zwei unterschiedliche Y-Koordinaten gibt (Rechtecke können als ein Eckenpaar mit diagonal gegenüberliegenden Eckpunkten definiert werden). Bei Dreiecken gibt es nur drei Paare von besonderen Scheitel- oder Eckpunkten.
Der Indexwert gibt an, welche Register im Hinblick auf die Art des definierten Objekts zu aktivieren sind. Bei richtiger Operation laufen Y-Werte den X-Werten voraus. Mit Ausnahme von Rechtecken wird das Indexregister inkrementiert, nachdem die X-Werte in die geeigneten Register geladen worden sind. Bei Rechtecken wird das Indexregister nach dem Laden sowohl der X- als auch der Y-Werte inkrementiert. Die nachfolgende Tabelle I gibt für jeden Objekttyp die X-Register an, welche bei jedem Indexregisterwert aktiviert werden. Die nicht gezeigten Y-Register entsprechen den aktivierten X-Registern.
Tabelle I
Indexwert zum Zeitpunkt des Ladens
Es ist ein wichtiger, Tabelle I entnehmbarer Punkt, daß diejenige Koordinate, auf die das Indexregister hinweist, stets geschrieben wird. Die Art des Schreibens (Punkt, Linie, Dreieck usw.) zeigt, wieviele aufeinanderfolgende Register (modulo 4) ebenfalls geschrieben werden. Wenn beispielsweise zu dem Zeitpunkt, bei dem eine Linie X-Schreiben empfangen wird, der Index 2 ist so werden drei Register, nämlich X 2, (X 2 1) modulo 4 und (X 2 2) modulo 4 oder X 2, X 3 und X 0 geschrieben. Ein Rechteck-Schreiben in Y würde nur Y 2 berühren.
Die weiter unten beschriebenen Beispiele 1 bis 3 erläutern die Rolle des Indexregisters bei der Definition eines Objekts. Jede Linie des Beispiels zeigt die beabsichtigte Schreiboperation den von der Ladesteuerungszustandsmaschine zur Steuerung des Ladens der Koordinatenregister benutzten Indexregisterwert, die in den Koordinatenregistern nach dem Schreiben gespeicherten Werte und den Indexwert nach Abschluß des Schreibzyklus an. Die Kurzbezeichnungen für die Schreibbefehle sind PntX oder PntY für ein Punktschreiben, LineX oder LineY für ein Linienschreiben, TriX und TriY für ein Dreieckschreiben, QuadX und QuadY für ein Viereckschreiben und RectX und RectY für eine Rechteck-Schreiboperation. Die von jedem Schreibbefehl identifizierte tatsächliche Schreiboperation ist, wie weiter unten noch beschrieben wird, eine Multitaktzyklusoperation. Bei diesen Beispielen ist jedoch die Ausführungszeit des Befehls ohne Relevanz.
Als Mittel zur Klärung der Interpretation dieser Beispiele wird das erste Beispiel beschrieben. Aus dieser Beschreibung ergibt sich die Interpretation auch für die Beispiele 2 und 3.
Zum Zeitpunkt des Empfangs des PntY (6)-Befehls enthalten alle Koordinatenregister den Wert "0", und der Index ist gleich "1". Der PntY (6)-Befehl besagt, daß ein Punkt des Werts 6 in die Y-Koordinatenregister geladen werden soll. Da der Index eine 1 ist, zeigt Tabelle I, daß der einlaufende Wert (6) in Y 1, Y 2, Y 3 und Y 0 gespeichert werden sollte. Der nächste empfangene Befehl, PntX (3) sagt dann, daß der Punkt 3 in X 1, X 2, X 3 und X 0 geladen werden soll. Wie im Falle nach den geindexten X-Koordinaten-Schreiboperationen, wird der Index am Ende des Schreibzyklus inkrementiert (modulo 4). Der nächste Schreibbefehl ist ein LineY (9). Der Index für dieses Laden ist 2, und Tabelle I zeigt das Laden von 9 in Y 2, Y 3 und Y 0. Der abschließende Schreibbefehl für dieses Beispiel ist LineX (7). Tabelle I zeigt das Laden von 7 in X 2, X 3 und X 0, wonach das Indexregister wieder inkrementiert wird. Der Endzustand der Koordinatenregister identifiziert zwei unterschiedliche Eckpunkte (drei Ecken bei (7, 9) und eine bei (3, 6)). Geometrisch handelt es sich dabei um eine Linie mit den Endpunkten bei (7, 9) und (3, 6), wie beabsichtigt wurde.
Beispiel 1 zur Definition einer Linie (3, 6) (7, 9)
Beispiel 2 zur Definition eines Dreiecks (1, 5) (9, 3) (4, 6)
Beispiel 3 zur Definition eines Rechtecks (0, 7) (8, 7) (8, 1) (0, 1)
Obwohl im Beispiel 1 das Indexregister willkürlich 1 ist, wenn die erste Koordinate empfangen wird, kann das Indexregister in der Indexlogik 43 auf der Basis eines Wertes initiiert werden, der an die Dateneingabeleitung angelegt wird, wenn die CPU dies verlangt. (Zu beachten ist jedoch, daß eine geeignete Operation entsprechend der Erfindung vollständig unabhängig vom Anfangswert des Indexregisters ist, wenn eine Ladefolge eingeleitet wird.) Es sei in diesem Beispiel ferner angenommen, daß XRasOff und YRasOff den Wert 0 enthalten, um die Operationsweise dieser Schaltung durchsichtiger zu machen.
Die Ladesteuerungszustandsmaschine 33 steuert in Verbindung mit der Vergleichslogikzustandsmaschine 49 ein Pipelineschema, das zusätzlich zum Laden der verschiedenen Register entsprechend der vorstehenden Beschreibung auch die für die richtige Operation der Vergleichslogik und Ergebnisspeicherung 47 und der Zustandserzeugungslogik 51 notwendige Auswahl von Registern und entsprechenden Multiplexern steuert. Wenn die Rasteroffsetfähigkeit der Erfindung nicht genutzt werden soll, ist es notwendig, vor der Durchführung der Vergleiche durch die Vergleichslogik und Ergebnisspeicherung 47 die Addition von Nullen zu den für die Speicherung in die X- und Y-Koordinatenregister einlaufenden Daten zu erzwingen.
In diesem Zusammenhang können die MUX-Aktivierungs- und Registeraktivierungssteuersignale, die von der Ladesteuerungszustandsmaschine 33 und der Vergleichslogikzustandsmaschine 49 erzeugt werden, aus der Zeitfolgetabelle gemäß Fig. 9 festgestellt werden, und die nachfolgend angegebene Linie zeigt die Reihenfolge der von dem Koordinateneinspeicherungsabschnitt 15 für jede eingegebene Y-Koordinate durchgeführten Verarbeitung.
  • 1. Empfange Y-Koordinate auf Dateneingabe.
  • 2. Addiere die 16 Bits niedriger Ordnung der empfangenen Y-Koordinate zu:
    a) YRasOff (niedrigeren 16 Bits) oder
    b) den niedrigeren 16 Bits der von (Index-1) bezeichneten Y 0 L-Y 3 L oder
    c) Nullen.
  • 3. Addiere die 16 Bits höherer Ordnung der empfangenen Y-Koordinate zu:
    a) YRasOff (Vorzeichen erweitert obere 16 Bits) oder
    b) den 16 Bits höherer Ordnung der von (Index-1) bezeichneten Y 0 H-Y 3 H oder
    c) Nullen
    und vergleiche das Ergebnis von Schritt 2 mit den anderen Y-Koordinaten.
  • 4. Vergleiche das Ergebnis von Schritt 2 mit YSchnittMin, YTestMin, YSchnittMax und YTestMax und prüfe die oberen 18 Bits des Ergebnisses von Schritten 2 und 3 für alle Einsen und alle Nullen.
In den obigen Schritten 2 und 3 werden die Wahloperationen a), b) oder c) wie folgt durchgeführt. Für nicht-relative Schreiboperationen in ein indiziertes Register (PNT, LINE, TRI, QUAD, RECT) wird Wahl a) getroffen. Bei einer relativen Schreiboperation in ein indiziertes Register (RELPNT, RELLINE, RELTRI, RELQUAD, RELRECT) wird b) ausgewählt. Alle anderen Schreiboperationen wählen c). Das Laden einer X-Koordinate folgt dem gleichen Muster.
Unter Berücksichtigung der oben angegebenen Beschränkungen und Definitionen und unter der Annahme, daß der Indexregisterwert in der Indexlogik 43 "01" und für die Register (X 0, Y 0)-(X 3, Y 3) entsprechend obiger Beschreibung unter Bezugnahme auf Fig. 4 alle 0 sind, wird die folgende Ereignissequenz zum Laden der Register abgewickelt, um eine Linie mit Endpunkten zu definieren, deren X-, Y-Koordinaten (3, 6) (7, 9) sind, wie Beispiel 1.
Bei Taktzyklus 0 setzt der Befehl Schreibe PntY (6) den Wert 6 auf Dateneingabe und bewirkt, daß die Registeradreßeingabe zur Ladesteuerungszustandsmaschine 33 einen Wert erhält, der angibt, daß die einlaufenden Daten einen Y-Punkt darstellen. Zum Taktzyklus 1 (Bezugnahme auf Fig. 3) wird Multiplexer 36 angewiesen, die 16 Bits niedriger Ordnung auf Dateneingabe auszuwählen und die Multiplexer 35 (d. h. Multiplexer 35 a und 35 b) und 40 und das Logikgatter 42 werden angewiesen, die unteren 16 Bits von YRasOff durchzulassen. Daher addiert der Addierer 31 während des Taktzyklus 1 die Ausgangssignale vom Multiplexer 36 und logischen Gatter 42 und legt das Additionsergebnis auf seinen Ausgang. Am Ende des Taktzyklus 1 sind die Register Y 0 L-Y 3 L aktiviert und mit dem Wert aus dem Addierer 31 geladen, d. h. 6 stellt die Bits niedriger Ordnung des Werts 6 dar, der an "Dateneingabe" anstand. Im Taktzyklus 2 wird Multiplexer 36 angewiesen, die 16 Bits hoher Ordnung auf Dateneingabe auszuwählen, während die Multiplexer 35 und 40 und das Logikgatter 42 instruiert werden, die vorzeichenerweiterten oberen 16 Bits von YRasOff durchzulassen. Daher addiert der Addierer 31 während des Taktzyklus 2 die Ausgangssignale vom Multiplexer 36 und logischen Gatter 42 und legt das Ergebnis an seinen Ausgang. Am Ende des Taktzyklus 2 sind Register Y 0 H-Y 3 H aktiviert und mit dem Wert vom Ausgang des Addierers 31 geladen. Während des Zyklus 3 legt der Befehl Schreibe PntX (3) den Wert 3 auf Dateneingabe und bewirkt, daß der Registeradresseneingang die Ladesteuerungszustandsmaschine 33 auf einen Wert lädt, der angibt, daß die einlaufenden Daten einen X-Punkt darstellen. Ebenfalls während des Taktzyklus 3 wird Multiplexer 36 angewiesen, die 16 Bits niedriger Ordnung auf Dateneingabe auszuwählen, und die Multiplexer 35 und 40 und das Logikgatter 42 werden instruiert, die unteren 16 Bits von XRasOff durchzulassen. Während des Taktzyklus 3 addiert der Addierer 31 die Ausgangssignale vom Multiplexer 36 und dem Logikgatter 42 und gibt das Ergebnis an seinen Ausgang. Am Ende des Taktzyklus 3 werden die Register X 0 L-X 3 L aktiviert und mit dem Wert am Ausgang des Addierers 31 geladen, d. h. 3, was die Bits niedriger Ordnung des Werts auf Dateneingabe darstellt. Beim Taktzyklus 4 wird der Multiplexer 36 angewiesen, die 16 Bits höherer Ordnung auf Dateneingabe auszuwählen, und die Multiplexer 35 und 40 und das Logikgatter 42 werden angewiesen, die vorzeichenerweiterten oberen 16 Bits von XRasOff durchzulassen. Beim Taktzyklus 4 addiert der Addierer 31 die Ausgangssignale vom Multiplexer 36 und Logikgatter 42 und legt das Ergebnis an seinen Ausgang. Während des Taktzyklus 4 sind die Register X 0 H-X 3 H aktiviert und mit dem Wert vom Ausgang des Addierers 31 geladen, und das Indexregister wird weitergeschaltet. Während des Taktzyklus 5 gibt der Befehl Schreibe LineY (9) den Wert 9 auf Dateneingabe und bewirkt, daß die Registeradreßeingabe an die Ladesteuerzustandsmaschine 33 einen Wert enthält, der angibt, daß die einlaufenden Daten eine Y-Linie darstellen. Beim Taktzyklus 5 wird der Multiplexer 36 angewiesen, die 16 Bits niedriger Ordnung auf Dateneingabe auszuwählen, und Multiplexer 35 und 40 und Logikgatter 42 werden angewiesen, die 16 niedrigen Bits von YRasOff durchzulassen. Während des Taktzyklus 5 addiert Addierer 31 die Ausgangssignale vom Multiplexer 36 und Logikgatter 42 und legt das Ergebnis an seinen Ausgang. Am Ende des Taktzyklus 5 sind die Register Y 2 L, Y 3 L und Y 0 L aktiviert und mit dem Ausgangswert des Addierers 31 geladen, d. h. mit 9, was die Bits niedriger Ordnung des Werts 9 an der Dateneingabe darstellt. Beim Taktzyklus 6 wird der Multiplexer 36 angewiesen, die 16 Bits hoher Ordnung an Dateneingabe auszuwählen, und die Multiplexer 35 und 40 und das Logikgatter 42 werden instruiert, die vorzeichenerweiterten oberen 16 Bits von YRasOff durchzulassen. Im Taktzyklus 6 addiert der Addierer 31 die Ausgangssignale vom Multiplexer 36 und Logikgatter 42 und gibt das Ergebnis an seinen Ausgang. Während des Taktzyklus 6 sind die Register Y 2 H, Y 3 H und Y 0 H aktiviert und mit dem Wert vom Ausgang des Addierers 31 geladen. Im Taktzyklus 7 legt der Befehl Schreibe LineX (7) den Wert 7 an Dateneingabe und bewirkt, daß der Registeradreßeingang zur Ladesteuerzustandsmaschine 33 einen Wert enthält, der angibt, daß die einlaufenden Daten eine X-Linie darstellen. In gleicher Weise werden Register X 2 L, X 3 L und X 0 L eventuell aktiviert, um den Wert 7 zu laden, wonach das Indexregister von 2 auf 3 in der zuvor erläuterten Weise inkrementiert wird. Das Laden der X/Y-Koordinatenregister für andere Objekte folgt dem oben beschriebenen gleichen Pipelineschema. Beispiele für Dreiecke und Vierecke sind in den Beispielen 2 und 3 oben angegeben. In ähnlicher Weise werden auch viereckige bzw. vierseitige Objekte geladen.
Rasteroffsetregister 41 und Ausschnittkoordinatenregister 39 werden in ähnlicher Weise wie die X/Y-Koordinatenregister 37, d. h. in der oben beschriebenen Weise, geladen. Logikgatter 42 erhält jedoch den Befehl, Nullen für jeden Additionszyklus auszugeben (d. h. absolutes Laden).
Die Erfindung führt durch Verwendung des Indexregisters in der Indexlogik 43 auch eine relative Adressierung durch, die einen wirksamen Mechanismus zum Anzeigen von Objektduplikaten liefert. Die relative Adressierung läßt sich am besten anhand eines Beispiels wie folgt beschreiben: Die drei Eckpunkte eines Dreiecks können definiert werden als (X₀, Y₀), (X₁, Y₁) und (X₂, Y₂). Um dieses Objekt fünfzigmal an unterschiedlichen Stellen auf dem Display zu duplizieren, wäre es notwendig, 150 Paare von X-, Y-Koordinaten zu speichern. Bei Verwendung der relativen Adressierung wird ein Scheitel- oder Eckpunkt als Ursprung (X₀, Y₀) definiert, und die zweiten und dritten Ecken werden als Offsets des vorhergehenden Eckpunkts, d. h. Δ X₀₁, Δ Y₀₁ und Δ X₂₃, Δ Y₂₃, definiert. Um das Objekt fünfzigmal zu duplizieren, braucht nichts weiter gespeichert zu werden als die beiden Offsetpaare und ein neues X₀, Y₀ für jedes Duplikat (d. h. fünfzig Objektursprünge plus zwei Offsetpaare insgesamt).
Dies kann erfindungsgemäß dadurch geschehen, daß man zuerst das Ursprungskoordinatenpaar für den Ursprungseckpunkt in einem der Registerpaare der X/Y-Koordinatenregister 37 speichert, wobei ein Indexladestil (d. h. PntY, PntX) verwendet wird. Die beiden Offset-Eckpunkte werden nachfolgend relativ zu dem vom aktuellen Wert des Indexregisters bezeichneten Eckpunkt gespeichert. Dies geschieht durch Auswahl des von (Index 1) bezeichneten Eckpunkts als Summand zur Dateneingabe, und zwar vor dem Registerladen. Der von (Index 1) bezeichnete Eckpunkt ist garantiert bei der vorhergehenden indizierten Schreiboperation geladen worden, und zwar unabhängig von der Art der Schreiboperation (PNT, LINE usw.) und ist daher derjenige Eckpunkt, von dem die relative Offsetoperation ausgeht.
Vergleichslogik und Ergebnisspeichereinheit 47
Die Vergleichs- und Ergebnisspeicherlogik 47 wird im folgenden unter Bezugnahme auf die Fig. 7 und 8 beschrieben. Die Vergleichs- und Ergebnisspeicherlogik 47 enthält Multiplexer 101, 103, 105, 107 und 109 (siehe Fig. 7) und Komparatoren 121 . . . 124, Multiplexer 131-146 und Register R 1-R 44 (siehe Fig. 8).
Register R 1-R 44 speichern die Ergebnisse der Operation der Komparatoren 121-124, wie in Tabelle II gezeigt ist:
R 1 X 0 : XClipMin
R 23 Y 0 : YClipMin
R 2 X 0 : XTestMin R 24 Y 0 : YTestMin
R 3 X 0 : XClipMax R 25 Y 0 : YClipMax
R 4 X 0 : XTestMax R 26 Y 0 : YTestMax
R 5 X 1 : XClipMin R 27 Y 1 : YClipMin
R 6 X 1 : XTestMin R 28 Y 1 : YTestMin
R 7 X 1 : XSchnitMax R 29 Y 1 : YClipMax
R 8 X 1 : XTestMax R 30 Y 1 : YTestMax
R 9 X 2 : XClipMin R 31 Y 2 : YClipMin
R 10 X 2 : XTestMin R 32 Y 2 : YTestMin
R 11 X 2 : XClipMax R 33 Y 2 : YClipMax
R 12 X 2 : XTestMax R 34 Y 2 : YTestMax
R 13 X 3 : XClipMin R 35 Y 3 : YClipMin
R 14 X 3 : XTestMin R 36 Y 3 : YTestMin
R 15 X 3 : XClipMax R 37 Y 3 : YClipMax
R 16 X 3 : XTestMax R 38 Y 3 : YTestMax
R 17 X 0 : X 1 R 39 Y 0 : Y 1
R 18 X 0 : X 2 R 40 Y 0 : Y 2
R 19 X 0 : X 3 R 41 Y 0 : Y 3
R 20 X 1 : X 2 R 42 Y 1 : Y 2
R 21 X 1 : X 3 R 43 Y 1 : Y 3
R 22 X 2 : X 3 R 44 Y 2 : Y 3
Ausgenommen für Vergleiche mit XClipMin/Max, YClipMin/Max, XTestMin/Max und XTestMin/Max, welche ein 1-Bit-Ergebnis speichern, speichert das angegebene Register in Tabelle II ein 2-Bit-Ergebnis eines Vergleichs zwischen den beiden angegebenen Werten. Wenn der Wert auf der linken Seite des Doppelpunkts größer als der Wert auf der rechten Seite des Doppelpunkts ist, so ist der im entsprechenden Register gespeicherte Binärwert "10"; wenn der Wert auf der linken Seite des Doppelpunkts kleiner ist als der Wert auf der rechten Seite des Doppelpunkts, so ist der im entsprechenden Register gespeicherte Binärwert "01"; wenn die beiden Werte gleich sind, so ist der im entsprechenden Register gespeicherte Binärwert "00". Für XClipMin, YClipMin, XTestMin und YTestMin wird eine "1" gespeichert, wenn der verglichene Koordinatenwert kleiner ist, anderenfalls wird eine "0" gespeichert. Für XClipMax und YClipMax, XTestMax, YTestMax wird eine 1 gespeichert, wenn der verglichene Wert größer ist, und anderenfalls eine "0".
Die Eingangssignale der Multiplexer 101, 103, 105, 107 und 109 kommen von den X/Y-Koordinatenregistern 37, nämlich X 0 L, Y 0 L-X 3 L, Y 3 L, Ausschnittkoordinatenregistern 39, nämlich XClipMin, YClipMin und XClipMax, YClipMax und von der Testfenstersteuerung 45, nämlich XTestMin, YTestMin, XTestMax und YTestMax. Selbstverständlich sind zu jedem Zeitpunkt die Eingangssignale der Multiplexer 101, 103, 105, 107 und 109 in der weiter oben beschriebenen Weise entweder X-Werte oder Y-Werte, und zwar in Abhängigkeit von einem MUX-Aktivierungssignal, das von der Vergleichssteuerungszustandsmaschine 49 erzeugt wird.
Der Komparator 121 vergleicht das Ausgangssignal des Multiplexers 101 mit dem Ausgangssignal des Multiplexers 109. In ähnlicher Weise vergleichen die Komparatoren 122 bis 124 die Ausgangssignale der Multiplexer 103, 105 und 107 einerseits mit dem Ausgangssignal des Multiplexers 109 andererseits. Die Ausgangssignale der Komparatoren 121 bis 124 sind Eingangssignale der Multiplexer 131 bis 146, welche die entsprechenden Daten an die Register R 1-R 44 richten, welche wie folgt geladen werden:
Das Ausgangssignal des Komparators 121 wird an die Multiplexer 131-135, 139 und 143 angelegt, welche zum Laden der Register R 1, R 2, R 3, R 4, R 5, R 9, R 13, R 17, R 18 und R 19 für X-Werte und der Register R 23, R 24, R 25, R 26, R 27, R 31, R 35, R 39, R 40 und R 41 für Y-Werte verwendet werden, wie in Fig. 8 und in Tabelle III gezeigt ist. In Tabelle III beziehen sich A, B, C und D auf die Komparatoren 121, 122, 123 bzw. 124.
Das Ausgangssignal des Komparators 122 wird an die Multiplexer 132, 135 . . . 138, 140 und 144 angelegt, die zum Laden der Register R 2, R 5 . . . R 8, R 10, R 14, R 17, R 20 und R 21 für X-Werte und der Register R 24, R 27 . . . R 30, R 32, R 36, R 39, R 42 und R 43 für Y-Werte dienen, wie in Fig. 8 und Tabelle III gezeigt ist.
Das Ausgangssignal vom Komparator 123 wird an die Multiplexer 133, 137, 139, 140, 142 und 145 angelegt, die zum Laden der Register R 3, R 7, R 9, R 10, R 12, R 15, R 18, R 20 und R 22 für X-Werte und der Register R 25, R 29, R 31, R 32, R 34, R 37, R 40, R 42 und R 44 für Y-Werte dienen (Fig. 8 und Tabelle III).
Das Ausgangssignal des Komparators 124 wird an die Multiplexer 134, 138, 142, 143, 144, 145 und 146 angelegt, die zum Laden der Register R 4, R 8, R 12 . . . R 16, R 19, R 21 und R 22 für X-Werte und der Register R 26, R 30, R 34 . . . R 38, R 43 und R 44 für Y-Werte dienen (Fig. 8 und Tabelle III).
Die durchgeführten und gespeicherten Vergleiche sind diejenigen, die von dem Koordinatensequentialisierungsblock 17 und dem Funktionsadressierblock 19 benötigt werden, um unterstützte Operationen (DRAW, auch bekannt als Viereckumsetzung, oder BLIT) geeignet auszuführen und die richtige Beschneidung durchzuführen.
Vergleichssteuerungszustandsmaschine 49
Die Vergleichssteuerungszustandsmaschine 49 ist eine Logik, welche die verschiedenen Komparatoren, Multiplexer und Register in der Vergleichs- und Ergebnisspeicherlogik 47 aktiviert. Eine Wahrheitstabelle für absolutes Laden der Koordinaten- und Ausschnittregister durch die Vergleichssteuerungszustandsmaschine 49 ist in Tabelle III für die Taktzyklen 0 und 1 gezeigt, wobei die Komparatoren 121-124 als A, B, C bzw. D bezeichnet sind. Tabelle III gibt das Ausgangssignal jedes Komparators 121-124 für jedes der Eingangssignale X 0 L, X 3 L, XClipMin, XClipMax, XTestMin und XTestMax an. Wenn auch Fig. 8 zeigt, daß die Ausgangssignale der Multiplexer 101, 103, 105 und 107 in eine Seite der Komparatoren 121-124 eingegeben werden, wobei das Ausgangssignal des Komparators 109 in die andere Seite eingegeben wird, ist es zum Zwecke der Übereinstimmung notwendig, die Vergleiche von X 0 L bis X 1 L, X 1 L bis X 2 L und X 2 L bis X 30 L usw. zu speichern und nicht in der anderen Richtung (z. B. X 1 L zu X 0 L). Aus diesem Grunde werden die Ausgangssignale aus den Komparatoren 121-124 umgekehrt, wenn die mit "Umkehr" bezeichnete Spalte "Ja" ist. Dies wird von dem rechten Eingang der Multiplexer 131-146 bewirkt. Die Ausgangssignale von den angegebenen Komparatoren 121-124 werden direkt in die linke Seite des angegebenen Multiplexers 131-146 eingegeben. Der rechte Multiplexereingang erhält das 2-Bit- Ausgangssignal des angegebenen Komparators in umgekehrter Bit-Reihenfolge. Daher wird die mit "Umkehr" bezeichnete Spalte die Wahrheitstabelle für die MUX-Auswahlleitungen der Multiplexer 131-146 für absolute Koordinatenladungen.
Tabelle III
Die Ergebnisse der Tabelle III werden in ähnlicher Weise für Y 0 L-Y 3 L, YClipMin, YClipMax, YTestMin und YTestMax wiederholt. Fig. 9 zeigt die relativen Zeitgaben für die Signale auf Dateneingabe, das Registerladen, durchgeführt von den Rasteroffsetregistern 41, X/Y-Koordinatenregistern 37, Ausschnittkoordinatenregistern 39 und Vergleichslogik und Ergebnisspeicherung 47.
Die Vergleichssteuerungszustandsmaschine unterstützt das Index-Ladeschema, wie oben angegeben, wobei sowohl der einem Schreibzyklus zugeordnete Indexregisterwert als auch Tabelle IV benutzt werden. Da das von dem Indexregisterwert bezeichnete Register stets eingeschrieben wird, und zwar unabhängig von der Art der indizierten Schreiboperation, werden die entsprechenden MUX-Aktivierungen für die Multiplexer 101, 103, 105 und 107 von der Vergleichssteuerungszustandsmaschine ausgewählt, unter der Annahme, daß eine Einzelregisterschreiboperation für diese Koordinate durchgeführt wird. Wenn beispielsweise eine Rechteckschreiboperation in X mit einem Index von 3 empfangen wird, so arbeitet die Vergleichslogik so, als wenn eine ausdrückliche Schreiboperation für X 3 empfangen worden wäre, und führt Vergleiche X 3 L gegen (X 0 L, X 1 L, X 2 L, XClipMin, XClipMax, XTestMin, XTestMax) in der erforderlichen Weise durch. Der Unterschied zwischen einem absoluten Laden eines Registers und einem Indexladen (oder relativen Indexladen) besteht darin, daß im Indexfall mehr als ein Koordinatenspeicherregister in 47 aktiviert werden kann, um die Vergleichsergebnisse zu empfangen, und die Multiplexerauswahlen werden für die Multiplexer 131-146 entsprechend Tabelle IV anstelle von Tabelle III getroffen.
Bei dem vorhergehenden Beispiel einer Rechteck-X-Schreiboperation mit einem Index von 3 werden die Vergleichsregister (vgl. Tabelle II oder Fig. 8) R 1-R 3, R 13-R 16, R 17-R 19 und R 21-R 22 geschrieben. Die folgenden Registerpaare speichern die gleichen Vergleichsergebnisse: (R 17, R 21), (R 18, R 22), R 1; R 13), (R 2, R 14), (R 3, 15) und (R 4, 16).
Tabelle IV
Zustandserzeugungslogik 51
Die Zustandserzeugungslogik 51 erzeugt die Steuersignale HW/SW, Up/R-zu-L und HID/VIS. HW/SW ist ein 2-Bit-Signal, das angibt, ob die Operation mit Hardware nach der Erfindung oder mit Software durchgeführt wird. Up/R-zu-L ist ein 2-Bit-Signal, das angibt, ob die Operation von oben nach unten, von unten nach oben, von rechts nach links oder links nach rechts verarbeitet werden soll. HID/VIS ist ein 2-Bit-Signal, das angibt, ob das zu zeichnende Objekt versteckt, d. h. hinter dem aktiven Ausschnittfenster, oder sichtbar ist. Um diese Signale zu erzeugen, erhält die Zustandserzeugungslogik 51 als Eingangssignale die Ausgänge der Register R 1-R 22 für X-Koordinaten, Register R 23-R 44 für Y-Koordinaten und die vier 4-Bit-Signale, welche anzeigen, daß die oberen 18 Bits alles Einsen und alles Nullen von X/Y-Koordinatenregistern 37 sind. Die Art, in der die Zustandserzeugungslogik die o. g. Steuersignale erzeugt, wird unter Bezugnahme auf Fig. 10 bis 14 erläutert, in denen Wahrheitstabellen für die von der Zustandserzeugungslogik 51 durchgeführten logischen Operationen gezeigt sind. Die Logikschaltung, die zum Implementieren der Wahrheitstabellen gemäß Fig. 10-14 notwendig ist, liegt im fachmännischen Wissen.
Fig. 10 ist eine Wahrheitstabelle, welche die Vergleichsergebnisse für die X 0-Koordinate (X 0 L und X 0 H) benutzt. Die Wahrheitstabellen, welche Vergleichsergebnisse für die X 1-X 3 und Y 0-Y 3-Koordinaten benutzen, substituieren diese Koordinaten und verwenden YClipMin, YClipMax, YTestMin und YTestMax anstelle von XClipMin, XClipMax, XTestMin und XTestMax für die Y-Koordinaten. Die linke Seite der Tabelle beinhaltet die Eingangssignale und die rechte Seite die Ausgangssignale. In der Tabelle bedeutet das Symbol "-" ein "unbeachtlich"; 0 und !0 bedeutet, daß die Bus-Bitwerte alle Einsen oder nicht alles Einsen sind (aus den X/Y-Koordinatenregistern 37); und Z und !Z bedeuten, daß die Bus-Bitwerte alles Nullen oder nicht alles Nullen sind (aus X/Y-Koordinatenregistern 37). "X 0 in 2¹⁴" bedeutet, daß die 32-Bit-X 0-Koordinate in 15 Bits darstellbar ist; "X 0 in Ausschnitt" bedeutet, daß X 0 auf oder innerhalb der Grenzen des Ausschnittfensters X ist; "X 0 in Test" bedeutet, daß X 0 auf oder innerhalb der Grenzen des Testfensters X ist. Die Ausgänge "X 0 < XClipMin", "X 0 < XTestMin", "X 0 < XClipMax" und "X 0 < XTestMax" werden rückgekoppelt und dienen als Eingangssignale. Um die Ausgangssignale zu bilden, werden die Eingangssignale auf einer Horizontallinie miteinander UND-verknüpft und die Ausgangssignale in einer Spalte ODER-verknüpft. Bezugnehmen beispielsweise auf die ersten beiden Zeilen in Fig. 10: Wenn X 0(31) (d. h. sein Vorzeichenbit) 0 ist, so sind UND X 0(30 : 14) (d. h. seine Bits höherer Ordnung 14-30) alles Nullen, ODER X 0(31) ist 1, UND X 0(30 : 14) sind alles Einsen, dann liegt X 0 in 2¹⁴. In ähnlicher Weise und unter Bezugnahme auf die letzte Zeile in Fig. 10, wenn X 0 < XTestMin ist 0 (d. h. unwahr) UND X 0 < XTestMax ist 0, so ist X 0 innerhalb des Testfensters.
Fig. 11a und 11b sind Wahrheitstabellen unter Verwendung von Vergleichen zwischen jeder der vier X-Eckkoordinaten und jeder der vier Y-Eckkoordinaten. Wie im Falle der Fig. 10 werden die Werte auf der horizontalen Eingangslinie UND-verknüpft mit dem Ergebnis einer logischen 1 (wahr) oder 0 (unwahr), und die angegebenen Ausgangssignale (ausgenommen oben, unten, rechts und links) werden durch ODER-Verknüpfung ihrer entsprechenden Spalten gebildet. Die Ausgänge oben, unten, rechts und links, die als 0, 1, 2 oder 3 gezeigt sind, werden wie folgt interpretiert: Der Wert 0, 1, 2 oder 3 gibt an, welche Koordinate von X 0-X 3 oder Y 0-Y 3 die höchste (oben), die niedrigste (unten), die am weitestens rechts (rechts) und links (links) gelegene ist. Die Symbole <,<, E, L und G auf der Eingangsseite geben an, daß das angegebene Vergleichsergebnis kleiner als, größer als, gleich, kleiner als oder gleich und größer als oder gleich ist.
Obwohl die Bedeutung der Ausgangssignale durch die Tabelle definiert ist, gibt das folgende in Worten an, was jedes angegebene Ausgangssignal bedeutet:
unzulässig - bedeutet, daß dann, wenn eine Horizontallinie durch das von den vier Eck-Koordinatenpaaren definierte Objekt gezogen würde, zwei oder mehr Ecken gekreuzt würden. Ein Objekt, das ein gebogenes Band bildet, ist ein Beispiel für ein Objekt, das unzulässig als wahr erscheinen lassen würde.
horiz - bedeutet, daß alle vier Eckpunkte denselben Y-Wert haben.
vert - bedeutet, daß alle vier Eckpunkte denselben X-Wert haben.
recht - bedeutet, daß das von den vier Koordinaten definierte Objekt ein Rechteck bildet.
Linie - bedeutet, daß das von den vier Koordinaten definierte Objekt eine Linie bildet.
EQ-01 - bedeutet, daß der Eckpunkt 0 gleich dem Eckpunkt 1 ist (definiert denselben Punkt).
EQ-12 - bedeutet, daß Eckpunkt 1 gleich Eckpunkt 2 ist (definiert denselben Punkt).
EQ-23 - bedeutet, daß Eckpunkt 2 gleich Eckpunkt 3 ist (definiert denselben Punkt).
EQ-30 - bedeutet, daß Eckpunkt 3 gleich Eckpunkt 0 ist (definiert denselben Punkt).
Fig. 12a-12d definieren eine Wahrheitstabelle, welche Vergleiche zwischen den vier X- und den vier Y-Eckkoordinaten und den Ausschnittgrenzen benutzt. Die Eingänge oben, unten, rechts und links sind diejenigen der Wahrheitstabelle gemäß Fig. 11a, 11b. Wenn die Ausgangssignale oben sichtbar, unten sichtbar, rechts sichtbar und links sichtbar 1 (d. h. wahr) sind, so liegt das von den vier Koordinatenpaaren definierte Objekt innerhalb des Ausschnittfensters. Wenn der Umgebungsausschnitt 1 ist, so liegt das Objekt außerhalb, umgibt jedoch das Ausschnittfenster. Versteckt gilt nur für Vierecke und zeigt an, daß alle vier Eckpunkte recht, links, oberhalb oder unterhalb des Ausschnittfensters liegen. Versteckt-01 (bezieht sich auf BLIT-SRC-Rechteck) und versteckt-23 (bezieht sich auf BLIT-DEST-Rechteck) haben eine ähnliche Bedeutung für BLITs.
Fig. 13 definiert eine Wahrheitstabelle, die Vergleiche zwischen den vier X- und den vier Y-Eckkoordinaten und den Testfenstergrenzen benutzt. Die Ausgänge "oben innerhalb Test" und "unten innerhalb Test" bedeuten, wenn wahr, daß der Rand des Objekts innerhalb der oberen oder unteren Grenzen des Testfensters liegt.
Fig. 14 definiert eine Wahrheitstabelle, welche die Richtung zeigt, in der Objekte gezeichnet oder BLITs durchgeführt werden sollen, um Seitendurchgänge und Verarbeitungsoperationen an abgeschnittenen Pixeln durch Erzeugung der Signale blit r-zu-1, blit auf, zeichne r-zu-1 und zeichne auf zu minimieren. Diese Signale enthalten die Signalzeichenrichtung gemäß Fig. 2.
Aufgrund der Wahrheitstabellen gemäß Fig. 10-14 erzeugt die Zustandserzeugungslogik 51 die Signale HW, SW, HID und VIS (Fig. 2) wie folgt:
Für viereckige Objekte -
HW = verstecktes ODER
Umgebungsausschnitt ODER
(NICHT versteckt UND
NICHT unzulässig UND
alle Ecken liegen innerhalb 2¹⁴ UND
(alle Ecken liegen innerhalb Test) ODER
(Linie UND wenigstens ein Endpunkt liegt innerhalb Test) ODER
(X 0-X 3 liegen innerhalb Test UND der obere oder untere Eckpunkt liegt innerhalb Test) ODER
recht).
SW = NICHT HW.
HID = versteckt.
VIS = NICHT versteckt.
Für BLITs -
HW = verst-23 ODER
(verst-01 UND BLIT SRC-CHK=10) ODER
(NICHT verst-01 UND
BLIT SRC-CHK=10 UND
NICHT verst-23 UND
Das Quellenrechteck liegt innerhalb 2¹⁴ UND der
Bestimmungswinkel liegt innerhalb 2¹⁴) ODER
(BLIT-SRC-CHK=01 UND
NICHT verst-23 UND
Das Quellenrechteck liegt innerhalb 2¹⁴ UND
das Bestimmungsreckteck liegt innerhalb 2¹⁴),
wobei BLIT-SRC-CHK ein 2-Bit-Wert aus der CPU ist, der auf "10" gesetzt ist, wenn die Beziehung des Quellenrechtecks zum Ausschnittfenster in Betracht gezogen werden soll. Dies ist notwendig, da die verschiedenen Softwareausführungen, denen die vorliegende Erfindung zugeordnet werden soll, bezüglich ihrer Behandlung des SRC-Rechtecks und der Ausschnittgrenzen inkonsistent sind. Aus diesem Grunde hat das bevorzugte Ausführungsbeispiel BLIT SRC-Rechteck-Ausschnittprüfung als Software- selektierbare Option belassen (BLIT-SRC-CHK=01 entaktiviert SRC-Ausschnittprüfung, BLIT-SRC-CHK=10 aktiviert SRC-Ausschnittprüfung).
SW = NICHT HW.
HID = verst-23.
VIS = NICHT verst-23.
Wie aus der HW-Gleichung für viereckige Objekte erkennbar ist, werden gewisse Optimierungen angewendet, um die Effektivität der Testfensterprüfungen bei dem beschriebenen Beispiel des graphischen Untersystems zu erhöhen.
Wie die HW-Gleichung für viereckige Objekte berücksichtigt, wurde die Verwendung von Testfensterprüfungen bei dem beschriebenen Beispiel des graphischen Untersystems optimiert, um die Möglichkeiten des Untersystems maximal auszunutzen.
Die Koordinatensequentialisierungslogik 17 und die funktionelle Adressierlogik 19 haben die Fähigkeit, gewisse Klassen von geschnittenen Objekten so zu behandeln, daß keine versteckten (d. h. unsichtbaren oder abgeschnittenen) Pixel verarbeitet zu werden brauchen. In diesen Fällen braucht die Testfensteroptimierung nicht benutzt zu werden, und daher sind die HW- gegen SW-Entscheidungen über diese Objekte gesperrt. In anderen Fällen kann das Objekt gewisse Charakteristiken haben, welche es der Hardware ermöglichen, die Objekte zu verarbeiten, obwohl einige Eckpunkte außerhalb des Testfensters liegen.
Beispiele von Objekten, welche in diese Kategorien fallen, werden nachfolgend zusammen mit der Art angegeben, in der das Graphikuntersystem sie handhabt.
  • 1) Objekte, welche das Ausschnittfenster umgeben - die Eckpunkte dieser Objekte können vor der Verarbeitung direkt durch die Ausschnittgrenzen ersetzt werden. Dies findet in der Koordinatensequentialisierungslogik 17 statt.
  • 2) Linien mit einem Eckpunkt innerhalb des Testfensters und einem Eckpunkt außerhalb des Testfensters - die Verarbeitung dieser Linien ist richtungsmäßig beschränkt darauf, daß von dem innerhalb des Testfensters gelegenen 01668 00070 552 001000280000000200012000285910155700040 0002004000215 00004 01549 Eckpunkt ausgegangen und in Richtung des anderen Eckpunkts fortgefahren werden muß. Wenn der sichtbare Teil der Linie verarbeitet worden ist, wird die Verarbeitungsoperation beendet, ohne daß außerhalb des Testfensters gelegene Pixel verarbeitet werden müssen. Die Beschränkung hinsichtlich der Verarbeitungsrichtung wird bestimmt durch die Zustandserzeugungslogik 51. Das Ende der Verarbeitung nach Durchlaufen des sichtbaren Abschnitts der Linie geschieht durch die funktionelle Adressierlogik 19.
  • 3) Beliebige Vierecke, deren Eckpunkte alle innerhalb des Testfensters in der X-Richtung und deren obere oder untere Eckpunkte innerhalb des Testfensters in der Y-Richtung liegen - die Verarbeitung dieser Objekte ist richtungsbeschränkt mit Beginn oben oder unten, und zwar in Abhängigkeit davon, welche Seite des Objekts innerhalb des Testfensters liegt. Die Verarbeitung des Objekts wird dann in Richtung der anderen Seite (Ober- oder Unterseite), d. h. in Richtung des außerhalb des Testfensters gelegenen Eckpunkts fortgesetzt. Wenn der oder die sichtbaren Bereiche des Objekts bearbeitet worden sind, wird die Bearbeitung abgebrochen, bevor die Pixel außerhalb des Testfensters bearbeitet worden sind. Die Verarbeitungsrichtungsbeschränkung wird bestimmt durch die Zustandserzeugungslogik 51. Die Beendigung der Verarbeitung nach Durchlaufen des sichtbaren Bereichs des Objekts wird durch die funktionelle Adressierlogik 19 bewirkt.

Claims (1)

  1. Einrichtung zur Erzeugung von Vergleichen zwischen Paaren von X- und Y-Koordinaten eines von einem graphischen Untersystem anzuzeigenden Objekts, das durch ein zu zeichnendes Viereck oder ein zu bewegendes Blockbild gebildet ist, wobei die Einrichtung ein Ausschnittfenster mit vorgegebenen oberen, unteren, rechten und linken Schnittkoordinaten und ein Testfenster mit vorgegebenen X- und Y-Offsets gegenüber den oberen, unteren, rechten und linken Schnittkoordinaten des Ausschnittfensters aufweist und die Objektkoordinaten, die Schnittkoordinaten und die Offsets bei Berechnungen für die Durchführung des Beschneidens des Objekts vor dessen Anzeige verwendbar sind, gekennzeichnet durch:
    • a) Lademittel (33, 31) zum Laden i) mehrerer Objektkoordinatenregister (37) mit den Objektkoordinaten (X, Y), ii) mehrerer Ausschnittkoordinatenregister (39) mit den Ausschnittkoordinaten und iii) mehrerer Offsetregister (41) mit den vorgegebenen Offsets;
    • b) Vergleichsmittel (47; 121 . . . 124), die mit den Lademitteln zur Erzeugung der Vergleiche gekoppelt sind;
    • c) Rechenmittel (45), die mit den Offsetregistern (41) und den Ausschnittkoordinatenregistern (39) gekoppelt sind und die Grenzen des Testfensters relativ zu den Grenzen des Offsetfensters berechnen;
    • d) Multiplexermittel (101 . . . 109, 131 . . . 146) zur Auswahl vorgegebener Vergleiche;
    • e) Registermittel (R 1-R 44) zum Speichern vorgegebener Vergleichsergebnisse;
    • f) Vergleichssteuermittel (49) zum Steuern der Operation der Vergleichsmittel, der Multiplexermittel und der Registermittel; und
    • g) Zustandserzeugungsmittel (51), gekoppelt mit den Registermitteln (R 1-R 44) zur Erzeugung von Signalen auf der Basis einiger der ausgewählten vorgegebenen Vergleichsergebnisse, die angeben, ob die X-Koordinate jedes Objektkoordinatenpaares kleiner ist als die vorgegebene linke Koordinate, größer ist als die vorgegebene rechte Koordinate, kleiner als die vorgegebene linke Koordinate minus dem X-Offset, größer als die vorgegebene rechte Koordinate plus dem X-Offset, darstellbar ist in 15 Bits, innerhalb der linken und rechten Koordinaten, innerhalb der linken Koordinate minus dem X-Offset und der rechten Koordinate plus dem X-Offset, und welche angeben, ob die Y-Koordinate jedes Objektkoordinatenpaares kleiner als die vorgegebene untere, größer als die vorgegebene obere, kleiner als die vorgegebene untere Koordinate minus dem Y-Offset, größer als die vorgegebene obere Koordinate plus dem Y-Offset, darstellbar ist in 15 Bits, innerhalb der unteren und oberen und innerhalb der unteren Koordinate minus dem Y-Offset und der oberen Koordinate plus dem Y-Offset liegt.
DE19904000215 1989-01-13 1990-01-05 Einrichtung zum Erzeugen von Bildausschnitten unter Verwendung eines Testfensters in einem Graphiksystem Expired - Fee Related DE4000215C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US29709389A 1989-01-13 1989-01-13

Publications (2)

Publication Number Publication Date
DE4000215A1 true DE4000215A1 (de) 1990-07-19
DE4000215C2 DE4000215C2 (de) 1997-08-21

Family

ID=23144835

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19904000215 Expired - Fee Related DE4000215C2 (de) 1989-01-13 1990-01-05 Einrichtung zum Erzeugen von Bildausschnitten unter Verwendung eines Testfensters in einem Graphiksystem

Country Status (5)

Country Link
JP (1) JPH0727572B2 (de)
CA (1) CA1316263C (de)
DE (1) DE4000215C2 (de)
GB (1) GB2227148B (de)
HK (1) HK52894A (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19818991A1 (de) * 1998-04-27 1999-11-11 Japan Nuclear Cycle Dev I Toka Verfahren und System zur Objektsuche

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05233770A (ja) * 1992-02-24 1993-09-10 Tokyo Gas Co Ltd 線画デ−タ検索方式
US6445386B1 (en) * 1999-01-15 2002-09-03 Intel Corporation Method and apparatus for stretch blitting using a 3D pipeline

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4710767A (en) * 1985-07-19 1987-12-01 Sanders Associates, Inc. Method and apparatus for displaying multiple images in overlapping windows

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6120128A (ja) * 1984-07-07 1986-01-28 Daikin Ind Ltd Crtデイスプレイ装置のクリツプ回路

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4710767A (en) * 1985-07-19 1987-12-01 Sanders Associates, Inc. Method and apparatus for displaying multiple images in overlapping windows

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19818991A1 (de) * 1998-04-27 1999-11-11 Japan Nuclear Cycle Dev I Toka Verfahren und System zur Objektsuche
DE19818991B4 (de) * 1998-04-27 2007-10-11 Japan Nuclear Cycle Development Institute, Tokai Verfahren und System zum Auswählen und Anzeigen von in einem Betrachtungsvolumen enthaltenen Objekten

Also Published As

Publication number Publication date
GB8920842D0 (en) 1989-11-01
HK52894A (en) 1994-06-03
JPH0727572B2 (ja) 1995-03-29
GB2227148B (en) 1993-09-08
JPH02270082A (ja) 1990-11-05
CA1316263C (en) 1993-04-13
GB2227148A (en) 1990-07-18
DE4000215C2 (de) 1997-08-21

Similar Documents

Publication Publication Date Title
DE69916646T3 (de) Schattierung von 3-dimensionalen rechnererzeugten Bildern
DE3407983C2 (de) Mehrprozessorrechnersystem zum Erzeugen von Bildpunktinformationen aus in einer hierarchischen Datenstruktur definierten Objektelementen
DE3335162C2 (de) Vorrichtung und Verfahren für graphische Darstellungen mittels Computer
DE19709220B4 (de) System und Verfahren für eine beschleunigte Verdeckungsauslese
DE69908966T3 (de) Schattierung von 3-dimensionalen rechner-erzeugten bildern
DE3486494T2 (de) Graphisches Musterverarbeitungsgerät
DE10053439B4 (de) Grafik-Beschleuniger mit Interpolationsfunktion
DE69534331T2 (de) Verfahren und Vorrichtung zur Hervorhebung der Einzelheit einer Baumstruktur
DE3619420C2 (de)
DE2703021A1 (de) Datenprozessor zum liefern von intensitaetssteuersignalen zur verwendung in einer rasteranzeige
DE19600431A1 (de) Computergraphik-Pixel-Wiedergabesystem mit Cache-Speichern
DE2835689A1 (de) Anordnung zur veraenderung der aufloesung bei der bild-datenerfassung und -uebertragung
DE102014006734A1 (de) Eckpunktparameter-datenkompression
DE69631718T2 (de) Verfahren und Gerät zur leistungsfähigen Graphikdarstellung dreidimensionaler Szenen
DE69722535T2 (de) Verfahren und Gerät zum Schaffen von Texturdaten
DE3941550C2 (de) Schaltungsanordnung zum Zerlegen einer auf einem Computer-Ausgabedisplay anzuzeigenden Graphikfigur
DE102004012516A1 (de) Computersystem zur elektronischen Datenverarbeitung
DE60035092T2 (de) Bildumwandlungsvorrichtung, Speichermedium, und Bildumwandlungsverfahren
DE3705124A1 (de) Anzeigeprozessor und videoverarbeitungsuntersystem fuer computergraphik
DE4000215A1 (de) Einrichtung zum erzeugen von bildausschnitten unter verwendung eines testfensters in einem graphiksystem
EP1709587A1 (de) Bildverarbeitungssystem
DE60306388T2 (de) Verfahren und vorrichtung zur bilddatenverarbeitung unter verwendung von bildstreifen und zirkularadressierungsanordnung
DE69817633T2 (de) Faltung von Zeilenrasterdarstellungen
EP1034511B1 (de) Verfahren zur umsetzung digitaler daten im raster einer ersten auflösung in digitale zieldaten einer zweiten auflösung
DE3310949C2 (de)

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8125 Change of the main classification

Ipc: G06F 15/72

D2 Grant after examination
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee