DE69033283T2 - Method and device for accelerating picture windows in graphic systems - Google Patents
Method and device for accelerating picture windows in graphic systemsInfo
- Publication number
- DE69033283T2 DE69033283T2 DE1990633283 DE69033283T DE69033283T2 DE 69033283 T2 DE69033283 T2 DE 69033283T2 DE 1990633283 DE1990633283 DE 1990633283 DE 69033283 T DE69033283 T DE 69033283T DE 69033283 T2 DE69033283 T2 DE 69033283T2
- Authority
- DE
- Germany
- Prior art keywords
- window
- graphics
- pipeline
- frame buffer
- address
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/393—Arrangements for updating the contents of the bit-mapped memory
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/14—Display of multiple viewports
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/12—Frame memory handling
- G09G2360/121—Frame memory handling using a cache memory
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Description
Diese Erfindung bezieht sich auf Computer-Workstation-Fenstersysteme. Insbesondere bezieht sich diese Erfindung auf ein Verfahren und eine Vorrichtung zur Beschleunigung der Graphik-Grundelementaufbereitung auf Mehrprogrammbetrieb- Workstations, die Graphik-Pipelines verwenden.This invention relates to computer workstation windowing systems. More particularly, this invention relates to a method and apparatus for accelerating graphics primitive rendering on multitasking workstations that use graphics pipelines.
Computer-Workstations liefern Systembenutzern leistungsstarke Werkzeuge zur Unterstützung einer Anzahl von Funktionen. Ein Beispiel einer der nützlicheren Funktionen, die Workstations liefern, ist die Fähigkeit, hochdetaillierte Graphiksimulationen für eine Vielzahl von Anwendungen durchzuführen. Graphiksimulationen sind besonders für Ingenieure und Entwickler nützlich, die rechnergestützte Entwurfs- (CAD; CAD = computer aided design) und rechnergestützte Verwaltungs- (CAM; CAM = computer aided management) Aufgaben durchführen.Computer workstations provide system users with powerful tools to support a number of functions. An example of one of the more useful functions that workstations provide is the ability to perform highly detailed graphics simulations for a variety of applications. Graphics simulations are particularly useful for engineers and designers who perform computer-aided design (CAD) and computer-aided management (CAM) tasks.
Moderne Workstations weisen Graphikfähigkeiten auf, die "Fenster"-Systeme verwenden, um Graphikmanipulationen zu erreichen. Ein aufkommender Standard für Graphikfenstersysteme ist das "X"-Fenstersystem, das im Massachusetts Institute of Technology entwickelt wurde. Das X-Fenstersystem ist bei K. Akeley und T. Jermoluk, "High-Performance Polygon Rendering", Computer Graphics, 239 bis 246, (August 1988), beschrieben. Neuere Fenstersysteme in Graphik-Workstations müssen eine Vielzahl von Hochleistungsfenstern liefern, und noch ein hohes Maß an Benutzerinteraktivität mit der Workstation beibehalten. Früher wurden Softwarelösungen zum Liefern einer erhöhten Benutzerinteraktivität mit dem Fenstersystem in Graphik-Workstations implementiert. Jedoch tendie ren Softwarelösungen, die die Benutzerinteraktivität mit dem System erhöhen, dazu, die Prozessor-Arbeitszeit zu erhöhen, wodurch die Zeit erhöht wird, in der Graphikaufbereitungen für den Bildschirm in der Workstation erreicht werden können.Modern workstations include graphics capabilities that use "window" systems to achieve graphics manipulation. An emerging standard for graphics window systems is the "X" window system developed at the Massachusetts Institute of Technology. The X window system is described in K. Akeley and T. Jermoluk, "High-Performance Polygon Rendering," Computer Graphics, 239 to 246, (August 1988). Newer window systems in graphics workstations must provide a variety of high-performance windows, and still maintain a high level of user interactivity with the workstation. Previously, software solutions were implemented to provide increased user interactivity with the window system in graphics workstations. However, the trend is Other software solutions that increase user interactivity with the system tend to increase processor working time, thereby increasing the time in which graphics rendering for the screen in the workstation can be achieved.
Eine primäre Funktion von Fenstersystemen in Graphik-Workstations besteht darin, dem Benutzer einen gleichzeitigen Zugriff auf mehrere Prozesse auf der Workstation zu liefern. Jedoch schafft jeder dieser Prozesse durch seine eigene Fläche auf der Workstation-Anzeige eine Schnittstelle zu dem Benutzer. Das Gesamtergebnis ist eine Erhöhung der Benutzerproduktivität, da der Benutzer mit mehreren Fenstern mehr als eine Aufgabe auf einmal verwalten kann. Jedoch sieht jeder Prozeß, der einem Fenster zugeordnet ist, die Betriebsmittel der Workstation, als ob er der einzige Besitzer wäre. Folglich müssen die Betriebsmittel, beispielsweise die Verarbeitungseinheit, der Speicher, die Peripher- und Graphik- Hardware von diesen Prozessen auf eine Art und Weise gemeinsam verwendet werden, die Zwischenprozeßkonflikte auf der Workstation verhindert.A primary function of window systems in graphics workstations is to provide the user with simultaneous access to multiple processes on the workstation. However, each of these processes interfaces with the user through its own area on the workstation display. The overall result is an increase in user productivity because multiple windows allow the user to manage more than one task at a time. However, each process associated with a window sees the workstation's resources as if it were the sole owner. Consequently, the resources, such as the processing unit, memory, peripherals and graphics hardware, must be shared by these processes in a manner that prevents interprocess contention on the workstation.
Graphik-Workstations verwenden allgemein Graphik-"Pipelines", die die verschiedenen Komponenten des Systems verbinden. Eine Graphik-Pipeline ist eine Reihe von Datenverarbeitungselementen, die Graphikbefehle durch das Graphiksystem leiten. Heutzutage entwickeln sich Graphik-Pipelines und Fenstersysteme dahingehend, daß sie Mehrprogrammbetrieb-Workstations unterstützen.Graphics workstations generally use graphics "pipelines" that connect the various components of the system. A graphics pipeline is a series of data processing elements that pass graphics commands through the graphics system. Today, graphics pipelines and windowing systems are evolving to support multitasking workstations.
Die typische Graphik-Pipeline verbindet einen "Host"-Prozessor mit dem Graphiksystem, das die verschiedenen Graphikbefehle, die für das System verfügbar sind und die ferner eine Schnittstelle zu dem Benutzer bilden, liefert. Der Hostprozessor ist durch die Graphik-Pipeline schnittstellenmäßig mit einer "Transformationsmaschine" verbunden, die im allgemeinen eine Anzahl von parallelen Gleitkomma-Prozessoren aufweist. Die Transformationsmaschine führt eine Vielzahl von Systemaufgaben durch, einschließlich einer Kontext-Verwaltung, Matrix-Transformationsberechnungen, Lichtmodellierungs- und Effektivstrahlungs-Berechnungen und einer Steuerung der Vektor- und Polygon-Aufbereitungshardware.The typical graphics pipeline interfaces a "host" processor to the graphics system, which provides the various graphics commands available to the system and also interfaces with the user. The host processor is interfaced through the graphics pipeline to a "transformation engine," which generally comprises a number of parallel floating-point processors. The transformation engine executes a variety of of system tasks, including context management, matrix transformation calculations, light modeling and effective radiance calculations, and control of the vector and polygon rendering hardware.
Bei Graphiksystemen muß ein bestimmtes Schema implementiert sein, um Graphikgrundelemente für den Systembildschirm "aufzubereiten" oder auf denselben zu zeichnen. Ein "Graphikgrundelement" weist eine elementare Komponente eines Graphikbildes, beispielsweise ein Polygon oder einen Vektor, auf. Alle Graphikbilder sind aus Kombinationen dieser Graphikgrundelemente gebildet. Viele Schemata können verwendet werden, um eine Graphik-Grundelementaufbereitung durchzuführen. Ein solches Schema ist das "Spline-Mosaik"-Schema, das in den TURBO-SRX-Graphiksystemen von der Hewlett-Packard Company Graphics Technology Division, Fort Collins, Colorado, verwendet ist. Ungeachtet des Typs des Graphikaufbereitungsschemas, das durch die Graphik-Workstation verwendet wird, ist die Transformationsmaschine bei der Verwaltung der Graphikaufbereitung notwendig.Graphics systems require a specific scheme to be implemented to "render" or draw graphics primitives for the system screen. A "graphics primitive" comprises an elementary component of a graphics image, such as a polygon or vector. All graphics images are formed from combinations of these graphics primitives. Many schemes can be used to perform graphics primitive rendering. One such scheme is the "spline mosaic" scheme used in the TURBO-SRX graphics systems of Hewlett-Packard Company Graphics Technology Division, Fort Collins, Colorado. Regardless of the type of graphics rendering scheme used by the graphics workstation, the transformation engine is necessary in managing the graphics rendering.
Ein Graphik-"Rahmenpuffer" ist dem Hostprozessor und der Transformationsmaschine in der Pipeline in dem Graphikfenstersystem schnittstellenmäßig nachgeschaltet. Ein "Rahmenpuffer" weist im allgemeinen eine Mehrzahl von Video-Direktzugriffsspeicher-Computerchips (VRAM; VRAM = video random access memory) auf, die Informationen speichern, die die Pixelaktivierung auf der Anzeige betreffen, die den speziellen Graphikgrundelementen, die auf dem Bildschirm aufbereitet werden, entspricht. Im allgemeinen enthält der Rahmenpuffer alle Daten-Graphikinformationen, die in die Fenster geschrieben werden, und speichert diese Informationen, bis das Graphiksystem vorbereitet ist, um diese Informationen auf dem Bildschirm der Workstation wiederzugeben. Der Rahmenpuffer ist im allgemeinen dynamisch und wird periodisch aufgefrischt, bis die Informationen, die in demselben gespeichert sind, auf dem Bildschirm wiedergegeben werden. Der Host und der Rahmenpuffer weisen zugeordnete Bandbreiten auf. Die Bandbreite ist ein Maß der Rate des Datenflusses über einen Datenweg.A graphics "frame buffer" interfaces downstream of the host processor and the transformation engine in the pipeline in the graphics window system. A "frame buffer" generally comprises a plurality of video random access memory (VRAM) computer chips that store information concerning pixel activation on the display corresponding to the particular graphics primitives being rendered on the screen. Generally, the frame buffer contains all data graphics information written to the windows and stores this information until the graphics system is prepared to render this information on the workstation screen. The frame buffer is generally dynamic and is periodically refreshed until the information stored in it is rendered on the screen. The host and the frame buffer have associated bandwidths. The Bandwidth is a measure of the rate of data flow over a data path.
Um mehrere Prozesse bei einem Graphiksystem zu beschleunigen, muß die Graphik-Pipeline in der Lage sein, mehrere "Kontexte" zu handhaben. Ein Graphikkontext besteht aus dem momentanen Satz von Attributen, dem Matrixstapel, den Lichtquellen, der Schattierungssteuerung, den Spline-Basismatrizen und anderen Hardwarezustands-Informationen. Frühere Graphiksysteme waren im allgemeinen nur in der Lage, einen einzelnen Graphikkontext zu einer Zeit zu unterstützen und benötigten die Host-Software, um das Schalten zwischen allen Kontexten durchzuführen. Bei diesen Systemen erfordert das Software-Kontextschalten, daß der Host den Kontext für jeden aktiven Prozeß in einem virtuellen Speicher speichert, den Kontext in das Gerät schreibt, wenn der Prozeß aktiv ist und den Kontext in das System zurückliest. Dieser Prozeß ist extrem zeitaufwendig und wenig effizient und unterstützt Hochpegel-Graphikoperationen in dem Graphiksystem nicht adäquat.To accelerate multiple processes on a graphics system, the graphics pipeline must be able to handle multiple "contexts." A graphics context consists of the current set of attributes, the matrix stack, the light sources, the shading control, the spline basis matrices, and other hardware state information. Earlier graphics systems were generally only able to support a single graphics context at a time and required the host software to perform the switching between all contexts. In these systems, software context switching requires the host to store the context for each active process in virtual memory, write the context to the device when the process is active, and read the context back to the system. This process is extremely time consuming and inefficient, and does not adequately support high-level graphics operations in the graphics system.
Mehrere Probleme existieren bei bekannten Graphikfenstersystemen, die Graphik-Pipelines verwenden. Eine wesentliche bekannte Schwierigkeit entsteht, wenn mehrere Kontexte durch die Pipeline geschaltet werden müssen. Immer wenn ein Fensterkontext geändert oder durch die Graphik-Pipeline "geschaltet" werden muß, muß die Pipeline "geräumt" werden. Das Räumen erfordert, daß die Pipeline von Daten geleert wird, um zu bestimmen, ob alle Daten, die dem vorherigen Kontext zugeordnet sind, durch die Pipeline zu dem Rahmenpuffer geleitet wurden.Several problems exist in known graphics window systems that use graphics pipelines. A major known difficulty arises when multiple contexts must be switched through the pipeline. Whenever a window context needs to be changed or "switched" through the graphics pipeline, the pipeline must be "flushed." Flushing requires that the pipeline be flushed of data to determine whether all data associated with the previous context has been piped through the pipeline to the frame buffer.
Dieses Verfahren des Kontextschaltens ist mit Problemen verbunden. Da alle Daten aus der Pipeline geleert werden müssen, um zu bestimmen, ob der vorherige Kontext zu dem Rahmenpuffer durchgeleitet wurde, bevor der nächste Kontext von dem Host in die Pipeline eingegeben werden kann, werden schwerwiegende Begrenzungen bei der Aufbereitung von Graphikgrundelementen für den Bildschirm in einer zeitlichen Form eingeführt, wobei das System signifikant verlangsamt ist. Ferner erhöht die Host-Verwaltung dieser Form des Kontextschaltens die Zusatzbelastung des Hosts stark, wodurch der Host-Wirkungsgrad verringert wird, und wodurch die Host-Prozessorzeit erhöht wird, die Aufgaben zugewiesen ist, die nicht der aktiven Aufbereitung von Daten zu dem Rahmenpuffer zugeordnet sind. Folglich ist das Räumen der Graphik-Pipeline ein unzulängliches und ineffizienten Verfahren, um in neueren Fenstersystemen, die Graphik-Pipelines verwenden, ein Kontextschalten zu erreichen.This method of context switching is fraught with problems. Since all data must be flushed from the pipeline to determine whether the previous context has been passed through to the frame buffer before the next context can be entered into the pipeline from the host, severe limitations are imposed on rendering graphics primitives to the screen in a timely manner. form, significantly slowing the system. Furthermore, host management of this form of context switching greatly increases the overhead of the host, thereby reducing host efficiency, and increasing the host processor time allocated to tasks not associated with actively preparing data to the frame buffer. Consequently, flushing the graphics pipeline is an inadequate and inefficient method of achieving context switching in newer windowing systems that use graphics pipelines.
Aus der GB-A-2211706 ist es bekannt, einen FIFO-Speicher unter den Pipeline-Stufen zu verteilen. Ein Latch vor jeder Pipeline-Stufe wirkt als ein FIFO der Tiefe Eins, um die Daten zu speichern, die von der vorherigen Stufe gesendet werden, wenn die momentane Stufe nicht bereit ist, dieselben zu empfangen. Ein Register ist jeder Stufe hinzugefügt, um das momentane Halte-Signal zwischenzuspeichern, das von einer folgenden Stufe gesendet wird, bevor es zu der vorherigen Stufe gesendet wird. Das Halte-Signal einer Stufe bewirkt, daß ein Halte-Signal durch die nächste vorherige Stufe erzeugt wird, während sich der Prozeß des Zwischenspeicherns der Daten und des Übertragens der Halte-Signale durch die Pipeline fortsetzt.From GB-A-2211706 it is known to distribute a FIFO memory among the pipeline stages. A latch before each pipeline stage acts as a FIFO of depth one to store the data sent by the previous stage when the current stage is not ready to receive it. A register is added to each stage to latch the current hold signal sent by a following stage before it is sent to the previous stage. The hold signal of one stage causes a hold signal to be generated by the next previous stage while the process of latching the data and transmitting the hold signals through the pipeline continues.
Weitere Zeitprobleme existieren in Fenstersystemen, die Graphik-Pipelines verwenden. Alle Graphik-Pipelines erfahren eine Pipeline-"Latenz", die als die Zeit definiert ist, die erforderlich ist, damit ein einzelnes Grundelement die Pipeline durchläuft. Eine signifikante Schwierigkeit wird während des Kontextschaltens in Graphik-Pipelines als ein Ergebnis der Pipeline-Latenz angetroffen, da die Pipeline-Latenz die Ansprechempfindlichkeit und die Benutzerinteraktivität des Fenstersystems verringert. Ferner benötigen komplexe Grundelemente eine signifikante Verarbeitungszeit zum Aufbereiten und zwingen daher andere Grundelemente dazu, einen Wartezustand in der Pipeline anzunehmen, bis dieselben vollständig für den Bildschirm aufbereitet sind.Further timing problems exist in windowing systems that use graphics pipelines. All graphics pipelines experience pipeline "latency," which is defined as the time required for a single primitive to traverse the pipeline. A significant difficulty is encountered during context switching in graphics pipelines as a result of pipeline latency, since pipeline latency reduces the responsiveness and user interactivity of the windowing system. Furthermore, complex primitives require significant processing time to render and therefore force other primitives to assume a wait state in the pipeline until they are fully rendered to the screen.
Somit zwingen Fensteroperationen, die theoretisch interaktiv mit dem Benutzer sein sollten, den Benutzer häufig dazu, zu warten, während Graphikgrundelemente aufbereitet werden. Da sich Graphik-Pipelines und Graphik-Workstations dahingehend entwickeln, daß sie komplexere Grundelemente und längere Pipelines unterstützen, liefern die Pipeline-Latenz und das Pipeline-Räumen nun untragbare Probleme bei der anhaltenden Bemühung nach einem zunehmenden Pipeline-Durchsatz und -Wirkungsgrad.Thus, window operations that should theoretically be interactive with the user often force the user to wait while graphics primitives are rendered. As graphics pipelines and graphics workstations evolve to support more complex primitives and longer pipelines, pipeline latency and pipeline flushing now present prohibitive problems in the ongoing effort to increase pipeline throughput and efficiency.
Es existiert folglich ein seit langem bekannter Bedarf in der Technik nach Graphik-Pipeline-Architekturen, die die Notwendigkeit eines Pipeline-Räumens beseitigen und die Pipeline-Latenz reduzieren. Außerdem existiert ein seit langem bekannter Bedarf in der Technik nach Pipeline-Graphiksystemen, die ein Schalten zwischen mehreren Kontexten unterstützen. Ferner existiert in der Technik ein seit langem bekannter Bedarf nach Graphiksystemen, die mehrere Kontexte unterstützen, jedoch den Bedarf nach einer komplexen Hostverwaltung und einer Prozessor-Zusatzbelastung reduzieren. Diese Bedürfnisse wurden bisher in der Graphikfenstertechnik durch keine momentanen Softwareimplementierungen, die gegenwärtig in Verwendung sind, erfüllt.There is therefore a long-recognized need in the art for graphics pipeline architectures that eliminate the need for pipeline flushing and reduce pipeline latency. There is also a long-recognized need in the art for pipelined graphics systems that support switching between multiple contexts. There is also a long-recognized need in the art for graphics systems that support multiple contexts but reduce the need for complex host management and processor overhead. These needs have not been met in the graphics windowing art by any current software implementations currently in use.
In der US-A-4814884 ist ein Fenstergenerator offenbart, der ein Feld von Videodaten empfängt, und der einen Identifikationscode an rechteckige Teilregionen anlegt, um unterschiedliche Zielbereiche innerhalb eines gegebenen Hintergrundbereiches zu identifizieren. Der Fenstergenerator umfaßt eine Videopipelineverarbeitungsschaltungsanordnung zum Sammeln von getrennter Statistik für jeden Zielbereich.US-A-4814884 discloses a window generator which receives an array of video data and applies an identification code to rectangular sub-regions to identify different target areas within a given background area. The window generator includes video pipeline processing circuitry for collecting separate statistics for each target area.
Gemäß der vorliegenden Erfindung ist ein System und ein Verfahren zum Aufbereiten von Graphikgrundelementen gemäß Anspruch 1 und 19 im folgenden geschaffen:According to the present invention, a system and a method for rendering graphics primitives according to claims 1 and 19 are provided as follows:
Es sind Systeme zum Aufbereiten von Grundelementen, die anfänglich in fensterrelativen Adressen aufbereitet werden, in einem Graphikrahmenpuffer, vorgesehen. Die Systeme weisen eine Hostprozessoreinrichtung zum Liefern von Graphikbefehlen auf, um Grundelemente in fensterrelativen Adressen aufzubereiten, eine Abtastumwandlereinrichtung, die schnittstellenmäßig mit der Hostprozessoreinrichtung verbunden ist, zum Aufbereiten der Graphikgrundelemente durch eine Graphikpipeline in dem Graphikrahmenpuffer gemäß fensterrelativen Adressen, eine Pipelineumgehungseinrichtung, die mit der Hostprozessoreinrichtung schnittstellenmäßig verbunden ist, zum busmäßigen Weiterleiten von Fensterversatzadressen von dem Host, wobei die Fensterversatzadressen die Postition des Fensters in dem Rahmenpuffer spezifizieren, und eine Tabelleneinrichtung auf, die mit der Pipelineumgehungseinrichtung schnittstellenmäßig verbunden ist, zum Empfangen und Speichern der Fensterversatzadressen und Anwenden der Fensterversatzadressen auf die fensterrelativen Adressen, wodurch die Graphikgrundelemente in dem Rahmenpuffer gemäß der rahmenpufferrelativen Adressen aufbereitet werden, die gemäß der Fensterversatzadressen bestimmt werden.These are systems for processing basic elements that initially prepared in window-relative addresses, in a graphics frame buffer. The systems include host processor means for providing graphics instructions to render primitives in window relative addresses, scan converter means interfacing with the host processor means for rendering the graphics primitives through a graphics pipeline in the graphics frame buffer according to window relative addresses, pipeline bypass means interfacing with the host processor means for bussing window offset addresses from the host, the window offset addresses specifying the position of the window in the frame buffer, and table means interfacing with the pipeline bypass means for receiving and storing the window offset addresses and applying the window offset addresses to the window relative addresses, thereby rendering the graphics primitives in the frame buffer according to the frame buffer relative addresses determined according to the window offset addresses.
Verfahren zum Aufbereiten von Graphikgrundelementen in einem Rahmenpuffer ohne die Pipeline zu räumen, um Fensterversatzadressen zu ändern, sind vorgesehen.Methods for rendering graphics primitives in a frame buffer without flushing the pipeline to change window offset addresses are provided.
Die Verfahren weisen das Aufbereiten der Graphikgrundelemente durch die Graphikpipeline gemäß fensterrelativer Adressen, das Bestimmen der Fensterversatzadressen, die den rahmenpufferrelativen Adressen zu einem beliebigen Zeitpunkt während des Aufbereitens entsprechen, das Übertragen von Fensterversatzadressen zu einem Adressenmanipulator zu einem beliebigen Zeitpunkt während des Aufbereitens, das Anwenden der Fensterversatzadressen auf die fensterrelativen Adressen, um rahmenpufferrelative Adressen für das Fenster zu erhalten, das die Graphikgrundelemente enthält, nach dem Bestimmen und Übertragen der Fensterversatzadressen, und das Übertragen der Graphikgrundelemente zu dem Rahmenpuffer gemäß der rahmenpufferrelativen Adressen auf.The methods include rendering the graphics primitives through the graphics pipeline according to window relative addresses, determining the window offset addresses corresponding to the frame buffer relative addresses at any time during the rendering, transferring window offset addresses to an address manipulator at any time during the rendering, applying the window offset addresses to the window relative addresses to obtain frame buffer relative addresses for the window containing the graphics primitives after determining and transferring the window offset addresses, and transferring the graphics primitives to the frame buffer according to the frame buffer relative addresses.
Computerfenstersysteme, die einen Host, ein Graphikteilsystem, einen Rahmenpuffer, eine Pipeline, eine Pipelineumgehung und einen Adressmanipulator aufweisen, sind vorgesehen. Die Computerfenstersysteme weisen eine Quellregistereinrichtung zum Speichern einer Quellbezugsadresse eines Blocks von Grundelementen, der bewegt werden soll, eine Zielregistereinrichtung zum Speichern einer Zielbezugsadresse des Blocks von Grundelementen, eine Abmessungsregistereinrichtung zum Speichern von Daten, die die Größe des Blocks anzeigen, eine Quellspezifizierereinrichtung zum Speichern von Daten, die anzeigen, ob die Quellbezugsadresse des Blocks eine fensterrelative Adresse oder eine bildschirmrelative Adresse ist, eine Zielspezifizierereinrichtung zum Speichern von Daten, die anzeigen, ob die Zielbezugsadresse des Blocks eine fensterrelative Adresse oder eine bildschirmrelative Adresse ist, und eine Tabelleneinrichtung auf, die schnittstellenmäßig mit der Pipelineumgehungseinrichtung verbunden ist, zum Empfangen und Speichern der Fensterversatzadressen und Anwenden der Fensterversatzadressen auf die fensterrelativen Adressen, wodurch die Graphikgrundelemente in dem Rahmenpuffer gemäß den rahmenpufferrelativen Adressen aufbereitet werden, die gemäß der Fensterversatzadressen bestimmt werden.Computer windowing systems comprising a host, a graphics subsystem, a frame buffer, a pipeline, a pipeline bypass, and an address manipulator are provided. The computer window systems include source register means for storing a source reference address of a block of primitives to be moved, destination register means for storing a destination reference address of the block of primitives, size register means for storing data indicative of the size of the block, source specifier means for storing data indicative of whether the source reference address of the block is a window relative address or a screen relative address, destination specifier means for storing data indicative of whether the destination reference address of the block is a window relative address or a screen relative address, and table means interfaced with the pipeline bypass means for receiving and storing the window offset addresses and applying the window offset addresses to the window relative addresses, thereby rendering the graphics primitives in the frame buffer in accordance with the frame buffer relative addresses determined in accordance with the window offset addresses can be determined.
Systeme zum Bewegen von Blöcken in einem Fenstergraphiksystem mit einem Rahmenpuffer sind ferner vorgesehen.Systems for moving blocks in a windowed graphics system having a frame buffer are also provided.
Die Systeme weisen eine Mehrzahl von ersten Registereinrichtungen zum Speichern von Quelladressdaten eines Blocks in der Form von fensterrelativen Adressen, eine Mehrzahl von zweiten Registereinrichtungen, die mit der Mehrzahl von ersten Registereinrichtungen schnittstellenmäßig verbunden sind, zum Speichern von Zieladressdaten des Blocks in der Form von rahmenpufferrelativen Adressen, und eine Blockbewegungseinrichtung auf, die mit den ersten und zweiten Registereinrichtungen schnittstellenmäßig verbunden ist, zum Bewegen des Blocks von der Quelle zu dem Ziel gemäß den Adressdaten in den ersten oder den zweiten Registereinrichtungen.The systems comprise a plurality of first register means for storing source address data of a block in the form of window relative addresses, a plurality of second register means interfaced to the plurality of first register means for storing destination address data of the block in the form of frame buffer relative addresses, and block movement means interfaced to the first and second register means for moving the block from the source to the destination in accordance with the Address data in the first or second register devices.
Es sind ferner Systeme zum Bewegen von Blöcken in einem Fenstergraphiksystem, das einen Rahmenpuffer aufweist, vorgesehen.Systems are also provided for moving blocks in a windowed graphics system having a frame buffer.
Die Systeme weisen eine Mehrzahl von ersten Registereinrichtungen zum Speichern von Quelladressdaten eines Blocks in der Form von fensterrelativen Adressen, eine Mehrzahl von zweiten Registereinrichtungen, die mit der Mehrzahl von ersten Registereinrichtungen schnittstellenmäßig verbunden sind, zum Speichern von Zieladressdaten des Blocks in der Form von fensterrelativen Adressen, und eine Blockbewegungseinrichtung auf, die mit den ersten und den zweiten Registereinrichtungen schnittstellenmäßig verbunden ist, zum Bewegen des Blocks von der Quelle zu dem Ziel gemäß den Adressdaten in den ersten und den zweiten Registereinrichtungen.The systems include a plurality of first register means for storing source address data of a block in the form of window-relative addresses, a plurality of second register means interfacing with the plurality of first register means for storing destination address data of the block in the form of window-relative addresses, and block movement means interfacing with the first and second register means for moving the block from the source to the destination according to the address data in the first and second register means.
Es sind ferner Systeme zum Bewegen von Blöcken in einem Fenstergraphiksystem, das einen Rahmenpuffer aufweist, vorgesehen.Systems are also provided for moving blocks in a windowed graphics system having a frame buffer.
Die Systeme weisen eine Mehrzahl von ersten Registereinrichtungen, zum Speichern von Quelladressdaten eines Blocks in der Form von rahmenpufferrelativen Adressen, eine Mehrzahl von zweiten Registereinrichtungen, die mit der Mehrzahl von ersten Registereinrichtungen schnittstellenmäßig verbunden sind, zum Speichern von Zieladressdaten des Blocks in der Form von Rahmenpufferadressen, und eine Blockbewegungseinrichtung auf, die mit den ersten und den zweiten Registereinrichtungen schnittstellenmäßig verbunden ist, zum Bewegen des Blocks von der Quelle zu dem Ziel gemäß den Adressdaten in den ersten und den zweiten Registereinrichtungen.The systems include a plurality of first register means for storing source address data of a block in the form of frame buffer relative addresses, a plurality of second register means interfacing with the plurality of first register means for storing destination address data of the block in the form of frame buffer addresses, and block moving means interfacing with the first and second register means for moving the block from the source to the destination according to the address data in the first and second register means.
Fig. 1 ist ein Blockdiagramm eines Fenstergraphiksystems, das eine Graphik-Pipeline und eine Graphik-Pipeline-Umgehung verwendet.Fig. 1 is a block diagram of a windowed graphics system that uses a graphics pipeline and a graphics pipeline bypass.
Fig. 2 ist ein Blockdiagramm eines Fenstergraphiksystems, das eine Graphik-Pipeline, eine Graphik-Pipeline- Umgehung, ein Markierungsregister und ein Stoppmarkierungsregister verwendet.Figure 2 is a block diagram of a windowed graphics system that uses a graphics pipeline, a graphics pipeline bypass, a mark register, and a stop mark register.
Fig. 3 ist ein Flußdiagramm eines Verfahrens, das gemäß dieser Erfindung unter Verwendung von Markierungsregistern und Stoppmarkierungsregistern geschaffen ist.Figure 3 is a flow diagram of a method provided in accordance with this invention using mark registers and stop mark registers.
Fig. 4 ist ein Blockdiagramm eines Fenstergraphiksystems, bei dem eine Fenster-bezogene Adressierung durchgeführt wird.Fig. 4 is a block diagram of a window graphics system in which window-related addressing is performed.
Fig. 5 ist ein Flußdiagramm eines Verfahrens, das gemäß dieser Erfindung für eine Fenster-bezogene Adressierung und für eine Implementierung von virtuellen Fenstern geschaffen ist.Figure 5 is a flow diagram of a method provided in accordance with this invention for window-related addressing and for implementing virtual windows.
Fig. 6 ist ein Blockdiagramm eines Fenstergraphiksystems, das eine Graphik-Pipeline und eine Graphik-Pipeline-Umgehung zum Bewegen von Blockdaten durch die Graphik-Pipeline-Umgehung zu einem Rahmenpuffer verwendet.Figure 6 is a block diagram of a windowed graphics system that uses a graphics pipeline and a graphics pipeline bypass to move block data through the graphics pipeline bypass to a frame buffer.
Fig. 7 ist ein Flußdiagramm eines Verfahrens, das gemäß dieser Erfindung zum Bewegen von Blockdaten und zum Aufbereiten der Blockdaten in einem Rahmenpuffer gemäß den Rahmenpuffer-bezogenen Adressen geschaffen ist.Figure 7 is a flow diagram of a method provided in accordance with this invention for moving block data and for preparing the block data in a frame buffer according to the frame buffer-related addresses.
Fig. 8 ist ein Blockdiagramm eines Graphikfenstersystems zum Übertragen großer Datenblöcke von einem Hostprozessor durch einen Bündelblock, der FIFO-Register verwendet, zu einem Rahmenpuffer.Fig. 8 is a block diagram of a graphics window system for transferring large blocks of data from a host processor through a burst block using FIFO registers to a frame buffer.
Fig. 9A ist ein Flußdiagramm eines Verfahrens, das gemäß dieser Erfindung zum Übertragen großer Datenblöcke entlang einer Pipeline-Umgehung von einem Hostprozessor zu einem Bündelblock geschaffen ist.Figure 9A is a flow diagram of a method provided in accordance with this invention for transferring large blocks of data along a pipeline bypass from a host processor to a burst block.
Fig. 9B ist ein Flußdiagramm eines Verfahrens, das gemäß dieser Erfindung zum Übertragen von Daten von einem Bündelblock zu einem Pixel-Cache geschaffen ist.Figure 9B is a flow diagram of a method provided in accordance with this invention for transferring data from a burst block to a pixel cache.
Die Erfinder des hierin beanspruchten und offenbarten Gegenstands lösten die oben genannten, in der Technik seit langem bekannten Bedürfnisse durch das Implementieren eines Graphikfenstersystems unter Verwendung einer Graphik-Pipeline mit einem getrennten Weg für Befehle und Daten, die kein Durchlaufen der Graphik-Pipeline erfordern. Dieser getrennte Weg ist hierin als ein "Pipeline-Umgehungsbus" definiert und liefert Daten-Befehlen und Blöcken einen direkten Zugriff auf den Datenpuffer ohne ein Durchlaufen des Pipeline-Busses. Der Pipeline-Umgehungsbus unterstützt Blockbewegungen, Block-Lese- und -Schreib-Operationen ebenso wie andere hardwaremäßige, und nicht softwaremäßige, Datenübertragungsfunktionen.The inventors of the subject matter claimed and disclosed herein solved the above-mentioned needs long recognized in the art by implementing a graphics windowing system using a graphics pipeline with a separate path for instructions and data that do not require traversal of the graphics pipeline. This separate path is defined herein as a "pipeline bypass bus" and provides data instructions and blocks with direct access to the data buffer without traversing the pipeline bus. The pipeline bypass bus supports block moves, block reads and writes, as well as other hardware, rather than software, data transfer functions.
Der Pipeline-Umgehungsbus liefert ferner einen schnellen Zugriff auf den Rahmenpuffer für vergleichsweise einfache Befehle, die von dem Host-Prozessor stammen. Ferner reduziert der Pipeline-Umgehungsbus die Graphik-Pipeline-Zusatzbelastung und liefert Dienste, die für das Fenstersystem erforderlich sind, die andernfalls durch den Pipeline-Bus verarbeitet werden müßten. Während der Pipeline-Bus eine Hochlei stungs-Aufbereitung liefert, liefert der Pipeline-Umgehungsbus schnelle Blockoperationen und einen direkten Rahmenpufferzugriff auf die Datenausgabe durch den Hostprozessor.The pipeline bypass bus also provides fast access to the frame buffer for relatively simple instructions originating from the host processor. Furthermore, the pipeline bypass bus reduces the graphics pipeline overhead and provides services required by the windowing system that would otherwise have to be processed by the pipeline bus. While the pipeline bus provides high performance performance conditioning, the pipeline bypass bus provides fast block operations and direct frame buffer access to the data output by the host processor.
Wie in Fig. 1 gezeigt ist, besteht ein Graphiksystem aus einem Hostprozessor 20, der schnittstellenmäßig 30 mit einer Transformationsmaschine 40 verbunden ist. Die Pipeline 50 verbindet den Hostprozessor 20 und die Transformationsmaschine 40 schnittstellenmäßig mit einer Aufbereitungsschaltung 60. Elemente in der Pipeline 50 umfassen einen Graphikprozessor, der eine Vielzahl von Aufgaben in dem Graphikfenstersystem durchführt. Diese Aufgaben schließen das Leiten von Daten durch das Graphiksystem und das Verarbeiten der Graphikbefehle durch verschiedene Hardwareblöcke und Softwarefunktionen ein. Die Ausdrücke Pipeline, Pipeline-Bus und Pipeline-Prozessor sind durchgehend austauschbar verwendet, um den Graphik-Pipeline-Prozessor zu bezeichnen. Eine Fensterschaltung 65 weist bei bevorzugten Ausführungsbeispielen eine Graphikhardware auf, die gemäß dieser Erfindung vorgesehen ist, um Graphikgrundelemente auf Fenstern zu dem Rahmenpuffer 70 aufzubereiten. Die Fensterschaltung ist schnittstellenmäßig mit dem Rahmenpuffer 70 und der Aufbereitungsschaltung 60 verbunden. Diese Graphikgrundelemente, ebenso wie andere Graphikbefehle, werden von dem Hostprozessor 20 ausgegeben und durch die Transformationsmaschine 40 durch die Graphik-Pipeline 50 für eine Übergabe an den Rahmenpuffer 70 manipuliert. Nachdem die Aufbereitungsschaltung 60 ein Fenster mit einem speziellen Kontext durch die Fensterschaltung 65 für den Rahmenpuffer 70 aufbereitet hat, wird das Fenster auf einer Rasteranzeige 80 ausgegeben.As shown in Figure 1, a graphics system consists of a host processor 20 that interfaces 30 with a transformation engine 40. Pipeline 50 interfaces host processor 20 and transformation engine 40 with a rendering circuit 60. Elements in pipeline 50 include a graphics processor that performs a variety of tasks in the graphics window system. These tasks include passing data through the graphics system and processing the graphics commands through various hardware blocks and software functions. The terms pipeline, pipeline bus, and pipeline processor are used interchangeably throughout to refer to the graphics pipeline processor. Window circuit 65, in preferred embodiments, comprises graphics hardware provided in accordance with this invention for rendering graphics primitives on windows to frame buffer 70. The window circuit is interfaced with the frame buffer 70 and the rendering circuit 60. These graphics primitives, as well as other graphics commands, are issued by the host processor 20 and manipulated by the transformation engine 40 through the graphics pipeline 50 for delivery to the frame buffer 70. After the rendering circuit 60 has rendered a window with a specific context through the window circuit 65 for the frame buffer 70, the window is rendered on a raster display 80.
Ein Pipeline-Umgehungsbus 90 ist schnittstellenmäßig 30 mit dem Hostprozessor 20 und dem Rahmenpuffer 70 verbunden. Der Pipeline-Umgehungsbus 90 liefert einen getrennten Datenweg von dem Hostprozessor 20 zu dem Rahmenpuffer 70. Wenn Daten durch den Pipeline-Umgehungsbus 90 zu dem Rahmenpuffer 70 geleitet werden, wird folglich kein zusätzlicher Zeitaufwand durch die Graphik-Pipeline eingeführt. Der Pipeline-Umge hungsbus 90 liefert schnelle Blockübertragungsoperationen und einen direkten Rahmenpufferzugriff für eine Datenausgabe von dem Hostprozessor 20.A pipeline bypass bus 90 is interfaced 30 with the host processor 20 and the frame buffer 70. The pipeline bypass bus 90 provides a separate data path from the host processor 20 to the frame buffer 70. Thus, when data is passed through the pipeline bypass bus 90 to the frame buffer 70, no additional time overhead is introduced by the graphics pipeline. The pipeline bypass The transfer bus 90 provides fast block transfer operations and direct frame buffer access for data output from the host processor 20.
Bei den bevorzugten Ausführungsbeispielen werden gemäß dieser Erfindung Hardwarelösungen geschaffen, die den Bedarf nach einem Pipeline-Räumen beseitigen und die die Pipeline- Latenz reduzieren, wodurch die Fensterbeschleunigung durch das System erhöht ist. Bei weiteren bevorzugten Ausführungsbeispielen ermöglichen Hardwareimplementierungen die Speicherung mehrerer Graphikkontexte auf dem Graphiksystem.In preferred embodiments, hardware solutions are provided in accordance with this invention that eliminate the need for pipeline flushing and reduce pipeline latency, thereby increasing window acceleration through the system. In further preferred embodiments, hardware implementations enable the storage of multiple graphics contexts on the graphics system.
Außerdem können bei den Verfahren und Vorrichtungen, die gemäß dieser Erfindung geschaffen sind, Fenster in dem Graphiksystem als "virtuelle" Vorrichtungen betrachtet werden. Eine virtuelle Vorrichtung arbeitet gemäß den Fensterbezogenen Adressen durch die Graphik-Pipeline unabhängig von Adressen, die dem Rahmenpuffer oder der Rasteranzeige entsprechen. Da die Fenster und das Fensterkontextschalten folglich gemäß den Fenster-bezogenen Adressen aufbereitet werden können, ist der Bedarf nach einer Pipeline-Räumung beseitigt und die Pipeline-Latenz ist signifikant reduziert. Folglich kann jedes Fenster in dem Fenstersystem die Graphik-Pipeline als ein ausschließliches Betriebsmittel betrachten, da Zeit-verbrauchende Manipulationen des Fensters, die die Pipeline-Latenz erhöhen, beseitigt sind. Folglich erfüllen die Verfahren und Vorrichtungen, die gemäß der vorliegenden Erfindung geschaffen werden, einen in der Technik lange bekannten Bedarf nach Graphiksystemen, die mehrere Fensterkontexte unterstützen und den Bedarf nach einer Pipeline-Räumung beseitigen.Furthermore, in the methods and apparatus provided in accordance with this invention, windows in the graphics system can be considered "virtual" devices. A virtual device operates according to window-related addresses through the graphics pipeline independently of addresses corresponding to the frame buffer or raster display. Since windows and window context switching can thus be rendered according to window-related addresses, the need for pipeline flushing is eliminated and pipeline latency is significantly reduced. Consequently, each window in the window system can view the graphics pipeline as an exclusive resource since time-consuming manipulations of the window that increase pipeline latency are eliminated. Thus, the methods and apparatus provided in accordance with the present invention fulfill a long-felt need in the art for graphics systems that support multiple window contexts and eliminate the need for pipeline flushing.
Gemäß Fig. 2 ist ein Hostprozessor 20 entlang der Pipeline 50 schnittstellenmäßig mit einer Aufbereitungsschaltung 60 verbunden. Zwischen der Aufbereitungsschaltung 60 und einem Rahmenpuffer 70 ist ein Markierungsregister 100 angeordnet. Bei den bevorzugten Ausführungsbeispielen wird von dem Hostprozessor durch den Pipeline-Bus 50 auf das Pipeline-Markie rungsregister 100 zugegriffen, ohne den Datenfluß durch die Pipeline zu beeinflussen. Das Markierungsregister 100 verhindert eine unnötige Pipeline-Räumung, wenn es erwünscht ist, einen Fensterkontext zu ändern.Referring to Figure 2, a host processor 20 is interfaced with a conditioning circuit 60 along the pipeline 50. A marker register 100 is arranged between the conditioning circuit 60 and a frame buffer 70. In the preferred embodiments, the pipeline marker register 100 is accessed from the host processor through the pipeline bus 50. The marking register 100 prevents unnecessary pipeline flushing when it is desired to change a window context.
Eine Fensterkontextänderung erfordert häufig ein Wechseln der Systembetriebsmittel, wie z. B. der Fenster-Abschneidungsebenen oder der Fenster-Anzeigemodus-Ebenen. Ferner müssen diese Systembetriebsmittel häufig während des Kontextschaltens gewechselt werden, da dieselben ein begrenztes Betriebsmittel sind und von mehreren Prozessen gemeinsam verwendet werden. Das Markierungsregister 100 liefert, verglichen mit früheren Softwarelösungen, die dazu tendieren könnten, den Bedarf nach einer Pipeline-Räumung zu reduzieren, denselben jedoch nicht beseitigen -- und nicht beseitigen können, ein bevorzugtes Betriebsmittel zum Schalten von Kontexten.A window context change often requires changing system resources, such as window clipping levels or window display mode levels. Furthermore, these system resources must often be changed during context switching because they are a limited resource and are shared by multiple processes. The tag register 100 provides a preferred resource for switching contexts compared to previous software solutions that may tend to reduce the need for pipeline flushing but do not -- and cannot -- eliminate it.
Bei den bevorzugten Ausführungsbeispielen verfolgt das Markierungsregister 100 momentan aktive Kontexte, die die Graphik-Pipeline 50 von dem Hostprozessor 20 durchlaufen. Bei weiteren bevorzugten Ausführungsbeispielen wird eine "Markierung" zwischen jedem Kontextschalten von dem Hostprozessor 20 entlang der Pipeline 50 gesendet. Das Markierungsregister wird jedesmal inkrementiert, wenn ein Kontext die Pipeline durchläuft, derart, daß eine Tabelle von Kontexten, die gegenwärtig in der Pipeline sind, durch das System in dem Markierungsregister 100 gehalten wird. Die Tabelle zeigt die Kontextnummer, die Fensterabschneidungsebenen, die Fensteridentifikation und die Markierungsnummern für jeden aktiven Kontext in der Pipeline. Während die Kontexte durch den Pipeline-Bus 50 verarbeitet werden, wird das Pipeline- Markierungsregister 100 automatisch jedesmal aktualisiert, wenn eine Markierung das Ende des Pipeline-Busses 50 erreicht.In the preferred embodiments, the tag register 100 tracks currently active contexts traversing the graphics pipeline 50 from the host processor 20. In other preferred embodiments, a "tag" is sent between each context switch from the host processor 20 along the pipeline 50. The tag register is incremented each time a context traverses the pipeline such that a table of contexts currently in the pipeline is maintained by the system in the tag register 100. The table shows the context number, window clipping levels, window identification, and tag numbers for each active context in the pipeline. As contexts are processed through the pipeline bus 50, the pipeline tag register 100 is automatically updated each time a tag reaches the end of the pipeline bus 50.
Ein Stoppmarkierungsregister 110 ist schnittstellenmäßig zwischen dem Hostprozessor 20 und dem Rahmenpuffer 70 in den Pipeline-Umgehungsbus 90 geschaltet. Bei weiteren bevorzugten Ausführungsbeispielen ist das Stoppmarkierungsregister 110 gemäß der speziellen Anwendung, die durch den Hostprozessor 20 und den Benutzer spezifiziert ist, mit einem speziellen Wert eingestellt. Wenn ein Kontextschalten stattfindet, kann das Fenstersystem den Wert des Markierungsregisters 100 lesen und diesen mit dem vorbestimmten Wert in dem Stoppmarkierungsregister 110 vergleichen, um zu bestimmen, welche Kontexte noch in der Pipeline sind. Wenn der Markierungsregister-Wert gleich dem Stoppmarkierungsregister-Wert ist, wird das Fenstersystem warten, bis der momentane Kontext durch das System verarbeitet wurde und an den Rahmenpuffer 70 übergeben wurde. Wenn der Stoppmarkierungsregister-Wert nicht gleich dem Markierungsregister-Wert ist, ist der Kontext, der gewechselt wird, nicht in der Pipeline, wobei das Kontextschalten und Abschneidungsebenen-Änderungen unmittelbar stattfinden können. Daher wird es unter keinen Umständen notwendig sein, den Datenfluß in der Pipeline anzuhalten, oder zu verhindern, daß der Hostprozessor fortgesetzt Befehle und Daten auf der Pipeline plaziert. Folglich ist der Bedarf nach einem Pipeline-Räumen beseitigt.A stop mark register 110 is interfaced between the host processor 20 and the frame buffer 70 in the Pipeline bypass bus 90. In further preferred embodiments, stop marker register 110 is set to a particular value according to the particular application specified by host processor 20 and the user. When a context switch occurs, the windowing system may read the value of marker register 100 and compare it to the predetermined value in stop marker register 110 to determine which contexts are still in the pipeline. If the marker register value is equal to the stop marker register value, the windowing system will wait until the current context has been processed by the system and passed to frame buffer 70. If the stop marker register value is not equal to the marker register value, the context being switched is not in the pipeline, and the context switch and clip level changes may occur immediately. Therefore, under no circumstances will it be necessary to halt the flow of data in the pipeline or to prevent the host processor from continuing to place instructions and data on the pipeline. Thus, the need for pipeline flushing is eliminated.
In Fig. 3 ist ein Flußdiagramm eines bevorzugten Ausführungsbeispiels eines Verfahrens, das das Markierungs/Stoppmarkierungs-System von Fig. 2 implementiert, dargestellt. Das System initialisiert in einem Schritt 120 ein Stoppmarkierungsregister durch die Pipeline-Umgehung. Es ist danach erwünscht, die Pipeline in einem Schritt 125 "zu öffnen" ("unplug"). Das System initialisiert in einem Schritt 130 ein Markierungsregister durch die Pipeline und sendet Datenbefehlssegmente in einem Schritt 135 durch die Pipeline.Referring to Figure 3, a flow chart of a preferred embodiment of a method implementing the mark/stop mark system of Figure 2 is shown. The system initializes a stop mark register through the pipeline bypass in a step 120. It is then desirable to "unplug" the pipeline in a step 125. The system initializes a mark register through the pipeline in a step 130 and sends data command segments through the pipeline in a step 135.
Der Hostprozessor fragt in einem Schritt 140 das System ab, um zu bestimmen, ob die Pipeline "geschlossen" ("plugged") ist. Der Ausdruck "geschlossen", der hierin verwendet ist, bedeutet, daß keine Daten und Graphikbefehle durch die Pipeline fließen. Wenn die Pipeline geschlossen ist, führt das System in einem Schritt 150 die Aufgabe durch, für die der Stopp oder das Schließen erwünscht war. Das System initialisiert danach in einem Schritt 155 die nächste Stoppmarkierung durch die Pipeline-Umgehung und macht die Pipeline in einem Schritt 160 frei.The host processor queries the system in a step 140 to determine if the pipeline is "plugged". The term "plugged" as used herein means that no data and graphics commands are flowing through the pipeline. If the pipeline is closed, the system performs the task for which the Stop or closing was desired. The system then initializes the next stop marker through the pipeline bypass in a step 155 and clears the pipeline in a step 160.
Wenn die Pipeline nicht geschlossen war, fragt das System in einem Schritt 145, ob die Pipeline gefüllt ist. Wenn die Pipeline gefüllt ist, kehrt das System zum Schritt 140 zurück. Wenn die Pipeline jedoch nicht gefüllt ist, kehrt das System zum Schritt 125 zurück, in dem sie die Pipeline öffnet.If the pipeline was not closed, the system asks in a step 145 if the pipeline is full. If the pipeline is full, the system returns to step 140. However, if the pipeline is not full, the system returns to step 125 where it opens the pipeline.
Gleichzeitig mit dem Schritt 125 fragt der Hostprozessor das System ab, um in einem Schritt 165 zu bestimmen, ob der Markierungsregister-Wert gleich dem Stoppmarkierungsregister- Wert ist. Wenn der Stoppmarkierungsregister-Wert gleich dem Markierungsregister-Wert ist, beendet das System den Pixeldatenfluß zu dem Rahmenpuffer oder "schließt" die Pipeline in einem Schritt 170. Der Hostprozessor fragt dann das System ab, um zu bestimmen, ob die Pipeline in einem Schritt 175 geöffnet wurde. Wenn die Pipeline nicht geöffnet wurde, wartet das System.Concurrent with step 125, the host processor queries the system to determine if the mark register value is equal to the stop mark register value in a step 165. If the stop mark register value is equal to the mark register value, the system terminates the flow of pixel data to the frame buffer or "closes" the pipeline in a step 170. The host processor then queries the system to determine if the pipeline has been opened in a step 175. If the pipeline has not been opened, the system waits.
Wenn das System offen ist, fragt der Hostprozessor das System im Schritt 165 wiederum ab, um zu bestimmen, ob der Markierungs-Wert gleich dem Stoppmarkierungs-Wert ist. Wenn der Stoppmarkierungs-Wert nicht gleich dem Markierungs-Wert ist, gibt der Hostprozessor im Schritt 180 einen Befehl aus, der ermöglicht, daß der Pixel-Cache Daten in den Rahmenpuffer schreibt.If the system is open, the host processor again queries the system in step 165 to determine if the mark value is equal to the stop mark value. If the stop mark value is not equal to the mark value, the host processor issues a command in step 180 that allows the pixel cache to write data to the frame buffer.
Andernfalls schließt der Hostprozessor die Pipeline im Schritt 170 zu der Zeit, zu der der Hostprozessor das System abfragt, um im Schritt 140 zu bestimmen, ob die Pipeline geschlossen ist. Folglich wurde der Bedarf danach, die Pipeline zu räumen, beseitigt, da das Schließen der Pipeline nur für relativ kurze Zeitperioden zwischen dem Pixel-Cache und dem Rahmenpuffer stattfinden muß, während eine komplexe ver arbeitung und eine Matrixtransformation vorher in der Pipeline stattfindet. Dieses vorteilhafte Ergebnis wird erreicht, da das Markierungs- und das Stoppmarkierungsregister dem Graphiksystem mitteilen, wann der Pixeldatenfluß zu dem Rahmenpuffer warten muß, da ein spezieller Kontext noch nicht an den Rahmenpuffer übergeben wurde.Otherwise, the host processor closes the pipeline in step 170 at the time the host processor polls the system to determine if the pipeline is closed in step 140. Consequently, the need to flush the pipeline has been eliminated because the closing of the pipeline only needs to occur for relatively short periods of time between the pixel cache and the frame buffer while a complex processing and a matrix transformation takes place beforehand in the pipeline. This advantageous result is achieved because the mark and stop mark registers tell the graphics system when the pixel data flow to the frame buffer must wait because a specific context has not yet been passed to the frame buffer.
Das Kontextschalten unter Verwendung der Markierungs- und Stoppmarkierungs-Hardware, das gemäß dieser Erfindung geschaffen ist, beseitigt folglich den Bedarf nach einer Pipeline-Räumung, da die Graphik-Pipeline niemals von Daten geleert werden muß, um zu bestimmen, ob ein momentaner Kontext zu dem Rahmenpuffer übergeben wurde. Auf diese Weise kann ein extrem schnelles und wirkungsvolles Kontextschalten erreicht werden, wodurch das Gesamtgraphiksystem signifikant verbessert wird. Die Markierungsregister- und Stoppmarkierungsregister-Hardware, die gemäß dieser Erfindung geschaffen ist, erfüllt den in der Technik seit langem bekannten Bedarf nach einem Kontextschalten in Graphiksystemen unter Verwendung eines Pipeline-Busses und eines Pipeline-Umgehungsbusses.Context switching using the mark and stop mark hardware provided in accordance with this invention thus eliminates the need for pipeline flushing, since the graphics pipeline never has to be flushed of data to determine whether a current context has been committed to the frame buffer. In this way, extremely fast and efficient context switching can be achieved, significantly improving the overall graphics system. The mark register and stop mark register hardware provided in accordance with this invention meets the long-recognized need in the art for context switching in graphics systems using a pipeline bus and a pipeline bypass bus.
Die Erfinder des hierin beanspruchten und offenbarten Gegenstands entdeckten, daß alle Graphikanwendungen schneller ablaufen, wenn dieselben sich selbst als den einzigen Besitzer des Graphiksystems betrachten. Dies ist eine Folge der Tatsache, daß, wenn eine Graphikanwendung ein Fenster anfordert, der entsprechende Rahmenpufferspeicher dieser Anwendung für eine Graphikausgabe zugewiesen wird. Folglich würde eine ideale Umgebung für eine Graphikaufbereitung ermöglichen, daß jeder Graphikprozeß das Fenster als eine "alleinstehende" oder virtuelle Graphikvorrichtung behandelt.The inventors of the subject matter claimed and disclosed herein discovered that all graphics applications run faster when they consider themselves the sole owner of the graphics system. This is a consequence of the fact that when a graphics application requests a window, the corresponding frame buffer is allocated to that application for graphics output. Thus, an ideal environment for graphics rendering would allow each graphics process to treat the window as a "standalone" or virtual graphics device.
Frühere Graphiksysteme erforderten üblicherweise, daß der Graphikprozeß modifiziert wird, um innerhalb eines Fensters abzulaufen. Diese Systeme erfordern, daß die Anwendung "Fenster intelligent" ist, sowie eine Nachverarbeitung der Anwendungsausgabe, um durch das Hinzufügen von Fensterversät zen oder das Abschneiden auf Fenstergrenzen mit der Fensterumgebung zusammenzupassen. Eine Software, die diese Funktionen durchführt, reduziert das Gesamtsystemverhalten beträchtlich, da eine übermäßige Hostprozessor-Zeitmenge erforderlich ist, um diese Aufgaben durchzuführen. Die Erfinder des hierin beanspruchten und offenbarten Gegenstands implementierten Graphikfunktionen hardwaremäßig, die ermöglichen, daß Grundelemente in dem Pipeline-Bus relativ zu dem Fenster-Ursprung spezifiziert sind.Previous graphics systems typically required that the graphics process be modified to run within a window. These systems require the application to be "window intelligent" and post-process the application output to add window shards. zen or clipping on window boundaries to match the window environment. Software that performs these functions significantly reduces overall system performance because an excessive amount of host processor time is required to perform these tasks. The inventors of the subject matter claimed and disclosed herein implemented graphics functions in hardware that allow primitives in the pipeline bus to be specified relative to the window origin.
Bei den bevorzugten Ausführungsbeispielen ist der Fensterursprung ein Bezug für die Graphikgrundelemente, die für das Fenster aufbereitet werden. Die Übersetzung in Bildschirmbezogene oder "Rahmenpuffer-bezogene Adressen" findet nach der Abtastwandlung gemäß den Fenster-bezogenen Adressen und vor dem Rahmenpufferzugriff statt. Folglich behandelt die Anwendung das Fenster als eine "virtuelle" Vollschirmvorrichtung, das das Graphiksystem die Grundelemente aufbereitet, als ob das Fenster den gesamten Rahmenpuffer umfaßt.In the preferred embodiments, the window origin is a reference for the graphics primitives that are rendered for the window. The translation to screen-relative or "frame buffer-relative addresses" occurs after the scan conversion according to the window-relative addresses and before the frame buffer access. Thus, the application treats the window as a "virtual" full-screen device because the graphics system renders the primitives as if the window encompassed the entire frame buffer.
Operationen dieser Beschaffenheit können durch eine Transformationsmatrix durchgeführt werden. Wenn der Fensterversatz in dem Matrixstapel enthalten ist, muß die Pipeline jedoch jedesmal geräumt werden, wenn das Fenster bewegt oder geändert wird. Nach dem Räumen der Pipeline kann der neue Fensterversatz zu der Transformationsmatrix hinzugefügt werden, und die Pipeline muß wieder gefüllt werden. Folglich besteht eine bevorzugtere Lösung darin, zu ermöglichen, daß die Anwendung auf das Fenster zugreift, als ob dieselbe den gesamten Bildschirm oder Rahmenpuffer besitzt, und dann eine Hardware zu liefern, die die Fensterversatzdaten entsprechend den Rahmenpuffer-bezogenen Adressen empfängt, so daß das Fenster, das die Graphikgrundelemente enthält, entsprechend den Rahmenpuffer-bezogenen Adressen für den Rahmenpuffer aufbereitet werden kann.Operations of this nature can be performed by a transformation matrix. However, if the window offset is contained in the matrix stack, the pipeline must be flushed each time the window is moved or changed. After the pipeline is flushed, the new window offset can be added to the transformation matrix and the pipeline must be refilled. Consequently, a more preferred solution is to allow the application to access the window as if it owned the entire screen or frame buffer, and then to provide hardware that receives the window offset data according to the frame buffer-related addresses so that the window containing the graphics primitives can be prepared according to the frame buffer-related addresses for the frame buffer.
Durch das Aufbereiten der Grundelemente in Fenster-bezogenen Koordinaten und das Durchführen der Umwandlung von Fenster bezogen auf Bildschirm-bezogen in der Verarbeitungsrichtung hinter der Aufbereitungshardware in der Pipeline ist der Bedarf danach, die Pipeline zu räumen, um ein Fenster für den Rahmenpuffer aufzubereiten, beseitigt. Die Fensterübersetzung, die somit hardwaremäßig erreicht wird, ist für die Anwendung vollständig transparent. Die Versatzoperationen werden parallel zu anderen Pipeline-Operationen durch den Pipeline-Umgehungsbus durchgeführt, so daß keine Verhaltensnachteile für die verschiedenen Blockoperationen oder Kontextschaltungen in das Fenstergraphiksystem eingeführt werden.By preparing the primitives in window-related coordinates and performing the conversion of window screen-wise in the processing direction behind the rendering hardware in the pipeline, the need to clear the pipeline to render a window for the frame buffer is eliminated. The window translation thus accomplished in hardware is completely transparent to the application. The offset operations are performed in parallel with other pipeline operations through the pipeline bypass bus, so that no behavioral penalties for the various block operations or context switches are introduced into the window graphics system.
Gemäß Fig. 4 ist ein Hostprozessor 20 schnittstellenmäßig mit einer Aufbereitungsschaltung 60 verbunden. Bei bevorzugten Ausführungsbeispielen weist die Aufbereitungsschaltung 60 eine Transformationsmaschine 210 und einen Abtastwandler 220 auf. Vorzugsweise ist der Abtastwandler ein Raster-Abtastwandler. Mit dem Abtastwandler ist entlang des Pipeline-Busses 50 ein Pixel-Cache 230 schnittstellenmäßig verbunden. Der Pixel-Cache 230 ist ferner schnittstellenmäßig mit einem Rahmenpuffer 70 verbunden. Bei weiteren bevorzugten Ausführungsbeispielen weist ein Video-Direktzugriffsspeicher VRAM 240 den adressierbaren Rahmenpuffer für das System auf. Ein Adreßmanipulator 250 ist auf einem Pipeline-Umgehungsbus 90 schnittstellenmäßig verschaltet. Der Adreßmanipulator 250 ist entlang des Pipeline-Umgehungsbusses 90 zwischen dem Hostprozessor 20 und dem Rahmenpuffer 70 angeordnet.Referring to Figure 4, a host processor 20 is interfaced with a rendering circuit 60. In preferred embodiments, the rendering circuit 60 includes a transformation engine 210 and a scan converter 220. Preferably, the scan converter is a raster scan converter. A pixel cache 230 is interfaced with the scan converter along the pipeline bus 50. The pixel cache 230 is further interfaced with a frame buffer 70. In further preferred embodiments, a video random access memory (VRAM) 240 comprises the addressable frame buffer for the system. An address manipulator 250 is interfaced on a pipeline bypass bus 90. The address manipulator 250 is located along the pipeline bypass bus 90 between the host processor 20 and the frame buffer 70.
Bei weiteren bevorzugten Ausführungsbeispielen weist der Adreßmanipulator 250 Datenregister zum Empfangen von Versatzadressen für jedes Fenster von dem Hostprozessor 20, eine Fenster-bezogene Umwandlungsschaltung und Datenregister zum Speichern einer Fensteridentifikation auf. Die Fensterversätze werden durch den Adreßmanipulator 250 auf jedes Fenster angewendet, bevor die Fenster, die Graphikgrundelemente enthalten, an den Rahmenpuffer 70 übergeben werden. Da die Fensterversätze durch den Pipeline-Umgehungsbus 90 in den Adreßmanipulator 250 geschrieben werden, können diesel ben asynchron aktualisiert werden. Die Fenster können folglich zu der gleichen Zeit, zu der die Fenster-bezogene Aufbereitung der Graphikgrundelemente an dem Abtastwandler 220 durch den Pipeline-Bus 50 stattfindet, durch die Pipeline- Umgehung 90 zu dem Rahmenpuffer bewegt oder gemischt werden. Graphik-Anwendungen und -Prozesse können daher auf dem Graphik-Pipeline-Bus 50 ohne die explizite Kenntnis ihres schließlichen Fensterorts in dem Rahmenpuffer ablaufen. Folglich wirken die Fenster in den Graphiksystemen, die gemäß dieser Erfindung geschaffen sind, wahrlich als virtuelle Vorrichtungen, da dieselben in der Lage sind, die Graphik-Pipeline während Fensterbezogener Aufbereitungsoperationen als ein ausschließliches Betriebsmittel zu betrachten.In further preferred embodiments, the address manipulator 250 includes data registers for receiving offset addresses for each window from the host processor 20, a window-related conversion circuit, and data registers for storing a window identification. The window offsets are applied to each window by the address manipulator 250 before the windows containing graphics primitives are passed to the frame buffer 70. Since the window offsets are written to the address manipulator 250 by the pipeline bypass bus 90, these be updated asynchronously. The windows can thus be moved or merged through the pipeline bypass 90 to the frame buffer at the same time that the window-related rendering of the graphics primitives occurs at the scan converter 220 through the pipeline bus 50. Graphics applications and processes can therefore run on the graphics pipeline bus 50 without explicit knowledge of their final window location in the frame buffer. Thus, the windows in the graphics systems created in accordance with this invention truly act as virtual devices since they are able to view the graphics pipeline as an exclusive resource during window-related rendering operations.
Vorzugsweise ist der Pixel-Cache 230 schnittstellenmäßig durch einen Steuerbus 240 mit einem Adreßmanipulator verbunden. Der Pixel-Cache 230 enthält Fenster-bezogene Adressen 245 der Graphikgrundelemente, die auf dem Fenster bezüglich des Fensterursprungs aufbereitet wurden. Da Fensterversatzdaten durch den Pipeline-Umgehungsbus 90 in den Adreßmanipulator 250 geschrieben werden, steht der Pixel- Cache 230 schnittstellenmäßig mit dem Adreßmanipulator 250 in Verbindung 245, um die Fenster-bezogenen Daten, die in dem Adreßmanipulator mit den Fensterversatzadressen kombiniert werden, zu liefern. Der Adreßmanipulator 250 ist ferner mit dem Rahmenpuffer 70 schnittstellenmäßig verbunden, so daß die Graphikfenster entsprechend den Rahmenpuffer-bezogenen Adressen 255 an den Rahmenpuffer übergeben werden können.Preferably, pixel cache 230 is interfaced 245 to an address manipulator by a control bus 240. Pixel cache 230 contains window-related addresses 245 of the graphics primitives prepared on the window relative to the window origin. As window offset data is written to address manipulator 250 by pipeline bypass bus 90, pixel cache 230 interfaces 245 to address manipulator 250 to provide the window-related data that is combined with the window offset addresses in the address manipulator. The address manipulator 250 is further interfaced with the frame buffer 70 so that the graphics windows can be transferred to the frame buffer in accordance with the frame buffer-related addresses 255.
Da der Adreßmanipulator 250 die Fensterversätze auf die Graphikgrundlemente, die Fenster-bezogen adressiert sind, anwendet, ist der Bedarf danach, die Graphik-Pipeline 50 zu räumen, wenn Kontextänderungen auftreten, beseitigt, und die Pipeline-Latenz für die Graphiksysteme ist stark reduziert. Diese vorteilhaften Ergebnisse werden erhalten, da die komplexe Manipulation, die der Aufbereitung der Graphikgrund elemente in den Rahmenpuffer-bezogenen Adressen direkt durch die Graphik-Pipeline zugeordnet ist, bei Systemen und Verfahren, die gemäß dieser Erfindung geschaffen sind, beseitigt ist.Because the address manipulator 250 applies the window offsets to the graphics primitives that are addressed per window, the need to flush the graphics pipeline 50 when context changes occur is eliminated and the pipeline latency for the graphics systems is greatly reduced. These advantageous results are obtained because the complex manipulation associated with rendering the graphics primitives elements in the frame buffer-related addresses directly by the graphics pipeline is eliminated in systems and methods provided in accordance with this invention.
Ein Flußdiagramm, um eine Fenster-bezogene Aufbereitung bei den Fenstergraphiksystemen, die gemäß dieser Erfindung geschaffen sind, zu erreichen, ist in Fig. 5 gezeigt. Unter Verwendung eines Fensterverwalters verarbeitet die Pipeline eine Anwendung durch die Pipeline. Die Anwendung fordert in einem Schritt 260 eine Fenster-ID an. Der Fensterverwalter bestimmt, ob in einem Schritt 265 eine neue Fenster-ID angefordert wurde. Wenn keine neue Fenster-ID angefordert wurde, bestimmt der Fensterverwalter in einem Schritt 270, ob eine Fensterbewegung angefordert wurde. Wenn keine Fensterbewegung angefordert wurde, springt der Prozeß zum Schritt 265 zurück. Wenn jedoch eine Fensterbewegung angefordert wurde, schließt der Fensterverwalter die Pipeline in einem Schritt 275.A flow chart for accomplishing window-related rendering in the window graphics systems provided in accordance with this invention is shown in Figure 5. Using a window manager, the pipeline processes an application through the pipeline. The application requests a window ID in a step 260. The window manager determines whether a new window ID has been requested in a step 265. If a new window ID has not been requested, the window manager determines whether a window move has been requested in a step 270. If no window move has been requested, the process returns to step 265. However, if a window move has been requested, the window manager closes the pipeline in a step 275.
Der Fensterverwalter berechnet dann in einem Schritt 280 einen neuen Fensterort und bewegt das Fenster. Ferner schreibt der Fensterverwalter den Fensterversatz in einem Schritt 285 in den Adreßmanipulator und öffnet die Pipeline in einem Schritt 290. Der Prozeß springt dann zum Schritt 265 zurück, um zu bestimmen, ob eine neue Fenster-ID angefordert wurde. Da an diesem Punkt keine neue Fenster-ID angefordert wurde, weist der Fensterverwalter in einem Schritt 295 eine Fenster-ID zu und schließt die Pipeline in einem Schritt 300.The window manager then calculates a new window location in a step 280 and moves the window. The window manager also writes the window offset to the address manipulator in a step 285 and opens the pipeline in a step 290. The process then returns to step 265 to determine if a new window ID has been requested. Since a new window ID has not been requested at this point, the window manager assigns a window ID in a step 295 and closes the pipeline in a step 300.
Der Hostprozessor fragt dann das System in einem Schritt 305 ab, um zu bestimmen, ob die neue Fenster-ID empfangen wurde. Wenn die neue Fenster-ID nicht empfangen wurde, wartet das System, bis der Fensterverwalter eine neue Fenster-ID sendet. Wenn jedoch eine neue Fenster-ID empfangen wurde, sendet der Hostprozessor die Anwendung, die Daten- oder Befehls-Segmente für die zugewiesene Fenster-ID aufweist, in einem Schritt 310 durch die Pipeline. Der Hostprozessor be stimmt dann in einem Schritt 315, ob die Anwendung beendet ist. Wenn die Anwendung nicht beendet ist, sendet der Hostprozessor in dem Schritt 310 zusätzliche Daten- oder Befehls-Segmente durch die Pipeline. Wenn die Anwendung jedoch beendet ist, kann gesagt werden, daß das Fenster aufbereitet wurde, und daß der Fensterverwalter das Fenster im Schritt 280 an seinen neuen Ort bewegt haben wird. Der Prozeß endet dann bei 320, bis ein weiteres Fenster die Pipeline durchläuft.The host processor then queries the system in a step 305 to determine if the new window ID has been received. If the new window ID has not been received, the system waits for the window manager to send a new window ID. However, if a new window ID has been received, the host processor sends the application having data or command segments for the assigned window ID through the pipeline in a step 310. The host processor be then determines whether the application has terminated in a step 315. If the application has not terminated, the host processor sends additional data or command segments through the pipeline in step 310. However, if the application has terminated, the window can be said to have been rendered and the window manager will have moved the window to its new location in step 280. The process then terminates at 320 until another window passes through the pipeline.
Eine Fenster-bezogene Aufbereitung, die durch die Verfahren, die in Fig. 5 dargestellt sind, erreicht wird, beseitigt den Bedarf nach einer Pipeline-Räumung. Der Fensterverwalter wendet unabhängig Fensterversatzadressen auf Fensterbezogene Daten an, während die Pipeline gleichzeitig Fenster gemäß den Fenster-bezogenen Adressen verarbeiten kann. Dies wurde bisher in der Technik noch nicht erreicht und erhöht die Geschwindigkeit und die Aktualität der Übergabe von Graphikgrundelementen an den Rahmenpuffer signifikant.Window-relative rendering, achieved by the methods illustrated in Figure 5, eliminates the need for pipeline flushing. The window manager independently applies window offset addresses to window-relative data, while simultaneously allowing the pipeline to process windows according to the window-relative addresses. This has not been achieved before in the art and significantly increases the speed and timeliness of passing graphics primitives to the frame buffer.
Graphikfenstersysteme müssen Blockbewegungsoperationen unterstützen, um das Systemverhalten zu maximieren. Außerdem unterstützen Blockbewegungsoperationen im allgemeinen elementare Fenstergrundelemente, die Raster-Texte und -Symbole einschließen. Andere Typen von Graphikblockbewegungen, beispielsweise Mischungen (shuffles) und Block-"Skalierungen", müssen ebenfalls einen Nutzen aus den Blockbewegungsfähigkeiten des Systems ziehen.Graphics window systems must support block movement operations to maximize system performance. In addition, block movement operations generally support basic window primitives, including raster text and icons. Other types of graphics block movement, such as shuffles and block "scaling," must also take advantage of the system's block movement capabilities.
Ein "Block" kann als ein gesamtes Fenster oder nur ein Teil eines Fensters, der einen Satz von Graphikgrundelementen auf dem Graphiksystem aufweist, betrachtet werden. Blockbewegungen sind in einer Fensterumgebung besonders schwierig zu handhaben, da Fensterversatzadressen bei diesen Operationen eingeschlossen sein müssen, welche typischerweise als Bildschirmadressen-bezogen implementiert sind. Im Gegensatz dazu müssen Blockbewegungsoperationen innerhalb eines Fensters Fenster-bezogen sein, so daß das Erzwingen, daß alle Block bewegungen in dem Graphiksystem Fenster-bezogen sind, weder eine adäquate noch eine vielseitige Lösung ist. Der Grund dafür, daß Blockbewegungsoperationen innerhalb eines Fensters Fenster-bezogen sein müssen, liegt darin, daß viele Objekte, beispielsweise Fonts, in einem Außerhalb-Des-Bildschirms-Speicher in dem Rahmenpuffer gespeichert sind, weshalb diese Objekte ausschließlich entsprechend Rahmenpuffer-bezogenen Adressen identifiziert sind.A "block" can be considered an entire window or just a portion of a window that contains a set of graphics primitives on the graphics system. Block movements are particularly difficult to handle in a windowing environment because window offset addresses must be included in these operations, which are typically implemented as screen address-relative. In contrast, block movement operations within a window must be window-relative, so forcing all blocks movements in the graphics system are window-relative is neither an adequate nor a versatile solution. The reason that block movement operations within a window must be window-relative is that many objects, such as fonts, are stored in off-screen memory in the frame buffer, and therefore these objects are identified exclusively according to frame buffer-relative addresses.
Die Erfinder des hierin beanspruchten und offenbarten Gegenstands entdeckten, daß die hardwaremäßige Implementierung einer Graphikblock-Bewegungseinrichtung ermöglicht, daß das Graphiksystem mehrere unterschiedliche Arten von Blockbewegungsoperationen handhabt. Bei bevorzugten Ausführungsbeispielen weist die hardwaremäßige Implementierung der Blockbewegungsvorrichtung ein Register auf, das die Fähigkeit besitzt, ein Bit für jede Operandenausgabe von dem Hostprozessor zu speichern, das spezifiziert, ob der Operand Fensteradressen-bezogen oder Bildschirmadressen-bezogen ist. Blockbewegungen, die durch Verfahren und Systeme gemäß dieser Erfindung geschaffen sind, können folglich Fenster-bezogen, Bildschirm-bezogen oder irgendeine Kombination derselben sein.The inventors of the subject matter claimed and disclosed herein discovered that the hardware implementation of a graphics block mover enables the graphics system to handle several different types of block move operations. In preferred embodiments, the hardware implementation of the block mover includes a register having the ability to store a bit for each operand output from the host processor that specifies whether the operand is window address related or screen address related. Block moves provided by methods and systems according to this invention can thus be window related, screen related, or any combination thereof.
Fenstersysteme gemäß dieser Erfindung können eine Blockbewegungshardware aufweisen, die Fensterversätze durch einen Pipeline-Umgehungsbus für Fenster, die Graphikgrundelemente aufweisen, die gemäß den Fenster-bezogenen Adressen aufbereitet sind, auf denselben aufweisen, liefert. Bei weiteren bevorzugten Ausführungsbeispielen schreiben Blockbewegungen, die gemäß dieser Erfindung eingeleitet werden, die Blockquelle und Bestimmungsadressen, die Block-Breite und -Höhe und eine spezielle Ersetzungsregel durch den Pipeline-Umgehungsbus vor der Einleitung der Blockbewegung in den Adreßmanipulator.Window systems according to this invention may include block movement hardware that provides window offsets through a pipeline bypass bus for windows having graphics primitives rendered according to the window-related addresses thereon. In further preferred embodiments, block moves initiated according to this invention write the block source and destination addresses, the block width and height, and a specific replacement rule through the pipeline bypass bus to the address manipulator prior to initiating the block move.
Folglich erfordert eine Blockbewegung, die gemäß dieser Erfindung geliefert wird, nicht, daß das Fenster Entscheidun gen über sein spezielles Koordinatensystem trifft, wenn dasselbe die Graphik-Pipeline durchläuft. Dies beseitigt die Notwendigkeit, daß sich das Fenstersystem eine zusätzliche Prozessorzusatzbelastung zuzieht, während Graphikgrundelemente gemäß den Rahmenbezogenen Adressen manipuliert werden, was notwendigerweise parallel zu der Verarbeitung der Anwendung oder des Kontexts stattfinden würde. Wenn ein Block in dem Arbeitsbereich des Rahmenpuffers außerhalb des Bildschirms ist, kann bei bevorzugten Ausführungsbeispielen automatisch angenommen werden, daß derselbe Bildschirmbezogen ist. Wenn der Block in dem aktiven Bildschirmbereich des Rahmenpuffers angezeigt wird, kann jedoch angenommen werden, daß derselbe Fenster-bezogen adressiert ist.Consequently, a block movement provided according to this invention does not require that the window decision about its particular coordinate system as it passes through the graphics pipeline. This eliminates the need for the windowing system to incur additional processor overhead while manipulating graphics primitives according to frame-relative addresses, which would necessarily occur in parallel with the application or context processing. If a block in the work area of the frame buffer is off-screen, in preferred embodiments it can automatically be assumed to be screen-relative. If the block is displayed in the active screen area of the frame buffer, however, it can be assumed to be window-relatively addressed.
Wie in Fig. 6 gezeigt ist, gibt ein Hostprozessor 20 Graphikbefehle entlang eines Pipeline-Busses 50 zu einer Schaltung 330 für eine Fenster-bezogene Aufbereitung aus. Die Schaltung 330 für eine Fenster-bezogene Aufbereitung weist im allgemeinen eine Raster-Abtasteinrichtung und eine Pixel-Cache-Puffereinrichtung, wie sie in den vorherigen Figuren veranschaulicht wurde, auf. Die Schaltung für eine Fensterbezogene Aufbereitung 330 bereitet Graphikgrundelemente für das Fenster gemäß den Fenster-bezogenen Adressen auf.As shown in Figure 6, a host processor 20 issues graphics commands along a pipeline bus 50 to a window-relative rendering circuit 330. The window-relative rendering circuit 330 generally includes a raster scanner and a pixel cache buffer as illustrated in the previous figures. The window-relative rendering circuit 330 renders graphics primitives for the window according to the window-relative addresses.
Die Schaltung 330 für eine Fenster-bezogene Aufbereitung ist ferner schnittstellenmäßig mit einem Rahmenpuffer 70 verbunden. Bei bevorzugten Ausführungsbeispielen ist der Rahmenpuffer 70 ein VRAM. Der Rahmenpuffer 70 kann konzeptionell in zwei Teile geteilt sein. Der erste Teil 340 entspricht den Bildschirmadressen, d. h. positioniert dort auf dem Videobildschirm, wo Graphikgrundelemente tatsächlich angezeigt werden. Der zweite Teil des Rahmenpuffers 350 entspricht einem "Außerhalb-des-Bildschirms"-Arbeitsbereich. Der Außerhalb-des-Bildschirms-Arbeitsbereich 350 ist ein Bereich, in dem Fenster oder Blöcke, die nicht auf dem Videobildschirm des Graphiksystems aufbereitet wurden, ausschließlich entsprechend den Rahmenpuffer-bezogenen Adressen existieren. Blöcke, die auf dem ersten Abschnitt des Rahmenpuffers 340 erscheinen, können relativ zu dem Bildschirm in den Rahmenpuffer-bezogenen Adressen oder den Fenster-bezogenen Adressen adressiert sein, während sie durch die Pipeline verarbeitet werden.The window-referred rendering circuit 330 is further interfaced with a frame buffer 70. In preferred embodiments, the frame buffer 70 is a VRAM. The frame buffer 70 may be conceptually divided into two parts. The first part 340 corresponds to screen addresses, i.e., positions on the video screen where graphics primitives are actually displayed. The second part of the frame buffer 350 corresponds to an "off-screen" work area. The off-screen work area 350 is an area in which windows or blocks that have not been rendered on the video screen of the graphics system exist solely according to the frame buffer-referred addresses. Blocks that are on the first portion of the frame buffer 340 may be addressed relative to the screen in the frame buffer-relative addresses or the window-relative addresses as they are processed by the pipeline.
Bei den bevorzugten Ausführungsbeispielen kann ein Quellenblock 360 von dem Arbeitsbereich 350 zu dem Bestimmungs-Fenster oder -Block 370 in dem ersten Abschnitt 340 des Rahmenpuffers 70 bewegt werden. Es ist für Fachleute offensichtlich, daß die Quellen- und Bestimmungs-Adressen ausgetauscht sein könnten, derart, daß Blöcke Fenster-bezogen, Bildschirmbezogen oder in einer beliebigen Kombination derselben bewegt werden können.In the preferred embodiments, a source block 360 can be moved from the work area 350 to the destination window or block 370 in the first section 340 of the frame buffer 70. It will be apparent to those skilled in the art that the source and destination addresses could be interchanged such that blocks can be moved window-wise, screen-wise, or any combination thereof.
Um Blöcke zwischen einer Bestimmung und einer Quelle zu bewegen, gibt der Hostprozessor 20 Fensterversatzinformationen über den Pipeline-Umgehungsbus 90 zu einer Vielzahl von Datenregistern aus, die der Adreßmanipulator 250 aufweist. Ein Bestimmungsregister 380 ist angepaßt, um die Bestimmungsadresse des Blocks, der von dem Hostprozessor 20 ausgegeben wird, zu speichern. Ein Quellenadreßregister 390 ist angepaßt, um die Quellenadresse des Blocks über die Pipeline-Umgehung 90, welche durch den Hostprozessor 20 ausgegeben wird, zu empfangen. Bei weiteren bevorzugten Ausführungsbeispielen ist es erwünscht, die Blockgröße in das Blockgrößenregister 400 zu schreiben. Bei noch weiteren bevorzugten Ausführungsbeispielen weist die Blockgröße die Block-Breite und die -Höhe auf, so daß der Block exakt an den geeigneten Bestimmungsort in dem Rahmenpuffer geschrieben werden kann.To move blocks between a destination and a source, the host processor 20 outputs window offset information over the pipeline bypass bus 90 to a plurality of data registers included in the address manipulator 250. A destination register 380 is adapted to store the destination address of the block output by the host processor 20. A source address register 390 is adapted to receive the source address of the block output by the host processor 20 over the pipeline bypass 90. In further preferred embodiments, it is desirable to write the block size into the block size register 400. In still further preferred embodiments, the block size comprises the block width and height so that the block can be written exactly to the appropriate destination in the frame buffer.
Das Spezifikatorregister 410 ist angepaßt, um Daten von dem Hostprozessor 20 durch den Pipeline-Umgehungsbus 90 zu empfangen, die spezifizieren, ob der Block, der bewegt werden soll, gegenwärtig Fensteradreß-bezogen oder Rahmenpufferadreß-bezogen ist. Bei weiteren bevorzugten Ausführungsbeispielen spezifiziert ein einzelnes Bit des Operanden, das von dem Hostprozessor 20 empfangen und in dem Spezifikatorregister 410 gespeichert wird, ob der Block Fenster- oder Bildschirm-bezogen ist. Folglich können mit den Verfahren und Vorrichtungen gemäß dieser Erfindung Blöcke, die Fensteradreß-bezogen oder Bildschirmadreß-bezogen sind, zwischen Quellen und Bestimmungsorten, die Fenster-bezogen adressiert oder Rahmenpuffer-bezogen adressiert sind, bewegt werden.The specifier register 410 is adapted to receive data from the host processor 20 through the pipeline bypass bus 90 specifying whether the block to be moved is currently window address related or frame buffer address related. In further preferred embodiments, a single bit of the operand received from the host processor 20 and stored in the specifier register 410 specifies whether the block is window or screen-related. Thus, with the methods and apparatus of this invention, blocks that are window address-related or screen address-related can be moved between sources and destinations that are window-addressed or frame buffer-addressed.
In gleicher Weise können die Quellenadressen und Bestimmungsadressen entweder gemäß den Fenster-bezogenen Adressen oder den Rahmenpuffer-bezogenen Adressen adressiert sein, und Blöcke können gleichzeitig zwischen Quellen- und Bestimmungs-Adressen entweder innerhalb von Fenstern oder in und um den Rahmenpuffer bewegt werden. Systeme und Verfahren, die gemäß dieser Erfindung geliefert werden, erfüllen daher einen in der Technik seit langem bekannten Bedarf nach einer hochwirksamen und vielseitigen Blockbewegungsschaltung in Graphikfenstersystemen, die Graphik-Pipelines verwenden.Likewise, the source addresses and destination addresses may be addressed according to either the window-related addresses or the frame buffer-related addresses, and blocks may be simultaneously moved between source and destination addresses either within windows or in and around the frame buffer. Systems and methods provided in accordance with this invention therefore satisfy a long-felt need in the art for a highly efficient and versatile block movement circuit in graphics window systems using graphics pipelines.
In Fig. 7 ist ein Flußdiagramm eines Blockbewegungsverfahrens, das gemäß dieser Erfindung geliefert wird, gezeigt. Bei bevorzugten Ausführungsbeispielen wird ein Block in einem Schritt 420 gemäß Fenster-bezogenen Adressen durch eine Graphik-Pipeline aufbereitet. Die Quellenadressen des Blocks werden durch die Pipeline-Umgehung in einem Schritt 430 in das Quellenadreßregister geschrieben. In gleicher Weise werden die Bestimmungsadressen des Blocks in einem Schritt 440 durch den Pipeline-Umgehungsbus in das Bestimmungsadressenregister geschrieben. Es ist erwünscht, die Blockgröße in einem Schritt 450 durch den Pipeline-Umgehungsbus in das Blockgrößenregister zu schreiben.In Figure 7, a flow chart of a block movement method provided in accordance with this invention is shown. In preferred embodiments, a block is rendered according to window-related addresses by a graphics pipeline in a step 420. The source addresses of the block are written to the source address register by the pipeline bypass in a step 430. Similarly, the destination addresses of the block are written to the destination address register by the pipeline bypass bus in a step 440. It is desirable to write the block size to the block size register by the pipeline bypass bus in a step 450.
Der Hostprozessor fragt in einem Schritt 460 ein Spezifikatorregister ab, um zu bestimmen, ob ein Bestimmungsblock gemäß Fenster-bezogenen Adressen oder Rahmenpuffer-bezogenen Adressen adressiert wurde. In gleicher Weise fragt der Hostprozessor in einem Schritt 465 ein Spezifikatorregister ab, um zu bestimmen, ob ein Quellenblock gemäß Fenster-bezogenen oder Rahmenpuffer-bezogenen Adressen adressiert wurde. Wenn die Blöcke gemäß den Rahmenpuffer-bezogenen Adressen adressiert wurden, wird in einem Schritt 470 ein "Null"-Fensterversatz angewendet, der die Blockadressen effektiv nicht ändert, da der Block als Rahmenpuffer-bezogen adressiert betrachtet wird.The host processor queries a specifier register in a step 460 to determine whether a destination block was addressed according to window-related addresses or frame buffer-related addresses. Similarly, the host processor queries a specifier register in a step 465 to determine whether a source block was addressed according to window-related or frame buffer-related addresses. If the blocks have been addressed according to the frame buffer-relative addresses, a "zero" window offset is applied in a step 470 which effectively does not change the block addresses since the block is considered to be addressed frame buffer-relatively.
Wenn das Spezifikatorregister jedoch anzeigt, daß die Blöcke Fensteradreß-bezogen sind, werden Fensterversatzadressen in einem Schritt 480 auf den Block angewendet, so daß die Blöcke korrekt gemäß den Rahmenpuffer-bezogenen Adressen adressiert sind, bevor die Blöcke zu dem Bestimmungsort in dem Systemrahmenpuffer oder dem Bildschirm übergeben werden. Nachdem die Fensterversätze auf die Fenster-bezogenen adressierten Blöcke angewendet wurden, können die Blöcke in einem Schritt 490 zu ihren Bestimmungsorten in dem Rahmenpuffer übergeben werden.However, if the specifier register indicates that the blocks are window address-referred, window offset addresses are applied to the block in a step 480 so that the blocks are correctly addressed according to the frame buffer-referred addresses before the blocks are passed to the destination in the system frame buffer or the screen. After the window offsets are applied to the window address-referred blocks, the blocks can be passed to their destinations in the frame buffer in a step 490.
Bei weiteren bevorzugten Ausführungsbeispielen werden die Blockfenster-Versatzadressen durch den Pipeline-Umgehungsbus in den Adreßmanipulator geschrieben, und nicht durch den Graphik-Pipelinebus. Daher wird der Graphik-Pipelinebus nicht verwendet, um den Block relativ zu dem Rahmenpuffer zu adressieren und ist folglich frei, um Graphik-Grundelementaufbereitungen für Blöcke und Fenster vollständig gemäß den Fenster-bezogenen Adressen durchzuführen.In further preferred embodiments, the block window offset addresses are written to the address manipulator by the pipeline bypass bus, and not by the graphics pipeline bus. Therefore, the graphics pipeline bus is not used to address the block relative to the frame buffer and is thus free to perform graphics primitive renderings for blocks and windows entirely according to the window-related addresses.
Verfahren und Systeme, die gemäß dieser Erfindung geliefert werden, reduzieren die Pipeline-Latenz, da jedes Fenster tatsächlich als eine virtuelle Vorrichtung in dem System behandelt wird. Außerdem lösen Verfahren und Vorrichtungen, die gemäß der vorliegenden Erfindung geschaffen sind, einen in der Technik seit langem bekannten Bedarf nach Graphik- Pipelines, die den Bedarf nach einer Pipeline-Räumung beseitigen, da die Zeit-verbrauchende Aufgabe des Addierens von Fensterversätzen zu Fenster-bezogen adressierten Blöcken und des Erhaltens von Rahmenpuffer-bezogen adressierten Blöcken beseitigt ist. Dieses Ziel wird durch das Implementieren eines Graphik-Pipelinebusses erreicht, der eine Hardware auf weist, die angepaßt ist, um diese Aufgaben durchzuführen.Methods and systems provided in accordance with this invention reduce pipeline latency because each window is effectively treated as a virtual device in the system. In addition, methods and devices provided in accordance with the present invention solve a long-known need in the art for graphics pipelines that eliminate the need for pipeline flushing because the time-consuming task of adding window offsets to window-addressed blocks and obtaining frame buffer-addressed blocks is eliminated. This goal is achieved by implementing a graphics pipeline bus that utilizes hardware on adapted to perform these tasks.
Neuere Graphikfenstersysteme mit Graphik-Pipelines zeigen einen Bedarf nach der Fähigkeit, große Pixeldatenmengen zu und von dem Systemspeicher zu bewegen. Softwarelösungen, die früheren Graphiksystemen die Fähigkeit gaben, große Datenmengen auf diese Weise zu bewegen, benötigen eine übermäßige Prozessorzeitmenge, um diese Funktion zu erreichen. Folglich erfüllen frühere Fenstersysteme, die eine Graphik-Pipeline mit einer Spezialzweck-Software verwenden, um die Fähigkeit der Bewegung großer Datenblöcke zu liefern, den in der Technik seit langem bekannten Bedarf nach Graphikfenstersystemen, die große Datenblöcke wirksam bewegen können, ohne den Hostprozessor und die Graphik-Pipeline übermäßig zu belasten, nicht.Newer graphics windowing systems with graphics pipelines demonstrate a need for the ability to move large amounts of pixel data to and from system memory. Software solutions that gave earlier graphics systems the ability to move large amounts of data in this way require an excessive amount of processor time to achieve this function. Consequently, earlier windowing systems that use a graphics pipeline with special-purpose software to provide the ability to move large blocks of data do not meet the long-recognized need in the art for graphics windowing systems that can efficiently move large blocks of data without placing undue burden on the host processor and graphics pipeline.
Wie in Fig. 8 gezeigt ist, ist gemäß dieser Erfindung ein "Bündel"-Daten-Hardwareblock 500 vorgesehen, der schnittstellenmäßig in einem Pipeline-Umgehungsbus 90 verschaltet und zwischen dem Hostprozessor 20 und dem Pixel-Cache 230 angeordnet ist. Der Datenblock 500 wird als ein "Bündel"- Datenblock bezeichnet, da der Hostprozessor 20 den Datenblock 500 mit extrem großen Blöcken von Daten durch den Pipeline-Umgehungsbus 90 laden kann. Im allgemeinen können diese großen Blöcke von Daten Graphik-Animationsdaten aufweisen, die in den Rahmenpuffer geschrieben werden. Diese großen Blöcke von Daten sind als mehrere Reihen von Pixeln, die als "Abtastlinien" bezeichnet werden, organisiert. Die Daten sind in dem Hostprozessorspeicher als ein Array von Daten organisiert, wobei die erste Date das äußerste linke Pixel der ersten Abtastlinie ist, dann fortschreitend entlang der Abtastlinie zu dem äußersten rechten Pixel der ersten Abtastlinie, dann zurück zu dem äußersten linken Pixel der zweiten Abtastlinie, usw. Dies bildet ein zweidimensionales Array von Pixeldaten, die zu dem Rahmenpuffer gesendet werden sollen.As shown in Figure 8, in accordance with this invention, a "burst" data hardware block 500 is provided that is interfaced to a pipeline bypass bus 90 and located between the host processor 20 and the pixel cache 230. The data block 500 is referred to as a "burst" data block because the host processor 20 can load the data block 500 with extremely large blocks of data through the pipeline bypass bus 90. Generally, these large blocks of data may include graphics animation data that is written to the frame buffer. These large blocks of data are organized as multiple rows of pixels called "scan lines." The data is organized in the host processor memory as an array of data, with the first data being the leftmost pixel of the first scan line, then progressing along the scan line to the rightmost pixel of the first scan line, then back to the leftmost pixel of the second scan line, etc. This forms a two-dimensional array of pixel data to be sent to the frame buffer.
Das Bündel besteht aus einer Anzahl von Zuerst-Hinein-Zu erst-Heraus-Registern (FIFO-Registern), die bei 510 gezeigt sind. Die FIFOs sind in Bänken organisiert. Es existieren von 1 bis "n" Bänke von FIFOs. Jede FIFO-Bank puffert Pixel entlang der Abtastlinie. Die Anzahl von Pixeln, die entlang einer Abtastlinie gepuffert wird, ist abhängig von der Tiefe der FIFOs. Mehrere Abtastlinien, gleich der Anzahl von FIFO-Bänken, können gepuffert werden. Das Eingangstor und das Ausgangstor der FIFOs arbeiten unabhängig. Daten werden von dem Hostprozessor 20 unabhängig zu den FIFO-Eingangstoren übertragen und parallel zu Daten, die von den FIFO-Ausgangstoren zu dem Pixel-Cache 230 übertragen werden.The bundle consists of a number of first-in-to first-out (FIFO) registers shown at 510. The FIFOs are organized in banks. There are from 1 to "n" banks of FIFOs. Each FIFO bank buffers pixels along the scan line. The number of pixels buffered along a scan line depends on the depth of the FIFOs. Multiple scan lines, equal to the number of FIFO banks, can be buffered. The input port and output port of the FIFOs operate independently. Data is transferred from the host processor 20 to the FIFO input ports independently and in parallel with data transferred from the FIFO output ports to the pixel cache 230.
Die Bänke sind parallel verschaltet, wie aus dem Pipeline- Umgehungsbus 90 zu sehen ist der Hostprozessor 20 schreibt Daten von einer Abtastlinie von Daten in das Eingangstor von einer der FIFO-Bänke, bis diese FIFO-Bank voll ist. Der Hostprozessor schreibt dann Daten von der nächsten Abtastlinie von Daten in das Eingangstor der nächsten FIFO-Bank.The banks are connected in parallel as seen from the pipeline bypass bus 90. The host processor 20 writes data from a scan line of data into the input port of one of the FIFO banks until that FIFO bank is full. The host processor then writes data from the next scan line of data into the input port of the next FIFO bank.
Wenn in allen FIFO-Bänken Daten verfügbar sind, kann die Datenübertragung von dem Ausgangstor der FIFOs 510 zu dem Pixel-Cache beginnen. Dies geschieht parallel zu dem Senden von Daten des Hostprozessors 20 zu dem Eingangstor der FIFOs 510. Der Pixel-Cache 230 ist schnittstellenmäßig mit dem VRAM 70 verbunden, um zu ermöglichen, daß Daten in dem Bündel 500 in den Rahmenpuffer geschrieben werden.When data is available in all FIFO banks, data transfer from the output port of FIFOs 510 to the pixel cache can begin. This occurs in parallel with the host processor 20 sending data to the input port of FIFOs 510. Pixel cache 230 interfaces with VRAM 70 to allow data in burst 500 to be written to the frame buffer.
Die Graphik-Pipeline 50 wird dann geschlossen und die Pixeldatenübertragung von der Graphik-Pipeline 50 in den Rahmenpuffer 70 wird ausgesetzt, während die Datenübertragung von dem Bündel 500 aktiv ist. Da das Bündel 500 durch den Pipeline-Umgehungsbus 90 schnittstellenmäßig mit dem Pixel-Cache 230 verbunden ist, ist der Bedarf danach, die Graphik-Pipeline zu räumen, beseitigt.The graphics pipeline 50 is then closed and pixel data transfer from the graphics pipeline 50 to the frame buffer 70 is suspended while data transfer from the bundle 500 is active. Since the bundle 500 is interfaced to the pixel cache 230 by the pipeline bypass bus 90, the need to flush the graphics pipeline is eliminated.
Wenn nur eine Unter-Region "Unter-Block" des zweidimensionalen Bereichs von Pixeldaten zu dem Rahmenpuffer gesendet werden soll, ist eine Möglichkeit, um Daten von dem linken und dem rechten Rand abzuschneiden, vorgesehen. Zwei zusätzliche Versatzoperanden von dem Hostprozessor werden in den Adreßmanipulator 230 geschrieben. Die Versätze spezifizieren die Anzahl von Pixeln entlang einer Abtastlinie von dem Beginn der Abtastlinie zu dem rechten Rand und dem linken Rand des gewünschten Unter-Blocks von Daten. Diese Versätze weisen den Adreßmanipulator an, die Daten, die von den FIFOs 510 zu dem Pixel-Cache 230 übertragen werden, abzuschneiden; d. h. rechts oder links von dem gewünschten Unter-Block von Daten.If only a sub-region "sub-block" of the two-dimensional area of pixel data is to be sent to the frame buffer, one way is to send data from the left and the right edge. Two additional offset operands from the host processor are written to the address manipulator 230. The offsets specify the number of pixels along a scan line from the start of the scan line to the right edge and the left edge of the desired sub-block of data. These offsets instruct the address manipulator to truncate the data transferred from the FIFOs 510 to the pixel cache 230; ie, to the right or left of the desired sub-block of data.
Bei bevorzugten Ausführungsbeispielen besteht das Bündel 500 aus einer Anzahl von Zuerst-Hinein-Zuerst-Heraus-Registern (FIFO-Registern), die allgemein bei 510 gezeigt sind. Die FIFOs 510 sind in dem Bündelblock 500 parallel miteinander verbunden. Die FIFOs 510 sind mit dem Pipeline-Umgehungsbus 90 schnittstellenmäßig verbunden, so daß der Hostprozessor 20 große Datenblöcke parallel zu jedem der FIFOs 510 bewegen kann. Die Datenmenge, die von dem Hostprozessor 20 zu dem Bündel 500 geleitet wird, ist nur durch die Anzahl von FIFOs begrenzt, die parallel in dem Bündelblock verschaltet sind.In preferred embodiments, the bundle 500 consists of a number of first-in-first-out (FIFO) registers, shown generally at 510. The FIFOs 510 are connected in parallel in the bundle block 500. The FIFOs 510 are interfaced with the pipeline bypass bus 90 so that the host processor 20 can move large blocks of data in parallel to each of the FIFOs 510. The amount of data passed from the host processor 20 to the bundle 500 is limited only by the number of FIFOs connected in parallel in the bundle block.
Das Bündel 500 ist schnittstellenmäßig mit dem Pixel-Cache 230 verbunden, so daß dasselbe die Daten in den FIFOs 510 zu dem Pixel-Cache 230 übertragen kann, nachdem der Hostprozessor 20 die gewünschten Daten in die FIFOs 510 geschrieben hat. Der Pixel-Cache 230 ist schnittstellenmäßig mit dem VRAM 70 verbunden, um zu ermöglichen, daß Daten in dem Bündel 500 an den Rahmenpuffer übergeben werden. Da das Bündel 500 schnittstellenmäßig durch den Pipeline-Umgehungsbus 90 mit dem Pixel-Cache verbunden ist, ist die Graphik-Pipeline 50 frei, um eine Fenster-bezogene Aufbereitung anderer Graphikgrundelemente, die von dem Hostprozessor ausgegeben werden, durchzuführen. Daher reduziert die Verwendung des Bündels 500, das schnittstellenmäßig mit dem Graphik-Pipeline- Umgehungsbus 90 verbunden ist, die Graphik-Pipeline-Latenz und beseitigt den Bedarf danach, die Pipeline 50 zu räumen, wenn ein Kontextschalten für die Daten in dem Bündel 500 er wünscht ist.The bundle 500 is interfaced with the pixel cache 230 so that it can transfer the data in the FIFOs 510 to the pixel cache 230 after the host processor 20 has written the desired data into the FIFOs 510. The pixel cache 230 is interfaced with the VRAM 70 to allow data in the bundle 500 to be passed to the frame buffer. Since the bundle 500 is interfaced with the pixel cache by the pipeline bypass bus 90, the graphics pipeline 50 is free to perform window-related rendering of other graphics primitives output by the host processor. Therefore, the use of the bundle 500 interfaced with the graphics pipeline bypass bus 90 reduces the graphics pipeline latency and eliminates the need to flush the pipeline 50 when a context switch is required for the data in the bundle 500. is desired.
Bei weiteren bevorzugten Ausführungsbeispielen ist der Adreßmanipulator 250 vorgesehen, der schnittstellenmäßig auf dem Pipeline-Umgehungsbus 90 verschaltet und zwischen dem Hostprozessor 20 und dem VRAM 70 angeordnet ist. Der Adreßmanipulator wirkt wie oben beschrieben und bereitet die Daten in dem Bündel 500 gemäß den Rahmenpuffer-bezogenen Adressen in dem VRAM 70 auf. Es ist notwendig, den Adreßmanipulator 250 zu verwenden, da die Daten, die von dem Hostprozessor 20 in die FIFOs 510 in dem Bündel 500 geschrieben werden, in Fenster-bezogenen Adressen auftreten können. Folglich schreibt der Hostprozessor 20 Fensterversatzadressen für die Daten in den FIFOs 510 in ein Datenregister in dem Adreßmanipulator, so daß der Adreßmanipulator 250 die Daten in den FIFOs 510 gemäß den Rahmenpuffer-bezogenen Adressen in dem VRAM 70 aufbereiten kann.In further preferred embodiments, the address manipulator 250 is provided, interfaced on the pipeline bypass bus 90 and located between the host processor 20 and the VRAM 70. The address manipulator operates as described above and conditions the data in the burst 500 according to the frame buffer-related addresses in the VRAM 70. It is necessary to use the address manipulator 250 because the data written by the host processor 20 into the FIFOs 510 in the burst 500 may appear in window-related addresses. Accordingly, the host processor 20 writes window offset addresses for the data in the FIFOs 510 into a data register in the address manipulator so that the address manipulator 250 can prepare the data in the FIFOs 510 according to the frame buffer-related addresses in the VRAM 70.
Der Adreßmanipulator 250 richtet ferner Daten, die in die FIFOs 510 geschrieben sind, auf den Rahmenpuffer aus. Die Ausrichtung wird durch einen zusätzlichen Versatzoperanden von dem Hostprozessor 20 erreicht, der in den Adreßmanipulator 250 geschrieben wird, welcher den Adreßmanipulator anweist, Daten in den FIFOs 510 abzuschneiden, die in den Pixel-Cache 230 eingegeben werden und die aus den spezifizierten Blöcken in dem Rahmenpuffer 240 fallen, wenn die Daten aufbereitet werden. Bei bevorzugten Ausführungsbeispielen ist das Abschneiden notwendig, da die Blockdatenausgabe von dem Bündel 500 möglicherweise groß genug ist, um aus den speziellen Bestimmungsadressen in dem Rahmenpuffer zu fallen.The address manipulator 250 also aligns data written to the FIFOs 510 to the frame buffer. The alignment is accomplished by an additional offset operand from the host processor 20 written to the address manipulator 250, which instructs the address manipulator to truncate data in the FIFOs 510 that is input to the pixel cache 230 and that falls out of the specified blocks in the frame buffer 240 when the data is rendered. In preferred embodiments, the truncation is necessary because the block data output from the burst 500 may be large enough to fall out of the specific destination addresses in the frame buffer.
In Fig. 9A ist ein Flußdiagramm eines bevorzugten Ausführungsbeispiels der Übertragung von großen Datenblöcken von einem Hostprozessor zu einem Bündelblock gezeigt. Die Blockbestimmungsadressen werden durch die Pipeline-Umgehung in einem Schritt 520 in den Adreßmanipulator geschrieben. In gleicher Weise wird die Blockgröße in einem Schritt 530 durch den Pipeline-Umgehungsbus von dem Hostprozessor in den Adreßmanipulator geschrieben. Es ist dann erwünscht, die Versätze des linken Rands und des rechten Rands durch die Pipeline-Umgehung in einem Schritt 540 in den Adreßmanipulator zu schreiben.In Fig. 9A, a flow chart of a preferred embodiment of the transfer of large data blocks from a host processor to a burst block is shown. The block destination addresses are written to the address manipulator by the pipeline bypass in a step 520. Similarly, the block size is determined in a step 530. through the pipeline bypass bus from the host processor to the address manipulator. It is then desirable to write the left edge and right edge offsets through the pipeline bypass to the address manipulator in a step 540.
Die Versätze des linken Rands und des rechten Rands werden dann in einem Schritt 540 durch den Pipeline-Umgehungsbus in den Adreßmanipulator geschrieben. In einem Schritt 550 fragt der Hostprozessor die FIFOs ab, um zu bestimmen, ob in den FIFOs Platz ist. Wenn in den FIFOs kein Platz existiert, muß der Prozeß warten. Wenn jedoch Platz in den FIFOs existiert, fragt der Hostprozessor, ob Daten existieren, die in einem Schritt 560 übertragen werden sollen. Wenn keine Daten existieren, die übertragen werden sollen, endet der Prozeß. Wenn jedoch Daten existieren, die übertragen werden sollen, wird in einem Schritt 570 eine einzelne Date übertragen. Auf diese Weise können Daten von dem Hostprozessor in den Bündelblock übertragen werden.The left edge and right edge offsets are then written to the address manipulator through the pipeline bypass bus in a step 540. In a step 550, the host processor polls the FIFOs to determine if there is room in the FIFOs. If there is no room in the FIFOs, the process must wait. However, if there is room in the FIFOs, the host processor polls if there is data to be transferred in a step 560. If there is no data to be transferred, the process ends. However, if there is data to be transferred, a single data is transferred in a step 570. In this way, data can be transferred from the host processor into the burst block.
In Fig. 9B ist ein bevorzugtes Ausführungsbeispiel eines Flußdiagramms zum Übertragen von Daten von einem Bündelblock zu einem Pixel-Cache gezeigt. Der Hostprozessor fragt den Bündelblock in einem Schritt 580 ab, um zu bestimmen, ob Daten in allen FIFOs verfügbar sind. Wenn nicht Daten von allen FIFOs verfügbar sind, muß der Prozeß warten. Wenn jedoch Daten von allen FIFOs verfügbar sind, werden Übertragungen einer einzelnen Date von dem Bündelblock zu dem Pixel-Cache in einem Schritt 590 durchgeführt. Der Hostprozessor fragt dann das System in einem Schritt 600 ab, um zu bestimmen, ob alle Daten übertragen wurden. Wenn alle Datenübertragungen stattgefunden haben, endet der Prozeß.In Figure 9B, a preferred embodiment of a flow chart for transferring data from a burst block to a pixel cache is shown. The host processor polls the burst block in a step 580 to determine if data is available in all FIFOs. If data is not available from all FIFOs, the process must wait. However, if data is available from all FIFOs, transfers of a single data from the burst block to the pixel cache are performed in a step 590. The host processor then polls the system in a step 600 to determine if all data has been transferred. When all data transfers have occurred, the process ends.
Wenn der Block nicht ausgerichtet ist, müssen die Daten, die aus dem Fenster fallen, von dem Block abgeschnitten werden, so daß dieselben nicht unerlaubterweise außerhalb des Fensters auf dem Bildschirm aufbereitet werden. Auf diese Weise können die Bündeldaten durch die Pipeline-Umgehung an den Rahmenpuffer übergeben werden, wodurch die Graphik-Pipeline von Operationen einer hohen Zusatzbelastung befreit wird. Daher erfüllen die Bündelübertragungsoperationen, die gemäß dieser Erfindung geliefert werden, einen in der Technik seit langem bekannten Bedarf nach Fenstersystemen, die die Fähigkeit aufweisen, eine große Pixeldatenmenge auf eine wirksame Art und Weise durch das System zu bewegen.If the block is not aligned, the data that falls outside the window must be clipped from the block so that it is not illegally rendered outside the window on the screen. In this way, the bundle data can be piped to the frame buffer, thereby freeing the graphics pipeline from high overhead operations. Therefore, the burst transfer operations provided in accordance with this invention fulfill a long-recognized need in the art for windowing systems having the ability to move a large amount of pixel data through the system in an efficient manner.
Verfahren und Vorrichtungen, die gemäß dieser Erfindung geliefert werden, die Hardwarelösungen für Pipeline-Umgehungsbusse in Fenstersystemen, die eine Graphik-Pipeline verwenden, implementieren, erfüllen einen in der Technik seit langem bekannten Bedarf nach Verfahren und Systemen, die den Bedarf nach einer Pipeline-Räumung beseitigen und die Pipeline-Latenz reduzieren. Diese seit langem bekannten Bedürfnisse wurden durch frühere Graphikfenstersysteme, die Softwarelösungen verwenden, in der Technik nicht erfüllt. Graphikfenstersysteme gemäß dieser Erfindung, die Graphik-Pipelines verwenden, zeigen eine wesentliche Verbesserung verglichen mit früheren neuartigen Systemen, die Graphikgrundelemente für einen Rahmenpuffer oder einen Bildschirm aufbereiten. Die Graphikfenstersysteme, die gemäß dieser Erfindung geschaffen werden, behandeln Fenster als virtuelle Graphikvorrichtungen, wodurch der Bedarf nach einer Pipeline- Räumung während eines Kontextschaltens beseitigt ist und die Pipeline-Latenz stark reduziert ist.Methods and apparatus provided in accordance with this invention that implement hardware solutions for pipeline bypass buses in windowing systems using a graphics pipeline meet a long-known need in the art for methods and systems that eliminate the need for pipeline flushing and reduce pipeline latency. These long-known needs have not been met in the art by prior graphics windowing systems using software solutions. Graphics windowing systems in accordance with this invention that use graphics pipelines demonstrate a significant improvement over prior novel systems that render graphics primitives to a frame buffer or a screen. The graphics windowing systems provided in accordance with this invention treat windows as virtual graphics devices, thereby eliminating the need for pipeline flushing during context switching and greatly reducing pipeline latency.
Somit wurden bestimmte bevorzugte Ausführungsbeispiele von Verfahren und Vorrichtungen zum Beschleunigen des Graphikaufbereitens in Graphikfenstersystemen beschrieben.Thus, certain preferred embodiments of methods and apparatus for accelerating graphics rendering in graphics windowing systems have been described.
Claims (25)
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US38751089A | 1989-07-28 | 1989-07-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69033283D1 DE69033283D1 (en) | 1999-10-14 |
DE69033283T2 true DE69033283T2 (en) | 1999-12-30 |
Family
ID=23530194
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE1990633283 Expired - Fee Related DE69033283T2 (en) | 1989-07-28 | 1990-07-27 | Method and device for accelerating picture windows in graphic systems |
DE69028259T Expired - Fee Related DE69028259T2 (en) | 1989-07-28 | 1990-07-27 | Method and device for accelerating picture windows in graphic systems |
DE1990633158 Expired - Fee Related DE69033158T2 (en) | 1989-07-28 | 1990-07-27 | Method and device for accelerating picture windows in graphic systems |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69028259T Expired - Fee Related DE69028259T2 (en) | 1989-07-28 | 1990-07-27 | Method and device for accelerating picture windows in graphic systems |
DE1990633158 Expired - Fee Related DE69033158T2 (en) | 1989-07-28 | 1990-07-27 | Method and device for accelerating picture windows in graphic systems |
Country Status (2)
Country | Link |
---|---|
EP (4) | EP0410783B1 (en) |
DE (3) | DE69033283T2 (en) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE4405330A1 (en) * | 1994-02-21 | 1995-08-24 | Vobis Microcomputer Ag | Method for scrolling multiple raster lines in a window of a graphics mode operated screen of a personal computer |
KR20080031595A (en) * | 2006-10-04 | 2008-04-10 | 삼성전자주식회사 | Off-screen buffering management device and method |
US20160104263A1 (en) * | 2014-10-09 | 2016-04-14 | Media Tek Inc. | Method And Apparatus Of Latency Profiling Mechanism |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2582132B1 (en) * | 1985-05-15 | 1987-07-17 | O Donnell Ciaran | VIRTUAL IMAGE MEMORY CIRCUIT FOR MULTI-WINDOWING |
US4811245A (en) * | 1985-12-19 | 1989-03-07 | General Electric Company | Method of edge smoothing for a computer image generation system |
US4829294A (en) * | 1986-06-25 | 1989-05-09 | Hitachi, Ltd. | Document processing method and system using multiwindow |
US4823286A (en) * | 1987-02-12 | 1989-04-18 | International Business Machines Corporation | Pixel data path for high performance raster displays with all-point-addressable frame buffers |
GB2203317B (en) * | 1987-04-02 | 1991-04-03 | Ibm | Display system |
US4903218A (en) * | 1987-08-13 | 1990-02-20 | Digital Equipment Corporation | Console emulation for a graphics workstation |
US4814884A (en) * | 1987-10-21 | 1989-03-21 | The United States Of America As Represented By The Secretary Of The Air Force | Window generator |
JPH0727571B2 (en) * | 1987-10-26 | 1995-03-29 | テクトロニックス・インコーポレイテッド | Raster scan display device and graphic data transfer method |
-
1990
- 1990-07-27 EP EP19900308257 patent/EP0410783B1/en not_active Expired - Lifetime
- 1990-07-27 DE DE1990633283 patent/DE69033283T2/en not_active Expired - Fee Related
- 1990-07-27 EP EP94201810A patent/EP0617402B1/en not_active Expired - Lifetime
- 1990-07-27 DE DE69028259T patent/DE69028259T2/en not_active Expired - Fee Related
- 1990-07-27 DE DE1990633158 patent/DE69033158T2/en not_active Expired - Fee Related
- 1990-07-27 EP EP94201809A patent/EP0617401A3/en not_active Withdrawn
- 1990-07-27 EP EP94201808A patent/EP0617400B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0617402B1 (en) | 1999-06-09 |
EP0617402A2 (en) | 1994-09-28 |
EP0410783A3 (en) | 1991-07-10 |
DE69033158D1 (en) | 1999-07-15 |
EP0410783B1 (en) | 1996-08-28 |
EP0410783A2 (en) | 1991-01-30 |
DE69033283D1 (en) | 1999-10-14 |
DE69028259D1 (en) | 1996-10-02 |
EP0617400B1 (en) | 1999-09-08 |
EP0617402A3 (en) | 1995-04-26 |
EP0617400A3 (en) | 1995-04-26 |
EP0617401A3 (en) | 1995-04-26 |
EP0617400A2 (en) | 1994-09-28 |
DE69028259T2 (en) | 1997-01-23 |
EP0617401A2 (en) | 1994-09-28 |
DE69033158T2 (en) | 1999-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102013016871B4 (en) | Technology to increase efficiency in multi-line processing facilities | |
DE69132041T2 (en) | Triangular interpolator | |
DE69129684T2 (en) | Image processing | |
DE69122147T2 (en) | Method and device for clipping pixels from source and target windows in a graphic system | |
DE69728002T2 (en) | Control processor for a three-dimensional accelerator that has the capability of geometric decompression and method for processing geometric data in this accelerator | |
DE3850955T2 (en) | Display system with a window mechanism. | |
DE69729916T2 (en) | DYNAMIC IMAGE SIZE CHANGE | |
DE69725057T2 (en) | Floating point processor for a three-dimensional graphic accelerator | |
DE3587461T2 (en) | Circuit for modifying data in a display memory. | |
DE102013017640A1 (en) | Distributed tiled caching | |
DE102018132468A1 (en) | MULTI-GPU FRAME RENDERING | |
DE102009047518B4 (en) | Computer system and method suitable for avoiding data communication jamming situations by marking CPU traffic as special | |
DE60105510T2 (en) | IMAGING DEVICE | |
DE3855234T2 (en) | HIGH-PERFORMANCE GRAPHIC TERMINAL AND OPERATING METHOD THEREFOR | |
DE19709227B4 (en) | A method of quickly downloading textures to accelerated graphics hardware and eliminating additional software copies of texels | |
DE3851285T2 (en) | Display control system. | |
DE102009039231A1 (en) | Single pass tiling | |
DE102013018139A1 (en) | Technique for storing common vertices | |
DE19709220A1 (en) | Accelerated occlusion culling process for computer graphics system | |
EP1227444A1 (en) | Method of rasterizing a graphics basic component | |
DE60106301T2 (en) | METHOD AND SYSTEM FOR EXPORTING DATA ASSOCIATIONS TO TWO-DIMENSIONAL OR THREE-DIMENSIONAL GEOMETRIC ENTITIES | |
DE102013018445A1 (en) | Defining a subordinate imaging state in an upstream shading entity | |
DE102016109905A1 (en) | Piecewise linear irregular rasterization | |
DE102013020968A1 (en) | Technique for accessing a content-addressable memory | |
DE102013018136A1 (en) | Technique for storing common vertices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE), |
|
8327 | Change in the person/name/address of the patent owner |
Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE |
|
8339 | Ceased/non-payment of the annual fee |