DE102013014846A1 - Systeme und Verfahren zur teilweisen Rahmenpufferaktualisierung - Google Patents

Systeme und Verfahren zur teilweisen Rahmenpufferaktualisierung Download PDF

Info

Publication number
DE102013014846A1
DE102013014846A1 DE102013014846.4A DE102013014846A DE102013014846A1 DE 102013014846 A1 DE102013014846 A1 DE 102013014846A1 DE 102013014846 A DE102013014846 A DE 102013014846A DE 102013014846 A1 DE102013014846 A1 DE 102013014846A1
Authority
DE
Germany
Prior art keywords
pixel data
memory
data
pixel
rendering
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.)
Pending
Application number
DE102013014846.4A
Other languages
English (en)
Inventor
John A. Metcalfe
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of DE102013014846A1 publication Critical patent/DE102013014846A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control 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/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory

Abstract

Aspekte umfassen eine Pixelquelle, die Daten für eine wiedergegebene Oberfläche erzeugt, die in Bereiche unterteilt ist. Eine Abbildung identifiziert Speichersegmente, die Pixeldaten für jeden Bereich der Oberfläche speichern. Die Abbildung kann Speichersegmente, die Pixeldaten aus einer vorherigen wiedergegebenen Oberfläche speichern, für Bereiche, die während der Wiedergabe unverändert waren, identifizieren. Ein solcher geänderter/unveränderter Zustand wird auf einer bereichsweisen Basis verfolgt. Ein Zähler kann für alle Speichersegmente unterhalten werden, um zu verfolgen, wie viele Oberflächen darin gespeicherte Pixeldaten verwenden. Eine Sammlung von freien Speichersegmenten kann unterhalten werden. Das Lesen einer Oberfläche, wie z. B. um eine wiedergegebene Oberfläche durch eine Anzeigesteuereinheit anzuzeigen, umfasst das Identifizieren und Lesen der Abbildung, um jedes Speichersegment zu identifizieren, das Pixeldaten für Bereiche der Oberfläche speichert, das Lesen von diesen und Aktualisieren der Zähler für die Speichersegmente, die gelesen wurden.

Description

  • HINTERGRUND
  • Gebiet:
  • Das Folgende bezieht sich auf Graphikverarbeitung, Graphikverarbeitungssysteme wie z. B. Graphikprozessoreinheiten (GPUs) und in speziellen Beispielaspekten Zusammensetzungs- und Bilderzeugungstechniken.
  • Stand der Technik:
  • Puffer, die verwendet werden, um Daten zu speichern, die darauf warten, dass sie an eine Anzeige ausgegeben werden, werden typischerweise ”Rahmenpuffer” genannt, die ein Konzept einer Anzeige eines Rahmens einer zeitlichen Sequenz von Rahmen hervorrufen, wobei ein ”Rahmen” ein vollständiger Satz von Pixeldaten ist. In einigen Rechenarchitekturen können Rahmenpuffer auch als Quelle von Daten dienen, die weiter verarbeitet werden sollen, wie z. B. durch eine GPU.
  • In einem solchen Fall kann eine GPU Daten aus einem Rahmenpuffer (z. B. einem Ort in einem Speicher, der Bilddaten wie z. B. ein Bitmap speichert) lesen und diese Daten zusammen mit anderen Daten verwenden, um ein zusammengesetztes Bild zu erzeugen. Die GPU schreibt dann Daten, die das ganze zusammengesetzte Bild darstellen, in einen Ausgangsrahmenpuffer. Eine Anzeigesteuereinheit kann das zusammengesetzte Bild aus dem Ausgangsrahmenpuffer lesen und bewirken, dass das zusammengesetzte Bild angezeigt wird. Folglich wird ein ganzer Pixeldatensatz gespeichert, um jeden anzeigbaren Rahmen darzustellen.
  • Als konkreteres Beispiel kann ein herkömmliches Wiedergabe- und Anzeigesystem eingerichtet werden, um eine Dreifachpuffermethode zu implementieren, bei der drei Speicherabschnitte reserviert sind, die jeweils unabhängig in der Lage sind, einen anzeigbaren Rahmen mit voller Auflösung zu halten (z. B. Puffer 0, 1 und 2), und in einer Umschaltkette angeordnet sind. Ein Graphikprozessor kann beispielsweise anzuzeigende aufeinander folgende Rahmen in die Puffer 0, 1 und 2 schreiben und dann erneut bei 0 beginnen. Ebenso liest eine Anzeigesteuereinheit die Puffer 0, 1 und 2, bevor sie zum erneuten Lesen des Puffers 0 zurückkehrt. Wenn Pixeldaten zwischen irgendeinem oder mehreren der Puffer 0, 1 und 2 gleich sind, werden diese Pixeldaten in allen Puffern, in denen sie erscheinen, wiederholt.
  • KURZFASSUNG
  • In Implementierungen gemäß der Offenbarung umfassen Daten, die mehrere Wiedergabeoberflächen (z. B. einen Rahmen von anzuzeigenden Pixeldaten) darstellen, einen jeweiligen Satz von Abbildungen zwischen Oberflächenbereichen und Speichersegmenten für diese Wiedergabeoberfläche. Jede Wiedergabeoberfläche kann als Kombination von Pixeldaten von Bereichen einer vorherigen Oberfläche und Bereichen von Pixeldaten, die als anders als Pixeldaten von der vorherigen Oberfläche bestimmt werden, dargestellt werden.
  • Als Beispiel umfasst ein Verfahren zur Wiedergabe das Speichern von Daten, die eine erste wiedergegebene Oberfläche darstellen, einschließlich Speichersegmenten, die Pixeldaten für jeweilige Bereiche der ersten wiedergegebenen Oberfläche speichern, und einer Abbildung zwischen den Bereichen und den jeweiligen Speichersegmenten. Das Verfahren umfasst auch ein Verfolgen einer Anzahl von wiedergegebenen Oberflächen, die Pixeldaten in jedem Speichersegment verwenden. Um Daten, die eine anschließende wiedergegebene Oberfläche darstellen, die Bereiche von Pixeldaten aufweist, die Bereichen von Pixeldaten in der ersten wiedergegebenen Oberfläche entsprechen, zu speichern, umfasst das Verfahren ein Bestimmen, welche Bereiche in der anschließenden wiedergegebenen Oberfläche Pixeldaten aufweisen, die von der ersten wiedergegebenen Oberfläche unverändert sind, und welche Bereiche andere Pixeldaten aufweisen. Für die Bereiche mit denselben Pixeldaten wird eine Abbildung für die anschließende wiedergegebene Oberfläche erzeugt, um einen Verweis auf dasselbe Speichersegment wie die erste Oberfläche einzuschließen. Für Bereiche mit unterschiedlichen Pixeldaten werden solche Pixeldaten in Speichersegmente geschrieben, die aus einer Sammlung von freien Segmenten erhalten werden, und Verweise auf diese in der Abbildung vorgesehen. Zählwerte aller Speicheroberflächen, die Pixeldaten für die zweite Oberfläche speichern, werden unterhalten/gepflegt, was ein Inkrementieren eines Zählers für alle umfassen kann.
  • Um eine gemäß des obigen Verfahrens gespeicherte Oberfläche zu lesen, greift eine Vorrichtung auf die Abbildung für die Oberfläche zu, um zu bestimmen, wo (z. B. in einem durch eine spezielle Speicheradresse identifiziertes Speichersegment) jeder Bereich von Pixeldaten für diese Oberfläche gespeichert ist. Die Vorrichtung greift auf die Pixeldaten zu und aktualisiert die Verfolgung der Anzahl von Oberflächen, die Pixeldaten von diesen Speichersegmenten verwenden. Speichersegmente mit Pixeldaten, die nicht mehr von irgendeiner Oberfläche verwendet werden, können freigegeben werden, um sie zu einer Sammlung von freien Speichersegmenten zurückzugeben, die verfügbar sind, um Pixeldaten für weitere wiedergegebene Oberflächen zu empfangen.
  • Vorrichtungen können Verfahren gemäß der Offenbarung implementieren und umfassen Vorrichtungen, die sowohl als Quellen von Pixeln (”Pixelquellen”) als auch Verbraucher von Pixeln (”Pixelsenken”) funktionieren. Quellen von Pixeln können einen Videocodierer und eine GPU umfassen, während Verbraucher von Pixeln beispielsweise eine GPU und eine Anzeigesteuereinheit umfassen können. Vorrichtungen, die als Pixelquellen funktionieren, würden folglich Teile der Offenbarung in Bezug auf die Erzeugung (und potentiell Speicherung) von Daten implementieren, die Sequenzen von Bildern beschreiben, und Pixelsenken würden die Teile der Offenbarung in Bezug auf die Verwendung der erzeugten Daten für Bildverarbeitungs- oder Anzeigeoperationen implementieren.
  • Vorrichtungen, die Oberflächen lesen können, die gemäß diesen Aspekten geschrieben werden, können eine Anzeigesteuereinheit umfassen, die einen Zusatzspeicher innerhalb einer Anzeige verwendet. In einer solchen Situation kann eine Anzeigesteuereinheit einen weiteren Rahmen für die Anzeige durch Aktualisieren von nur Abschnitten eines solchen Zusatzspeichers, die geändert wurden, vorbereiten. Ob ein Abschnitt geändert wurde oder nicht, wird dadurch bestimmt, wie der Rahmen codiert ist (Verweise auf vorher geschriebene Daten oder neue Daten, die in einen Bereich des Speichers geschrieben werden). Welche Abschnitte des Rahmens aktualisiert werden, kann dadurch bestimmt werden, wie der Zusatzspeicher in einer speziellen Implementierung adressiert wird.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Verschiedene Merkmale und Aspekte der Offenbarung werden aus der folgenden ausführlichen Beschreibung besser ersichtlich, die in Verbindung mit den begleitenden Zeichnungen gelesen werden soll, in denen:
  • 1 einen Überblick über Funktionselemente eines Systems darstellt, in dem hier offenbarte Verfahrens- und Strukturaspekte ausgeführt werden können;
  • 2 einen zeitlichen Ablauf von anzeigbaren Rahmen darstellt, die aus einer oder mehreren Wiedergabeoberflächen (Oberfläche(n)) gemäß hier offenbarten Ausführungsformen konstruiert werden können;
  • 3 eine Darstellung von Daten darstellt, die eine erste Oberfläche definieren, die in Bereiche unterteilt ist;
  • 4 Beispielaspekte einer Pixelquelle, die eine Oberfläche wiedergibt und Bereiche der wiedergegebenen Oberfläche in Speichersegmenten speichert und eine Abbildung von Bereichen auf Speichersegmente erzeugt, und einer Pixelsenke, die Bereiche der wiedergegebenen Oberfläche verbraucht, darstellt;
  • 5 eine Darstellung einer zweiten Oberfläche darstellt, einschließlich Bereichen, die mit der ersten Oberfläche gemeinsam sind;
  • 6 Aspekte der Darstellung der zweiten Oberfläche unter Verwendung von Bereichen von Daten, die die erste Oberfläche darstellen, und einer modifizierten Abbildung von Bereichen auf Speichersegmente darstellt;
  • 7 weitere Aspekte der Speicherung von Oberflächenbereichen in Speichersegmenten darstellt;
  • 8 ein Beispielverfahren zum Bestimmen eines Satzes von Daten, die die zweite Oberfläche darstellen, auf der Basis von Daten, die die erste Oberfläche darstellen, und von Speichersegmenten, die Daten für Bereiche der zweiten Oberfläche mit anderen Pixeldaten als die erste Oberfläche speichern, darstellt;
  • 9 einen Beispielprozess zum Zugreifen auf eine Oberfläche von Pixeldaten wie z. B. zum Erzeugen eines anzeigbaren Rahmens gemäß Aspekten der Offenbarung darstellt;
  • 10 einen Beispieldatenfluss beim Implementieren des Prozesses von 9 darstellt;
  • 11 Aspekte eines Systems darstellt, in dem offenbarte Aspekte ausgeführt werden können; und
  • 12 Aspekte eines Beispielprozessors darstellt, der dazu ausgelegt sein kann, Aspekte der Offenbarung durchzuführen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Viele übliche Rechenvorrichtungen wie z. B. ein Desktop, Laptop, Tablet oder Mobiltelefon, umfassen ein Graphikuntersystem, das graphische Daten für eine Anzeige wie z. B. eine Flüssigkristallanzeige (LCD) oder eine andere geeignete Anzeigetechnologie erzeugen kann. Die Anzeige weist eine Auflösung auf, die typischerweise als Anzahl von horizontalen und vertikalen Pixeln gekennzeichnet ist, wie z. B. eine 1080p-Anzeige, die 1920 horizontale Pixel (Spalten) und 1080 vertikale Pixel (Zeilen) aufweist. Eine Bildwiederholfrequenz bestimmt, wie oft sich ein Bild, das auf der Anzeige angezeigt wird, ändert. Jedes unterschiedliche Bild, das auf der Anzeige angezeigt wird, kann als anzeigbarer Rahmen betrachtet werden.
  • Im Zusammenhang mit dem Speichern von Bilddaten im Speicher kann es nützlich sein, eine Speicheroberfläche als Ebene mit Pixelstellen zu konzipieren, die auf der Ebene gemäß einem Muster verteilt sind. Jede Pixelstelle hätte eine Menge an Speicher, die zum Speichern der Daten, die dieses Pixel darstellen, zugewiesen ist. Folglich würde für eine 1080p-Anzeige die Speicheroberfläche 1920×1080 Pixel jeweils mit einer bestimmten Menge an zugewiesenem Speicherplatz wie z. B. 4 Bytes umfassen. Die physikalische Implementierung einer solchen Speicheroberfläche kann sich jedoch zwischen Implementierungen unterscheiden und muss nicht dem konzeptionellen Modell folgen. Im Zusammenhang mit der Offenbarung wird eine Wiedergabeoberfläche in Bereiche unterteilt und jeder Bereich enthält einige der Pixel in der Oberfläche. Ein Bereich kann beispielsweise ein quadratischer 8×8-Pixelblock, ein Rechteck, ein vertikaler oder horizontaler Streifen von Pixeln und so weiter sein. Allgemeiner kann ein Bereich eine beliebige Form sein, obwohl erwartet wird, dass die Form ein Rechteck ist, wobei eine Höhe und Breite jeweils ein oder mehrere Pixel sind und typischerweise wenigstens eine Abmessung mehrere Pixel sind. Ein Bereich könnte aus diskontinuierlichen Pixeln gebildet sein, der Einfachheit halber beschreibt jedoch diese Beschreibung Beispielimplementierungen unter einer Annahme, dass Pixelbereiche kontinuierlich sind.
  • Eine Anzahl von Pixeln in einem Bereich und eine Länge gegenüber der Breite eines Bereichs können auf der Basis von Systemarchitekturerwägungen ausgewählt werden. Ein Konstruktionsziel kann beispielsweise darin bestehen, eine Speicherseitengröße an eine Menge an Speicher anzupassen, die erforderlich ist, um einen Bereich von Pixeln zu speichern. Es besteht jedoch keine Anforderung, dass ein Bereich von Pixeln in einem zusammenhängenden Speicherabschnitt gespeichert wird. Vielmehr hätte jeder Bereich von Pixeln eine bekannte relative Position zu den anderen Bereichen von Pixeln in einer Speicheroberfläche, so dass alle Pixel in der Speicheroberfläche durch Anordnen der Pixel der Bereiche gemäß diesen relativen Positionen dargestellt werden können. An sich würde ein Fachmann verstehen, dass die Pixelbereiche innerhalb einer Oberfläche jeweils ein logisches Gebilde einer speziellen Gruppierung von Pixeln sind, die in der Oberfläche zu finden sind.
  • In einigen Situationen ist eine Wiedergabeoberfläche zu einem anzeigbaren Rahmen kongruent, während in anderen Situationen eine Wiedergabeoberfläche ein Teil eines anzeigbaren Rahmens sein kann, einen anzeigbaren Rahmen und ”bildschirmexterne” Pixel umfassen kann oder Bilddaten sein kann, die wiedergegeben werden sollen und im Speicher gespeichert sind, oder beides. Pixeldaten können beispielsweise an eine Oberfläche wiedergegeben und zur Verwendung als Textur gespeichert und angezeigt werden.
  • 1 stellt eine konzeptionelle Ansicht einer Implementierung eines Systems 3 gemäß der Offenbarung dar. Das System 3 umfasst eine Pixelquelle 6 und eine Pixelsenke 7, die jeweils funktionieren, um Pixeldaten zu erzeugen und zu verbrauchen. Die Pixelquelle 6 kann aus einem Speicher 10 lesen und in diesen schreiben. Die Pixelquelle 6 kann Segmente des Pixelspeichers aus einer Sammlung von Speichersegmenten 12 lesen und schreiben (z. B. Schreiben und Lesen von Daten für Bereiche einer Speicheroberfläche, wie vorstehend eingeführt). Die Sammlung 12 kann mit einem zweckgebundenen Speicher wie z. B. einem in einen Graphikprozessor eingebetteten Speicher implementiert werden. Ein solcher Speicher kann für diesen Zweck zweckgebunden sein oder kann zugewiesen werden, wenn es erforderlich ist. Die Sammlung 12 kann auch unter Verwendung eines Speichers, der für einen Graphikprozessor privat ist, oder eines Speichers, der zwischen einem Graphikprozessor und anderen Funktionseinheiten geteilt wird, implementiert werden. Speicherresidente Steuerelemente wie z. B. Listen von freien Bereichen in der Sammlung 12 können auch im eingebetteten Speicher implementiert werden. Implementierungen können einen Teil der Sammlung 12 und speicherresidente Steuerelemente einbetten. In einem Beispiel kann die Sammlung von Segmenten 12 genügend Speicher sein, um wenigstens drei volle Rahmen von Pixeldaten mit einer aktuellen Betriebsanzeigeauflösung zu speichern, um eine Dreifachpufferung zu implementieren. Die Pixelquelle 6 kann auch aus einer Liste 14 von freien Segmenten lesen, die Identifizierer für Speichersegmente umfasst, die zum Speichern von Bereichen von Pixeldaten für irgendeine Oberfläche, die durch die Pixelquelle 6 bearbeitet wird, verfügbar sind. Falls die Pixelquelle 6 ein Speichersegment aus der Liste 14 von freien Segmenten verwendet, entfernt die Pixelquelle 6 an sich einen Identifizierer für dieses Speichersegment aus der Liste 14 von freien Segmenten. Die Pixelquelle 6 kann zum Aktualisieren einer Abbildung 16 von Speichersegmenten auf Oberflächenbereiche auch aus dem Speicher 10 lesen und in diesen schreiben. Die Abbildung 16 kann beispielsweise mit einer Liste von Bereichen für eine spezielle Speicheroberfläche und durch Identifizieren von Informationen für ein oder mehrere Speichersegmente, die Pixeldaten für jeden der aufgelisteten Bereiche speichern, implementiert werden. Mehrere derartige Abbildungen 16 können im Speicher 10 gespeichert werden, wobei jede Abbildung einer jeweiligen Oberfläche zugeordnet ist.
  • Wenn eine Oberfläche verwendet oder angezeigt werden soll, wird auf die Abbildung, die dieser speziellen Oberfläche zugeordnet ist, zugegriffen, um die Liste Speichersegmenten abzurufen, die Pixeldaten in dieser von Oberfläche speichern, wie nachstehend erläutert. Wie nachstehend erläutert wird, verwendet die Pixelsenke 7 eine ausgewählte Abbildung aus Abbildungen 16, um Speichersegmente auszuwählen, auf die zugegriffen werden soll, um eine spezielle Oberfläche zur Anzeige auszugeben (z. B. um einen anzeigbaren Rahmen zu erzeugen). Jede Abbildung Speichersegmente von irgendeiner oder mehreren verschiedenen kann auf Oberflächen verweisen, so dass Speichersegmente aus unterschiedlichen und diskontinuierlichen Speicherstellen gelesen werden können.
  • In einer Beispielanwendung umfasst die Pixelsenke 7 eine Anzeigesteuereinheit, die eine zeitliche Sequenz von anzeigbaren Rahmen ausgibt, wie z. B. in 2 dargestellt, in der anzeigbare Rahmen 20, 21 und 21 zur Ausgabe zur Anzeige auf einer Anzeige 25 gebildet sind. Diese Operation steht zur herkömmlichen Operation einer Anzeigesteuereinheit im Gegensatz, der ein Ort eines Startpunkts für einen anzuzeigenden Rahmen gegeben werden kann, und die kontinuierlich Daten von diesem Startpunkt zur Ausgabe eines Rahmens zur Anzeige liest. Anzeigesteuereinheiten können auch Streu/Sammel-Operationen unterstützen. Anzeigesteuereinheiten können auch eine Speichermanagementeinheit aufweisen, die die Virtualisierung des Speichers unterstützt (Zuführen eines zusammenhängenden Segments eines virtuellen Speichers, der durch verschiedene Abschnitte eines physikalischen Speichers implementiert wird). Als weiterer Kontrast können in Implementierungen der Offenbarung Pixeldaten, die in einem einzelnen Speichersegment gespeichert sind, von der Pixelsenke 7 beim Bilden von mehreren Rahmen zur Anzeige verwendet werden. Ein Bereich von Pixeldaten, die in einem gegebenen Speichersegment gespeichert sind, kann beispielsweise in zwei oder drei aufeinander folgenden Rahmen verwendet werden.
  • 3 stellt eine Oberfläche 105 dar, die in Bereiche 110114 unterteilt ist. Jeder Bereich weist eine definierte Anzahl von Zeilen und Spalten von Pixeln auf, so dass jeder Bereich eine definierte Anzahl von Pixeln aufweist. Eine Anzahl von Bereichen in horizontalen und vertikalen Richtungen wird durch die Bildschirmauflösung (für eine feste Bereichsgröße) bestimmt. Bereichsgrößen können für einen speziellen Zieltyp von Anzeige und auf der Basis von Erwägungen wie z. B. Eigenschaften der Pixelquelle 6 und -senke 7, Speicherschnittstelleneigenschaften und anderen im plementierungsspezifischen Kriterien ausgewählt werden. In einigen Implementierungen stellt die Oberfläche 105 eine Oberfläche einer Reihe von Oberflächen dar, die jeweils dieselbe Auflösung und Bereichsunterteilung aufweisen, so dass gesagt werden kann, dass jedes Pixel (oder jeder Bereich von Pixeln) in der Oberfläche 105 ein entsprechendes Pixel (einen entsprechenden Bereich) in anderen Oberflächen in dieser Reihe von Oberflächen aufweist.
  • 4 stellt Aspekte der Operation des Systems 3 in 1 dar, um Pixeldaten für die Oberfläche 105 von 3 zu erzeugen. 4 stellt die Pixelquelle 6 dar, die Informationen zur Wiedergabe einer Oberfläche von Pixeln empfängt, solche Informationen können Daten, Einrichtungs- und Befehlsinformationen wie z. B. Grundelemente, Texturen, Beleuchtungsinformationen, Schattierungen und so weiter umfassen. Die Ausgaben der Pixelquelle 6 umfassen Abbildungen 127 zwischen Bereichen der Oberfläche 105 (z. B. den Bereichen 110114) und Speichersegment-Identifizierern (”Ref”), die zur Erzeugung einer Abbildung 120 für alle Bereiche der Oberfläche 105 gespeichert werden.
  • Pixeldaten 128 für Bereiche werden erzeugt und in Speichersegmenten von der Sammlung 12 gespeichert. Segmente, die aus der Sammlung 12 ausgewählt werden, um Pixel für Bereiche 110114 zu speichern, werden aus der Liste 14 von freien Segmenten identifiziert. Speicheradressen können beispielsweise als Segmentidentifizierer oder Teile von Speicheradressen verwendet werden. Eine 32-Bit- oder 64-Bit-Speicheradresse kann beispielsweise verwendet werden. Ein 1080p-Rahmen weist 2,0736 Millionen Pixel auf. Für Bereiche von 64 Pixeln hätte ein Rahmen 32400 Bereiche und ein Satz von 32-Bit-Verweisen würde etwa 130 KBytes Speicher erfordern. Eine andere Implementierung besteht darin, eine Basisspeicheradresse für die Sammlung von Speichersegmenten zu identifizieren, wie z. B. 64 Megabytes, die eine 24- oder 32-Bit-Farbe speichern können (z. B. 1 Byte für jede von RGB und einen Alphakanal für jedes Pixel), und die Indikatoren als Versätze von dieser Basisspeicheradresse zu konstruieren. Obwohl eine byteweise Adressierung von 64 Megabytes einen Adressenraum von 26 Bits erfordert, weist jeder Bereich eine Größe von 256 Bytes (für 4-Byte-Pixel) auf. Folglich würden die unteren 8 Bits konstant bleiben und 18 Bits können für jeden Indikator verwendet werden. Ein Beispiel einer anderen Methode zur Darstellung einer Oberfläche besteht darin, eine vorherige Oberfläche zu identifizieren und für jeden Bereich, von dem festgestellt wird, dass er andere Pixeldaten als ein entsprechender Bereich der vorherigen Oberfläche enthält, eine explizite Identifikation dieses Bereichs und ein Speichersegment, das Pixeldaten für diesen Bereich speichert, vorzusehen. Diese Beispiele sind erläuternd und nicht begrenzend.
  • Bei einer Methode stellt die Oberfläche 105 eine Oberfläche einer Reihe von Oberflächen desselben Formats und derselben Auflösung dar, so dass Daten, die die Abbildung 120 darstellen, eine Reihe von Verweisen wie z. B. Speicherverweisen in einer vordefinierten Reihenfolge sein können und jeder Bereich nicht explizit in Verbindung mit einem Verweis auf das Speichersegment identifiziert werden muss, das seine Pixelinformationen speichert. Die Pixelsenke 107 kann folglich auf Pixeldaten für eine Oberfläche durch Lesen der Speichersegmente, die Pixeldaten für jeden Bereich der Oberfläche speichern, zugreifen; die Reihenfolge der Verweise auf die Speichersegmente definiert implizit eine relative räumliche Anordnung der Bereiche von Pixeldaten (wie z. B. für die Anzeige). Eine Konvention kann wiederum für das Format der Pixeldaten innerhalb jedes Bereichs festgelegt werden.
  • In Verbindung mit dem Schreiben von Pixeldaten in ausgewählte Speichersegmente wird ein Satz von Zählwerten 13 für die Speichersegmente unterhalten, der, wie nachstehend erläutert, verfolgt, wie viele Oberflächen jedes Speichersegment als Quelle von Pixeldaten verwenden.
  • Die Liste 14 von freien Segmenten wird aktualisiert, um die Speichersegmente zu entfernen, die verwendet werden, um Pixeldaten 128 zu speichern. Dieses Beispiel zeigt eine separate Liste 14 von freien Segmenten, die freie Segmente identifiziert, die bereit sind, Pixeldaten zu empfangen. Andere Implementierungen können jedoch die Zählwerte direkt verwenden und identifizieren, welche Speichersegmente Zählwerte mit einem Wert von 0 aufweisen, und zu verwendende Speichersegmente auf dieser Basis auswählen.
  • Folglich stellt 4 dar, dass die Abbildung 120 einen Satz von Speichersegmenten identifiziert, die die Pixeldaten speichern, die die Oberfläche 105 definieren, und gemeinsam die Abbildung 120 und dieser Satz von Speichersegmenten die wiedergegebenen Pixeldaten der Oberfläche 105 darstellen. Jede Abbildung, z. B. die Abbildung 120, kann durch einen Zeiger oder eine Speicheradresse identifiziert werden. Eine solche Adresse oder ein solcher Zeiger kann für die Pixelsenke 7 vorgesehen sein, die die dadurch identifizierte Abbildung verwendet, um irgendeine Anzahl von unterschiedlichen Speichersegmenten zu bestimmen, von denen Pixeldaten für eine Oberfläche abgerufen werden können. Folglich würde eine Umschaltkette für eine Dreifachpuffersituation eine Sequenz von Zeigern oder Speicheradressen für drei Abbildungen umfassen. Diese Methode passt das Streichen von einer der Oberflächen in der Sequenz durch Entfernen eines entsprechenden Zeigers oder einer entsprechenden Speicheradresse aus der Sequenz und Dekrementieren von Zählwerten, die Speichersegmenten zugeordnet sind, die Pixeldaten für diese Oberfläche speichern, an. Wie nachstehend beschrieben, wird daher, falls die Oberfläche 105 zur Anzeige ausgegeben oder bei der Weiterverarbeitung verwendet werden soll, dann auf die Abbildung 120 zugegriffen, um die Speichersegmente zu identifizieren, die die Pixeldaten für die Oberfläche 105 speichern, und dann werden die Pixeldaten aus diesen Speichersegmenten gelesen. Bevor solche Operationen beschrieben werden, wird jedoch die Speicherung von Daten, die weitere wiedergegebene Oberflächen darstellen, direkt nachstehend beschrieben.
  • 5 stellt eine Oberfläche 106 als Sammlung von Bereichen von Pixeldaten dar, einschließlich Bereichen, die in der Oberfläche 105 existieren (d. h. die Pixeldaten in diesen Bereichen sind dieselben wie in den entsprechenden Bereichen der Oberfläche 105). Einige Bereiche der Oberfläche 106 unterscheiden sich jedoch von der Oberfläche 105 und insbesondere sind die Bereiche 116, 117 und 118 anders.
  • 6 stellt dar, dass die Abbildung 120, die abbildet, wo Bereiche von Pixeldaten für die Oberfläche 105 gespeichert sind, auf eine Abbildung 121 kopiert wird. Ein freies Speichersegment für jeden Bereich von Pixeldaten, die von der Oberfläche 105 verschieden sind, wird aus der Liste 14 von freien Segmenten erhalten und Pixeldaten werden in diesen Speichersegmenten gespeichert. Die Abbildung 122 kann durch Aktualisieren der Abbildung 121 erzeugt werden, um die Identifizierer für Speichersegmente, die Pixeldaten für die Oberfläche 105 speichern, gegen die neu erhaltene Speichersegmente, die nun Pixeldaten für Bereiche der Oberfläche 106 speichern, auszutauschen. Wie dargestellt, weisen nun die Bereiche 116118 entsprechende Speichersegmentverweise auf, die in der Abbildung 122 aufgelistet sind.
  • Außerdem werden Zählwerte 13 für Speichersegmente unterhalten, wie mit Bezug auf 7A erläutert. 7A stellt eine Sammlung 12 von Speichersegmenten dar, die gemeinsam Pixeldaten für wiedergegebene Oberflächen speichern. Nun speichern bestimmte Speichersegmente Pixeldaten für sowohl die Oberfläche 105 als auch für die Oberfläche 106, insbesondere sind die Pixeldaten in den Bereichen 110 und 111 dieselben und die Speichersegmente, die solche Daten speichern, die belegt wurden, als die Oberfläche 105 geschrieben wurde, werden beim Definieren der Oberfläche 106 verwendet. Die Zählwerte 13 werden inkrementiert, um widerzuspiegeln, dass die Daten für diese Speichersegmente nun verwendet werden, um zwei Oberflächen zu identifizieren. Zählwerte können in einigen Implementierungen in einem zweckgebundenen Speicherabschnitt bewahrt/gepflegt werden; ein Prozessor, der so ausgelegt ist, dass er zur Dreifachpufferung in der Lage ist, kann beispielsweise eine Speicherablage vorsehen, die groß genug ist, um eine 3-Tiefen-Umschaltkette (2-Bit-Zähler) für eine maximale unterstützte Auflösung und eine maximale Granularität der Bereichsgröße unterzubringen. In einer 1080p-Anzeige und 64-Pixel-Bereichen können beispielsweise etwa 64k Bits für einen solchen Speicher zugewiesen werden. In einigen Fällen kann die Bereichsgröße in der Architektur fest sein. Eine maximale Auflösung kann jedoch variabel sein. Wenn jedoch mehrere Anzeigen mit einer zweckgebundenen Umschaltkette unterstützt werden sollen oder andere Arbeitswiedergabeoberflächen in einem Speicher gemäß der Offenbarung dargestellt werden sollen, müsste ein solcher Speicher dementsprechend bemessen werden. In einigen Beispielen kann eine Speichersteuereinheit eine vorbestimmte Speichergröße zum Speichern von bis zu einer vorbestimmten Anzahl von Rahmen mit voller Auflösung zuweisen. Cachespeichertechniken können ebenso in einem solchen Speicher verwendet werden.
  • 7B stellt ein Beispiel dar, in dem jedes Speichersegment aus mehreren Abschnitten bestehen kann, die potentiell in diskontinuierlichen Speicherbereichen angeordnet sind; insbesondere ist das Segment, das Pixeldaten für den Bereich 116 speichert, als aus Abschnitten 116A–C bestehend dargestellt.
  • 8 stellt ein Beispielverfahren zum Speichern von Pixeldaten für wiedergegebene Oberflächen gemäß der Offenbarung dar. 8 stellt das Empfangen 205 von Quellendaten, um Pixeldaten bei der Wiedergabe einer Oberfläche zu erzeugen, und das Erzeugen 207 von solchen Pixeldaten dar. In einigen Implementierungen können die Pixeldaten in Bereichen wie z. B. den für die Oberflächen 105 und 106 vorstehend dargestellten erzeugt werden. Falls die Pixeldaten nicht erzeugt werden oder ansonsten in Bereiche unterteilt werden, dann werden die Pixeldaten in Bereiche unterteilt 209. Bei 211 wird eine Entscheidung getroffen, ob die wiedergegebene Oberfläche unter Verwendung von Daten von einer vorher wiedergegebenen Oberfläche dargestellt werden soll. Wenn Bereiche von Pixeldaten der wiedergegebenen Oberfläche dieselben wie eine vorher wiedergegebene Oberfläche sind, dann können im Allgemeinen Bereiche von dieser vorher wiedergegebenen Oberfläche beim Definieren der wiedergegebenen Oberfläche verwendet werden, und, wie vorher eingeführt, wird eine Abbildung (z. B. Abbildung 120) für die vorherige Oberfläche kopiert (213) und für jeden Bereich der wiedergegebenen Oberfläche wird eine Bestimmung (215), ob die Pixeldaten dieselben wie oder von einem entsprechenden Bereich der vorherigen Oberfläche verschieden sind, durchgeführt. Falls die Pixeldaten für diesen Bereich nicht geändert sind (217), dann wird die Abbildung für die wiedergegebene Oberfläche mit einem Identifizierer für das Speichersegment, in dem die Pixeldaten für den unveränderten Bereich gespeichert werden sollen, aktualisiert (231) und bei 232 werden die Zählwerte 13 aktualisiert.
  • Falls sich Pixeldaten in dem Bereich geändert haben, dann wird bei 225 ein Speichersegment identifiziert (wie z. B. aus der Liste 14 von freien Segmenten) und verwendet, um die wiedergegebenen Pixeldaten für diesen Bereich zu schreiben (227). Bei 229 wird die Abbildung für die wiedergegebene Oberfläche aktualisiert, um den Bereich und das Speichersegment, das Pixeldaten für diesen Bereich speichert, zu korrelieren. Bei 230 werden Zählwerte 13 aktualisiert.
  • In jedem Fall kann ein Fortschritt (233) zu einem anschließenden zu betrachtenden Bereich durchgeführt werden. Jeder Bereich der wiedergegebenen Oberfläche kann gemäß dem vorstehend beschriebenen Ablauf verarbeitet werden, was durch eine Schleife zu 215 dargestellt ist, um den anschließenden Bereich zu betrachten. Im Zusammenhang mit einer Mehrfachpufferung (z. B. Dreifachpufferung) wird, um eine der Oberflächen zu streichen, eine Speicheradresse oder ein Zeiger für die Abbildung für diese Oberfläche aus einer Sequenz entfernt und die Zählwerte für Speichersegmente, die Bereiche von Pixeldaten in dieser gestrichenen Oberfläche gespeichert haben.
  • Falls jedoch Pixeldaten für die vorherige Oberfläche nicht beim Definieren der wiederzugebenden Oberfläche verwendet werden sollen, dann werden bei 219 Speichersegmente zum Speichern von Bereichen von Pixeldaten erhalten, bei 221 werden Pixeldaten für Bereiche in entsprechende Speichersegmente geschrieben und bei 223 wird eine Abbildung zwischen den Bereichen und den Speichersegmenten erzeugt.
  • Folglich stellt 8 dar, dass für eine gegebene wiedergegebene Oberfläche (oder allgemeiner für eine durch gespeicherte Pixeldaten darzustellende Oberfläche) diese Oberfläche unter Verwendung von Speichersegmenten, die Pixeldaten für Bereiche einer existierenden Oberfläche speichern, mit der Speicherung von Pixeldaten, die von dieser existierenden Oberfläche verschieden sind, und einer Abbildung, die erläutert, wo jeder Bereich von Pixeldaten zu finden ist, dargestellt werden kann. In diesen Beispielen werden Bereiche von Pixeldaten für eine existierende Oberfläche verwendet, um eine wiedergegebene Oberfläche zu definieren; in anderen Implementierungen können jedoch Pixeldaten von mehreren existierenden Oberflächen verwendet werden.
  • Eine Vielfalt von Methoden kann implementiert werden, um festzustellen, ob ein gegebener Bereich andere Pixeldaten im Vergleich zu einem entsprechenden Bereich einer existierenden Oberfläche umfasst. In einem Beispiel kann eine zyklische Redundanzprüfung (CRC) oder ein Hash der Pixeldaten im entsprechenden Bereich erzeugt und gespeichert werden. Pixeldaten und eine CRC für einen Bereich einer anschließenden Oberfläche können erzeugt werden. Die CRCs können verglichen werden, und falls sie nicht übereinstimmen, dann werden die Bereiche als unterschiedlich bestimmt. In einem anderen Beispiel kann ein pixelweiser Vergleich durchgeführt werden, wie z. B. in einer Hardware-EXKLUSIV-ODER-Einheit. Eine noch andere Heuristik kann implementiert werden. Beispielsweise kann es Methoden geben, um im Voraus zu bestimmen, ob gegebene Bereiche einer Oberfläche garantiert nicht unterschiedlich sind. Im Zusammenhang mit der Zusammensetzung von zwei Oberflächen (z. B. wenn eine Benutzerschnittstelle über einen Hintergrund wie z. B. ein Bild überlagert wird) kann die Benutzerschnittstelle beispielsweise bekannte Grenzen aufweisen, so dass Bereiche von Pixeldaten außerhalb der bekannten Grenzen unverändert sind. Anwendungsprogrammierungsschnittstellenaufrufe können beispielsweise Informationen über Grenzen einer durch den Aufruf betroffenen Oberfläche aufweisen, wie z. B. ein glscissor()-Aufruf, was den Ausschluss von Bereichen von Pixeldaten, die nicht von solchen Schnittstellenaufrufen betroffen sind, ermöglichen würde.
  • In einem speziellen Zusammenhang mit Wiedergabearchitekturen, die Kachelmethoden verwenden, wobei eine Geometrie, von der festgestellt wird, dass sie in einer Kachel des Bildschirmraums existiert, zusammen verarbeitet wird (anstatt die Geometrie in der exakten Eingabereihenfolge ungeachtet dessen zu verarbeiten, wo jedes Element der Geometrie auf den Bildschirmraum abgebildet wird). In einem Beispiel erhält, wenn eine Pixelquelle Pixeldaten für eine Reihe von Oberflächen erzeugt, wobei diese Oberflächen in mehrere Kacheln organisiert sind, die Pixelquelle eine Schreibsperre an einer Speicherstelle, die Pixeldaten für jede Kachel speichern soll, bevor die Pixelquelle diese Pixeldaten schreibt. Während der Erzeugung der Pixeldaten schreibt die Pixelquelle oder ein anderes Element im System Pixeldaten in jeweilige Speicherstellen für irgendeine Kachel, die Pixeldaten aufweist, die von einer entsprechenden Kachel in einer vorher wiedergegebenen Oberfläche verschiedene sind. Das Erhalten der Schreibsperre durch die Pixelquelle ist folglich ein Hinweis an eine Pixelsenke, dass die Pixeldaten in dieser speziellen Kachel aktualisiert wurden und gelesen werden müssen, um diese Oberfläche (z. B. zur Anzeige) zusammenzusetzen. Für andere Speicherstellen, für die die Pixelquelle keine Schreibsperre erhalten hat, kann jedoch eine Pixelsenke diese Informationen verwenden, um abzuleiten, dass die Pixeldaten dieselben wie eine vorher wiedergegebene Oberfläche sind, und erhält Pixeldaten für jene Kacheln von entsprechenden Kacheln der vorher wiedergegebenen Oberfläche.
  • In einer Implementierung kann ein Satz von Speicherstellen für die ganze Oberfläche vorab zugewiesen werden, aber nur mit Pixeldaten für Kacheln belegt werden, die geänderte Pixeldaten aufweisen. Als Nebenprodukt einer solchen Zuweisung kann eine Entsprechung zwischen Kacheln und Speicherstellen hergestellt werden und durch (eine) Pixelquelle(n) und Pixelsenke(n) darauf verwiesen werden. In einer anderen Implementierung werden Speicherstellen für alle Kacheln eines Rahmens nicht vorab zugewiesen; vielmehr können sie nach Bedarf zugewiesen werden. Um variable Kachelschreibanforderungen und die variable Wartezeit der Zuweisung zu berücksichtigen, kann eine Teilmenge von vorab zugewiesenen Speicherstellen aufrechterhalten werden (z. B. können 4, 8 oder 16 Stellen aufrechterhalten werden). Im Zuweisungsprozess werden Seitenbanddaten unterhalten, die identifizieren, von welcher Kachel Pixeldaten in jeder Stelle gespeichert werden. In der letzteren Implementierung ist die Tatsache, dass der Speicher für Pixeldaten für eine identifizierte Kachel zugewiesen wurde, ein Hinweis an (eine) Pixelsenke(n), dass die Pixeldaten für diese Kachel aktualisiert wurden.
  • Die obige Beschreibung zeigt, wie eine Pixelquelle Daten erzeugen kann, die wiedergegebene Oberflächen in einer Weise beschreiben, die Lese- und Schreibspeicherbandbreite bewahrt und insgesamt die Effizienz von Operationen erhöhen kann, wie z. B. Zusammensetzungsoperationen. Ein ganzer Bereich eines Ausgangsrahmens kann beispielsweise zusammengesetzt werden oder nur ein Bereich, von dem bekannt ist, dass er eine gewisse Möglichkeit einer Modifikation aufweist. Als Beispiel können während der Wiedergabe einer Oberfläche oder eines Teils davon Zusammensetzungsdaten, die sich auf jedes Pixel auswirken, aufrechterhalten werden (z. B. Tiefensortierungs- und Mischoperationen). Während der Zusammensetzung wie z. B. während der Tiefensortierung (ohne Durchsichtigkeit) kann eine Quelle von Bilddaten für jedes Pixel bestimmt werden. In einer Fensterumgebung wird beispielsweise, ob ein Pixel von einem gegebenen Fenster oder einem Hintergrund beschaffen werden soll, bestimmt. Für jeden Bereich kann ein Flag unterhalten werden, das einen laufenden Zähler der Quelle von Pixeldaten für Pixel in diesem Bereich beibehält. Falls festgestellt wird, dass sich irgendein Pixel von einem entsprechenden Pixel unterscheidet, dann kann der Bereich, der dieses Pixel enthält, gekennzeichnet werden, so dass Pixeldaten für diesen Bereich gespeichert werden können. In einigen Implementierungen kann, welche Bildkomponenten sich auf ein gegebenes Pixel oder einen Satz von Pixeln auswirken, zu verschiedenen Zeiten verfügbar sein. In einem 8×8-Block kann beispielsweise ein Verweis auf eine sichtbare Oberfläche für jedes Pixel verfügbar sein. Beim Zusammensetzen eines Fensters über einem Hintergrund können beispielsweise sowohl das Fenster als auch der Hintergrund durch jeweilige Paare von Dreieckgrundelementen im Speicher dargestellt werden, die auf eine Textur abgebildet werden, die das Fenster oder den Hintergrund darstellt. Diese Daten können vorher durch den Prozessor 75 oder durch den Videodecodierer 70 erzeugt worden sein oder von irgendeiner anderen Quelle zur Verfügung gestellt werden. Grundelemente für jedes des Fensters und des Hintergrundes können Identifizierer innerhalb eines bestimmten Bereichs aufweisen und eine Hardwaremaske kann bestimmen, ob alle Pixelidentifizierer in einer Pixelzeile einen Identifizierer in einem gegebenen Bereich aufweisen oder nicht (z. B. UND-Operation von Ausgaben einer bitweisen Maske jeder Pixel-ID).
  • Eine Quellenidentifikation kann auch während der Texturierung als Nebenprodukt der Bestimmung einer Texturquelle durchgeführt werden. In vielen Fällen ist die Texturierung ein pixelweiser Prozess, so dass, wenn jedes Pixel texturiert wird, das Quellenflag aktualisiert werden kann. Implementierungen können ein frühes Aus für jede Quellenprüfung haben; falls beispielsweise irgendein Pixel oder eine Gruppe von Pixeln als eine Aktualisierung in Bezug auf ein Referenzbild erfordernd bestimmt wurde, dann müssen die restlichen Pixel in dieser Kachel nicht geprüft werden, da Pixeldaten für die ganze Kachel ausgegeben werden, selbst falls ein Pixel unterschiedlich ist.
  • 9 und 10 werden verwendet, um einen Beispielprozess zum Zugreifen auf eine Oberfläche von Pixeldaten, die gemäß der Offenbarung dargestellt sind, zu erläutern. Bei 305 wird eine Bestimmung zum Zugreifen oder Ausgeben einer Oberfläche durchgeführt (z. B. die Oberfläche 105, wie in 10 wiedergegeben), um beispielsweise eine Zusammensetzungsoperation durchzuführen oder um einen anzeigbaren Rahmen auszugeben und zu erzeugen. Bei 307 umfasst der Prozess ein Auswählen und Abrufen der Abbildung für die Oberfläche (z. B. Abbildung 120). Bei 309 werden unter Verwendung der Abbildung Speichersegmente, die Pixeldaten für die Oberfläche speichern, identifiziert. Durch Verweis auf die Abbildung 120 werden beispielsweise Speichersegmente für Bereiche 110114 identifiziert und bei 311 werden Pixeldaten für diese Bereiche aus der Sammlung 12 abgerufen. Bei 313 wird jeder Zähler (der Zähler 13) für ein Speichersegment, das bei 311 gelesen wurde, dekrementiert. Bei 315 werden irgendwelche Zähler, die 0 erreicht haben, identifiziert (z. B. Zähler für Speichersegmente, die Pixeldaten für Bereiche 112114 speichern) und befreit, damit sie zur Liste 14 von freien Segmenten zurückgegeben werden.
  • Falls die Pixeldaten für die Anzeige gelesen werden, können weitere Beispielprozessteile bei 319 das vorübergehende Speichern der Pixeldaten umfassen und bei 320 können diese Pixeldaten in einem für die Anzeige geeigneten Format ausgegeben werden (wie z. B. in 10 gezeigt). Eine Anzeigesteuereinheit kann den Prozess von 9 implementieren; z. B. kann die Pixelsenke 7 eine Anzeigesteuereinheit umfassen. In anderen Beispielen kann der Prozess von 9 durch einen Prozessor wie z. B. einen Graphikprozessor implementiert werden, um Pixeldaten für eine Oberfläche zu erhalten und weitere Graphikoperationen unter Verwendung der Pixeldaten durchzuführen, und in noch anderen Implementierungen können sowohl ein Graphikprozessor als auch eine Anzeigesteuereinheit einen Prozess gemäß 9 implementieren.
  • 11 stellt Elemente eines Beispielsystems dar, in dem offenbarte Aspekte ausgeführt werden können. In 11 ist die Pixelquelle 6 (aus 1) durch den Prozessor 75 dargestellt und die Pixelsenke 7 ist durch die Anzeigesteuereinheit (85) dargestellt, obwohl, wie vorstehend offenbart, der Prozessor 75 ebenso auch als Pixelsenke funktionieren kann, und andere Quellen von Pixeldaten als der Prozessor 75 vorliegen können. Außerdem können ein Videodecodierer 70 und ein Speicher 10 mit dem Prozessor 75 über Busse 20 gekoppelt werden. Die Anzeige 25 kann mit der Anzeigesteuereinheit 85 gekoppelt werden.
  • Eine API 50 und ein Treiber 52 für den Prozessor 75 können vorgesehen sein, um den Prozessor 75 mit Software wie z. B. einem Betriebssystem 45 und einer Anwendung 40 über eine Schnittstelle zu koppeln. Die Anwendung 40 kann Eingaben 35 empfangen und Daten, eine Einrichtung und Befehle erzeugen, die für die Wiedergabe einer Oberfläche verwendet werden. Andere Wiedergabeeingaben können Beschleunigungsstrukturen 66, Texturen 67, eine Geometrie 68 und einen Schattierungscode 69 umfassen, auf die durch den Treiber 52 oder durch die Anwendung 40 oder beide zugegriffen werden kann. Das Betriebssystem 45 kann auch Eingaben von der Benutzerschnittstelle 30 empfangen, die beispielsweise eine oder mehrere eines visuellen UI-Elements 31, einer Tastatur 32 und einer Maus 33 umfassen kann. Die Anwendung 40 kann beispielsweise mit dem Prozessor 75 unter Verwendung von einem oder mehreren von OpenGL®, OpenCL®, OpenRL®, DirectX® oder einer anderen geeigneten API über eine Schnittstelle gekoppelt werden. Der Treiber 52 kann API-Aufrufe von der Anwendung 40 empfangen und solche Aufrufe in ein Rechen-Setup umwandeln, das für den Prozessor 75 geeignet ist.
  • Die Anwendung 40 kann ein OS 45 betreiben, das API-Aufrufe vorsehen kann, die eine Größenänderung und Bewegung eines Fensters innerhalb eines verfügbaren Bildschirmraums ermöglichen können, und kann Effekte wie z. B. Durchsichtigkeit vorsehen. An sich kann der Fensterprozess 47 Orte und Abmessungen für alle Fenster und beliebige andere Elemente, die zur Anzeige verfügbar sind, verfolgen, wie z. B. Bildsymbole auf einem Desktop, einen Bildschirmschoner, einen Bildschirmhintergrund und so weiter.
  • Die Anwendung 40 kann Eingaben empfangen, die von UI-Elementen erzeugt werden, einschließlich beispielsweise eines visuellen UI-Elements 25 (z. B. ein Menü auf dem Bildschirm, das eine Berührungseingabe hervorrufen kann), einer Tastatur 26 oder einer Maus 27. Solche Eingaben können durch das OS 45 verarbeitet werden und auf die Anwendung 40 gerichtet werden. Die Anwendung 40 kann auch eine API verwenden, um mit dem OS 45 zu kommunizieren. Das OS 45 kann eine Vielfalt von verschiedenen Funktionen für die Anwendung 40 durch eine solche API zur Verfügung stellen.
  • Der Prozessor 75 kann Oberflächen unter Verwendung einer verzögerten Schattierungsmethode wiedergeben, wobei eine Texturierung und andere pixelorientierte Operationen bis nach Bestimmungen der sichtbaren Oberfläche verzögert werden. Bereiche einer Oberfläche (z. B. Oberfläche 105) können in einer Wiedergabevorrichtung auf Kachelbasis wiedergegeben werden; in einem Beispiel besteht eine 1:1-Entsprechung zwischen Kacheln und Bereichen.
  • Die Anzeigesteuereinheit 85 liest Speichersegmente, die unter Verwendung von Abbildungen identifiziert werden, von denen jedes einer zum Lesen verfügbaren Oberfläche entspricht. Die Anzeigesteuereinheit 85 kann einen temporären Puffer aufweisen oder steuern, der verfügbar ist, um Pixeldaten aus Speichersegmenten zusammenzusetzen, die gelesen werden. In einigen Vorrichtungen kann die Anzeigesteuereinheit 85 auch Funktionen wie z. B. Skalierung, Drehung, Beschneidung und Mehrfachmonitorbetrieb durchführen können. Daher impliziert die Offenbarung nicht, dass von der Anzeigesteuereinheit 85 gelesene Pixeldaten unmodifiziert angezeigt werden müssen. Einige Implementierungen können eine Anzeigesteuereinheit schaffen, die gemäß der Beschreibung arbeitet, die jedoch einen dauerhaften Speicher steuern kann, der bei einer Anzeige resident ist (z. B. Zusatzspeicher für eine Anzeige wie z. B. eine LCD). Eine solche Anzeigesteuereinheit kann beispielsweise bewirken, dass Bereiche eines solchen Zusatzspeichers für einen speziellen Rahmen aktualisiert werden, während andere Bereiche des Speichers für diesen Rahmen nicht geändert werden.
  • 12 stellt Aspekte einer Beispielkonstruktion des Prozessors 75 mit einem gewissen Zusammenhang dar. Der Prozessor 75 kann einen programmierbaren Rechencluster 156, einen Satz von Coprozessoren 157 und ein Steuerprogramm (Scheduler) 155 umfassen. Jede von diesen Einheiten oder ein gewisser Teil davon kann mit einer Cache-Hierarchie 150 kommunizieren, die wiederum mit einem Speicherbus 160 kommuniziert. Eine Vielfalt von Datenmastern können eine zu planende und im Prozessor 75 auszuführende Berechnung einrichten; Beispiele umfassen einen Scheiteldatenmaster 151, einen Pixeldatenmaster 152 und einen Universaldatenmaster 153. Eine Hauptrechner-Schnittstelle 158 kann mit dem Prozessor 75 durch eine Steuerung und einen Bus 161 kommunizieren. Der Speicherbus 160 und der Steuer- und Registerbus 161 können Teil der Busse 20 von 1 sein. Eine Systemspeicherschnittstelle 162 koppelt den Speicherbus 160 über eine Schnittstelle mit einer Systemspeicher-Hierarchie 164.
  • Jedes der in 12 dargestellten Elemente kann Bestandteilselemente aufweisen, die der Deutlichkeit halber nicht dargestellt sind. Ein programmierbarer Rechencluster 156 kann beispielsweise mehrere Rechencluster jeweils mit einem lokalen Steuerprogramm aufweisen und das Steuerprogramm 155 kann global eine Berechnung unter diesen Clustern zuweisen. Coprozessoren 170 können Texturcoprozessoren oder Coprozessoren für andere Arten von Algorithmen (oder Teile davon) umfassen, die vorteilhafterweise in einer Hardware mit fester Funktion im Gegensatz zur Ausführung im programmierbaren Cluster 165 implementiert werden können. Der Speicher 10 kann beispielsweise durch eine Anzahl von verschiedenen physikalischen Speichern gebildet sein, einschließlich Arbeitsspeicher, die in den Figuren nicht explizit identifiziert sind. Die vorstehend beschriebenen Zählwerte können beispielsweise in einem für den Prozessor 75 lokalen Arbeitsspeicher gespeichert werden, der eine Hardware mit fester oder teilweise fester Funktion aufweisen kann, die diese Zählwerte bewahrt/pflegt.
  • Für die Deutlichkeit der Beschreibung wurden herkömmliche Elemente nicht beschrieben oder wurden abstrakt beschrieben. Die beschriebene Funktionalität kann für verschiedene Implementierungen unterschiedlich implementiert werden, so dass verschiedene Implementierungen Komponenten aufweisen können, die verschiedene und unterschiedliche Gruppierungen von Funktionalität implementieren. Als Beispiel kann der Speicher, der Pixeldaten speichert, in einem Speicher implementiert werden, der mit einem Speicher gemeinsam genutzt wird, der Berechnungsthreads und für andere Zwecke zugewiesen ist. In einigen Implementierungen kann ein zweckgebundener Videospeicher zum Speichern von Pixeldaten vorhanden sein, während ein Arbeitsspeicher für Anwendungen und Threads in einem separaten Speicher oder separaten Speichern vorgesehen sein kann. Die Speicher können gemeinsame Elemente einer Speicherhierarchie verwenden, wie z. B. einen gemeinsam genutzten Hauptspeicher. Die verschiedenen dargestellten Datenstrukturen und Datentypen können sich auch im gleichen physikalischen Speicher befinden.
  • Quellen von solchen Daten können Netzverbindungen und Puffer innerhalb Netzvorrichtungen umfassen. Die vorstehend offenbarten Beispiele bezogen sich am direktesten auf eine Situation, in der ein Graphikprozessor wie z. B. ein 3-D-Graphikprozessor (der durch eine oder mehrere einer Graphikprozessoreinheit oder eines Universalprozessors, der dazu programmiert ist, eine Graphikverarbeitung durchzuführen, implementiert werden kann), eine Pixelquelle ist und wobei eine Anzeigesteuereinheit eine Pixelsenke ist.
  • In verschiedenen Ausführungsformen in Bezug auf eine Graphikverarbeitungseinheit können Pixelquellen einen Videodecodierer (z. B. Verarbeitungselemente, die einen komprimierten Videostrom eingeben und Oberflächen von Pixeldaten zur Anzeige ausgeben können) und einen drahtlosen Anzeigeempfänger umfassen. Drahtlose Anzeigesender können Pixelsenken sein. In einigen Implementierungen können sich Pixelquellen und -senken innerhalb desselben Systems oder innerhalb desselben Systems auf einem Chip oder derselben Vorrichtung befinden, während in anderen Implementierungen Pixelquellen und Pixelsenken durch ein oder mehrere Netze getrennt sein können oder zeitlich getrennt sein können oder Kombinationen davon. Ein Graphikprozessor und ein Videodecodierer können beispielsweise durch Schreiben von Pixeldaten zu einem Zeitpunkt und Zurücklesen dieser Pixeldaten zu einem späteren Zeitpunkt sowohl eine Pixelquelle als auch -senke sein.
  • Wie aus der Offenbarung ersichtlich wäre, können einige der offenbarten Komponenten und Funktionalität in Hardware, Software, Firmware oder einer Kombination davon implementiert werden. Falls sie in Firmware und/oder Software implementiert werden, können die Funktionen als ein oder mehrere Befehle oder ein Code auf einem maschinenlesbaren Medium gespeichert werden. In einem Beispiel sind die Medien nichtflüchtig. Beispiele umfassen ein computerlesbares Medium, das mit einer Datenstruktur codiert ist, und ein computerlesbares Medium, das mit einem Computerprogramm codiert ist. Andere Arten von Medien umfassen Übertragungsmedien. Ein nichtflüchtiges Medium kann ein beliebiges konkretes Medium sein, auf das durch eine Maschine zugegriffen werden kann. Als Beispiel und nicht zur Begrenzung können Medien RAM, ROM, EEPROM, CD-ROM oder einen anderen optischen Plattenspeicher, einen Magnetplattenspeicher oder andere magnetische Speichervorrichtungen oder irgendein anderes Medium, das verwendet werden kann, um einen gewünschten Programmcode in Form von Befehlen oder Datenstrukturen zu speichern, und auf das durch eine Maschine zugegriffen werden kann, umfassen.
  • Zusätzlich zu Hardware-Ausführungsformen (z. B. in oder mit einer Zentraleinheit (”CPU”), einem Mikroprozessor, Mikrocontroller, Digitalsignalprozessor, Prozessorkern, System auf einem Chip (”SOC”) oder irgendeiner anderen programmierbaren oder elektronischen Vorrichtung gekoppelt) können Implementierungen auch in Software (z. B. computerlesbarer Code, Programmcode, Befehle und/oder Daten, die in irgendeiner Form angeordnet sind, wie z. B. Quellen-, Objekt- oder Maschinensprache) verkörpert sein, die beispielsweise in einem vom Computer verwendbaren (z. B. lesbaren) Medium angeordnet ist, das dazu ausgelegt ist, die Software zu speichern. Eine solche Software kann beispielsweise die Funktion, Herstellung, Modellierung, Simulation, Beschreibung und/oder Prüfung der hier beschriebenen Vorrichtungen und Verfahren ermöglichen. Dies kann beispielsweise durch die Verwendung von allgemeinen Programmiersprachen (z. B. C, C++), GDSII-Datenbanken, Hardwarebeschreibungssprachen (HDL), einschließlich Verilog HDL, VHDL, SystemC Register Transfer Level (RTL) und so weiter, oder andere verfügbare Programme, Datenbanken und/oder Schaltungs-(d. h. schematische)Erfassungswerkzeuge durchgeführt werden. Ausführungsformen können in einem maschinennutzbaren Medium angeordnet sein, einschließlich nichtflüchtiger Speicher wie z. B. Speicher unter Verwendung eines Halbleiter-, Magnetplatten-, optischen Platten-, Eisen-, Widerstandsspeichers, Flash-Speichers und so weiter. Auf solche maschinenlesbaren Informationen kann über Netze von einem am Netz angebrachten Speicher, von Speicherbereichsnetzen, von entfernten Dateiservern und so weiter zugegriffen werden.
  • Verschiedene erläuternde Komponenten, Blöcke, Module, Schaltungen und Schritte wurden vorstehend im Allgemeinen hinsichtlich ihrer Funktionalität beschrieben. Ob eine solche Funktionalität als Hardware oder Software implementiert wird, hängt von der speziellen Anwendung und Konstruktionseinschränkungen, die dem Gesamtsystem auferlegt sind, ab. Der Fachmann kann die beschriebene Funktionalität in variierenden Weisen für jede spezielle Anwendung implementieren, aber solche Implementierungsentscheidungen sollten nicht dahingehend interpretiert werden, dass sie eine Abweichung vom Schutzbereich der vorliegenden Erfindung verursachen.
  • Die Beschreibung der Aspekte und Merkmale ist vorgesehen, um irgendeinem Fachmann auf dem Gebiet zu ermöglichen, die Systeme, Vorrichtungen herzustellen und zu verwenden und die offenbarten Verfahren durchzuführen. Verschiedene Modifikationen sind für den Fachmann auf dem Gebiet leicht ersichtlich und die in diesem Dokument beschriebenen Prinzipien können auf andere Aspekte angewendet werden, ohne vom Gedanken oder Schutzbereich der Offenbarung abzuweichen. Folglich soll die Beschreibung nicht die Ansprüche begrenzen. Vielmehr soll den Ansprüchen ein Umfang zugestanden werden, der mit den hier offenbarten Prinzipien und neuen Merkmalen konsistent ist.
  • In Bezug auf Beispielprozesse umfassen die Zeichnungen eine relative Ordnung von Prozesskomponenten nur als Hilfe beim Verständnis der Beschreibung. Eine solche relative Ordnung ist keine implizite Offenbarung irgendeiner spezifischen Begrenzung für die Ordnung oder Anordnung von Prozesskomponenten. Im Allgemeinen können Prozessbegrenzungen sequentiell ausgetauscht werden, ohne vom Schutzbereich der Offenbarung abzuweichen, und Mittel-plus-Funktions-Bestimmungen in den Ansprüchen sollen die beschriebenen Strukturen als die angeführte Funktion durchführend abdecken, die nicht nur strukturelle Äquivalente, sondern auch äquivalente Strukturen umfassen.
  • Ferner wurden bestimmte Unterteilungen von Komponenten und Prozessen ausgewählt, aber diese Implementierungen gemäß der Offenbarung müssen diese Unterteilungen nicht aufrechterhalten, und können Funktionen anders zuweisen oder gruppieren. Eine solche Funktionalität kann beispielsweise anders verteilt sein oder in anderen Komponenten als, zusätzlich zu oder weniger als den hier identifizierten durchgeführt werden. Vielmehr sind die beschriebenen Merkmale und Schritte als Beispiele von Komponenten von Systemen und Verfahren innerhalb des Schutzbereichs der beigefügten Ansprüche offenbart.

Claims (19)

  1. Rechensystem, umfassend: einen nichtflüchtigen Speicher; und einen Prozessor, der ausgelegt ist zum Wiedergeben von Pixeldaten für eine erste Wiedergabeoberfläche, wobei die Pixeldaten in mehreren Bereichen organisiert sind, die gemeinsam die erste Wiedergabeoberfläche bilden; Speichern von Daten im Speicher, die die erste Wiedergabeoberfläche darstellen, wobei die Daten Speichersegmente, die Pixeldaten für Bereiche der ersten Wiedergabeoberfläche speichern, und eine Abbildung zwischen jedem Bereich und einem Verweis auf das Speichersegment, das die Pixeldaten für diesen Bereich speichert, umfassen; Speichern von Daten im Speicher, die eine zweite Wiedergabeoberfläche darstellen, wobei die Daten umfassen Speichersegmente, die nur Bereiche von Pixeldaten der zweiten Wiedergabeoberfläche speichern, die als anders als Pixeldaten von jeweiligen entsprechenden Bereichen der ersten Wiedergabeoberfläche bestimmt werden, und eine Abbildung mit den Verweisen auf die Speichersegmente, die Pixeldaten für Bereiche der ersten Wiedergabeoberfläche mit denselben Pixeldaten wie jeweilige entsprechende Bereiche der zweiten Wiedergabeoberfläche speichern, und Verweisen auf die Speichersegmente, die die Pixeldaten für Bereiche der zweiten Wiedergabeoberfläche mit anderen Pixeldaten als jeweilige entsprechende Bereiche der ersten Wiedergabeoberfläche speichern.
  2. Rechensystem nach Anspruch 1, wobei der Prozessor ferner zum Unterhalten eines jeweiligen Zählwerts ausgelegt ist, der jedem Speichersegment zugeordnet ist, der eine Anzahl von Oberflächen verfolgt, die die Pixeldaten verwenden, die in diesem Speichersegment gespeichert sind.
  3. Rechensystem nach Anspruch 1, das ferner eine Anzeigesteuereinheit umfasst, die dazu ausgelegt ist, die Abbildung zu lesen und die Abbildung zu verwenden, um ein jeweiliges Speichersegment zu identifizieren, das die Pixeldaten für jeden Bereich der ersten Oberfläche speichert.
  4. Rechensystem nach Anspruch 3, wobei die Anzeigesteuereinheit ferner dazu ausgelegt ist, den Zähler zu dekrementieren, der jedem Speichersegment zugeordnet ist, das als Pixeldaten für die erste Oberfläche speichernd identifiziert ist.
  5. Verfahren zum Darstellen von graphischen Wiedergabeausgaben mit gespeicherten Daten, das umfasst: Bereitstellen einer Wiedergabeoberfläche mit mehreren Bereichen von Pixeldaten; Bestimmen, welche Bereiche der mehreren Bereiche andere Pixeldaten als ein jeweiliger entsprechender Bereich von Pixeldaten aus einer vorherigen Wiedergabeoberfläche aufweisen, und welche Bereiche der mehreren Bereiche dieselben Pixeldaten wie ein jeweiliger entsprechender Bereich von Pixeldaten aus der vorherigen Wiedergabeoberfläche aufweisen, wobei Pixeldaten für jeden Bereich der vorherigen Wiedergabeoberfläche in jeweiligen Speichersegmenten eines nichtflüchtigen Speichers gespeichert werden; Speichern der Pixeldaten für jeden Bereich der mehreren Bereiche in jeweiligen Speichersegmenten des nichtflüchtigen Speichers, die als andere Pixeldaten als jeweilige entsprechende Bereiche aus der vorherigen Wiedergabeausgabe aufweisend bestimmt werden; und Erzeugen einer Abbildung mit Verweisen auf jedes Speichersegment, das Pixeldaten für einen Bereich speichert, der als andere Pixeldaten als ein entsprechender Bereich aus der vorherigen Wiedergabeausgabe aufweisend bestimmt wird, und für jeden Bereich der Wiedergabeoberfläche mit denselben Pixeldaten wie die vorherige Wiedergabeoberfläche eines Verweises auf das Speichersegment, das die Pixeldaten für diesen Bereich der vorherigen Wiedergabeoberfläche speichert.
  6. Verfahren nach Anspruch 5, das ferner ein Inkrementieren eines jeweiligen Zählwerts umfasst, der jedem Speichersegment zugeordnet ist, das einen Bereich von Pixeldaten speichert, die als dieselben in der Wiedergabeoberfläche und der vorherigen Wiedergabeoberfläche bestimmt werden.
  7. Verfahren nach Anspruch 6, das ferner ein Dekrementieren eines jeweiligen Zählwerts, der jedem Speichersegment zugeordnet ist, in Reaktion auf das Verbrauchen der Pixeldaten aus dem Speichersegment umfasst.
  8. Computergraphiksystem, das umfasst: einen nichtflüchtigen Speicher; und eine Pixeldatensenke zum Lesen von Pixeldaten für eine Reihe von Wiedergabeoberflächen aus dem nichtflüchtigen Speicher durch Durchführen eines Prozesses, der umfasst Lesen einer Abbildung zwischen jedem Bereich einer ersten Wiedergabeoberfläche und einem Verweis auf ein Speichersegment, das Pixeldaten für diesen Bereich speichert, Lesen von Daten, die die erste Wiedergabeoberfläche darstellen, aus Speichersegmenten, die Pixeldaten für entsprechende Bereiche der ersten Wiedergabeoberfläche speichern, Verwenden der Daten, die die erste Wiedergabeoberfläche definieren, Lesen einer Abbildung zwischen jedem Bereich einer zweiten Wiedergabeoberfläche und Speichersegmenten, die Pixeldaten für diesen Bereich der zweiten Wiedergabeoberfläche speichern, wobei die Abbildung für Bereiche der zweiten Wiedergabeoberfläche, die zu Bereichen der ersten Wiedergabeoberfläche identisch sind, dieselben Speichersegmente wie die Abbildung für die erste Wiedergabeoberfläche identifiziert, und anderen Speichersegmenten, die Daten für Bereiche der zweiten Wiedergabeoberfläche speichern, die sich von entsprechenden Bereichen der ersten Wiedergabeoberfläche unterscheiden, Lesen von Daten, die die zweite Wiedergabeoberfläche darstellen, aus abgebildeten Speichersegmenten, die Pixeldaten für entsprechende Bereiche der zweiten Wiedergabeoberfläche speichern, und Verwenden der Daten, die die erste Wiedergabeoberfläche definieren.
  9. Computergraphiksystem nach Anspruch 8, das ferner eine Speichersteuereinheit umfasst, die dazu ausgelegt ist, eine Sammlung von Speichersegmenten zu unterhalten, die zum Speichern von Pixeldaten aus einer Pixelquelle zugewiesen sind, wobei die Sammlung von Speichersegmenten eine Größe aufweist, die gleichzeitig Pixeldaten für wenigstens drei Wiedergabeoberflächen mit einer bestimmten Auflösung speichern kann.
  10. Computergraphiksystem nach Anspruch 9, wobei die Pixeldatenquelle ferner dazu ausgelegt ist, jeden entsprechenden Bereich von Pixeldaten in der ersten wiedergegebenen Oberfläche einem jeweiligen Zähler zuzuordnen und den jeweiligen Zähler eines Bereichs der ersten Wiedergabeoberfläche zu inkrementieren, falls auf diesen Bereich durch eine zweite Wiedergabeoberfläche verwiesen wird.
  11. Computergraphiksystem nach Anspruch 10, wobei die Pixeldatensenke ferner ausgelegt ist zum Dekrementieren des jeweiligen Zählers für jeden Bereich von Pixeldaten in der ersten wiedergegebenen Oberfläche, jedes Mal, wenn Pixeldaten aus diesem Bereich verwendet werden, um einen Rahmen zur Anzeige zu erzeugen.
  12. Computergraphiksystem nach Anspruch 9, das ferner eine Speichereinheit umfasst, die zum Überwachen jedes Zählers und in Reaktion auf irgendeinen Zähler, der angibt, dass auf das Speichersegment nicht mehr für irgendeine Wiedergabeoberfläche verwiesen wird, Zurückgeben dieses Speichersegments zu einer Liste von freien Speichersegmenten ausgelegt ist.
  13. Computergraphiksystem nach Anspruch 9, das ferner das Aufrechterhalten jedes Bereichs von Pixeldaten von der ersten wiedergegebenen Oberfläche im Speicher, bis die zweite wiedergegebene Oberfläche verbraucht wurde, umfasst.
  14. Computergraphiksystem nach Anspruch 8, wobei die Pixelquelle einen oder mehrere eines 3-D-Graphikprozessors und eines Videocodierers umfasst.
  15. Computergraphiksystem nach Anspruch 8, wobei die Pixelsenke eine Anzeigesteuereinheit umfasst.
  16. Maschinenimplementiertes Verfahren zum Betreiben des Zugriffs auf Pixeldaten, das umfasst: Empfangen eines Indikators zur Ausgabe eines Rahmens von Pixeldaten; in Reaktion auf den Indikator identifizieren einer Abbildung von Bereichen von Pixeldaten, wobei die Bereiche von Pixeldaten gemeinsam den Rahmen definieren; Lesen der Bereiche von Pixeldaten, die durch die Abbildung identifiziert sind, aus einem nichtflüchtigen Speicher; Unterhalten eines Satzes von Indikatoren, die verfolgen, ob jeder Bereich von Pixeldaten beim Definieren irgendeines anderen Rahmens von Pixeldaten verwendet wird; und für irgendeinen Bereich von Pixeldaten, die den ausgegebenen Rahmen definieren und die nicht beim Definieren von irgendeinem anderen Rahmen verwendet werden, Freigeben eines Speichersegments im nichtflüchtigen Speicher, das diesen Bereich von Pixeldaten speichert.
  17. Maschinenimplementiertes Verfahren zum Betreiben des Zugriffs auf Pixeldaten nach Anspruch 16, wobei eine Anzeigesteuereinheit das Verfahren durchführt und das Empfangen das Empfangen eines Indikators zur Ausgabe des Rahmens von Pixeldaten an eine Anzeige umfasst.
  18. Maschinenimplementiertes Verfahren zum Betreiben des Zugriffs auf Pixeldaten nach Anspruch 16, das ferner ein Überwachen eines Schreibsperrzustandes von Speichersegmenten, die Bereiche von Pixeldaten speichern, während eines Wiedergabeprozesses, der die Bereiche von Pixeldaten erzeugt, die den Rahmen definieren, umfasst.
  19. Maschinenimplementiertes Verfahren zum Betreiben des Zugriffs auf Pixeldaten nach Anspruch 16, wobei jeder Bereich von Pixeldaten einer Kachel von Pixeldaten entspricht, die durch ein Graphikverarbeitungselement erzeugt werden.
DE102013014846.4A 2012-09-06 2013-09-05 Systeme und Verfahren zur teilweisen Rahmenpufferaktualisierung Pending DE102013014846A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201261697785P 2012-09-06 2012-09-06
US61/697,785 2012-09-06

Publications (1)

Publication Number Publication Date
DE102013014846A1 true DE102013014846A1 (de) 2014-03-06

Family

ID=49486810

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013014846.4A Pending DE102013014846A1 (de) 2012-09-06 2013-09-05 Systeme und Verfahren zur teilweisen Rahmenpufferaktualisierung

Country Status (4)

Country Link
US (2) US9672584B2 (de)
CN (2) CN109118570B (de)
DE (1) DE102013014846A1 (de)
GB (1) GB2507851B (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9940686B2 (en) * 2014-05-14 2018-04-10 Intel Corporation Exploiting frame to frame coherency in a sort-middle architecture
KR102317091B1 (ko) 2014-12-12 2021-10-25 삼성전자주식회사 영상 처리 장치 및 방법
US10163180B2 (en) * 2015-04-29 2018-12-25 Qualcomm Incorporated Adaptive memory address scanning based on surface format for graphics processing
KR20160131526A (ko) 2015-05-07 2016-11-16 삼성전자주식회사 시스템 온 칩, 상기 시스템 온 칩을 포함하는 디스플레이 시스템, 및 상기 디스플레이 시스템의 동작 방법
KR102531741B1 (ko) * 2016-01-12 2023-05-11 삼성전자 주식회사 멀티플 버퍼를 가지는 메모리 장치 및 멀티플 버퍼를 가지는 메모리를 구동하는 방법
KR102511363B1 (ko) * 2016-02-04 2023-03-17 삼성전자주식회사 디스플레이 장치 및 디스플레이 방법
US20170243322A1 (en) * 2016-02-19 2017-08-24 Remi Sigrist Multiple frame buffering for graphics processing
US10373286B2 (en) 2016-08-03 2019-08-06 Samsung Electronics Co., Ltd. Method and apparatus for performing tile-based rendering
US20180130443A1 (en) * 2016-11-04 2018-05-10 Nausheen Ansari Techniques for managing transmission and display of a display data stream
US10523956B2 (en) 2016-11-16 2019-12-31 Citrix Systems, Inc. Multi-pixel caching scheme for lossless encoding
US10672367B2 (en) * 2017-07-03 2020-06-02 Arm Limited Providing data to a display in data processing systems
GB2575030B (en) * 2018-06-22 2020-10-21 Advanced Risc Mach Ltd Data processing systems
KR102423449B1 (ko) 2018-09-01 2022-07-21 삼성전자 주식회사 전자 장치 및 이를 이용한 화면 부분 업데이트 방법
CN109599135B (zh) * 2018-11-14 2021-02-09 西安翔腾微电子科技有限公司 Gpu帧缓冲区存储硬件、存储方法、存储系统和存储介质
CN110018759B (zh) * 2019-04-10 2021-01-12 Oppo广东移动通信有限公司 界面显示方法、装置、终端及存储介质
JP7120143B2 (ja) * 2019-04-22 2022-08-17 株式会社デンソー 車両用装置、車両用装置の制御方法

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB247115A (en) * 1925-09-30 1926-02-11 Ernst Kleinmann Shoulder straps for supporting ladies underwear
US4695883A (en) * 1985-10-24 1987-09-22 Concept Communications, Inc. Digital video compression system with variable digital filter
US5220312A (en) * 1989-09-29 1993-06-15 International Business Machines Corporation Pixel protection mechanism for mixed graphics/video display adaptors
US5353061A (en) * 1992-10-08 1994-10-04 International Business Machines Corporation System and method for frame-differencing video compression/decompression using perceptually-constant information and image analysis
US5586200A (en) * 1994-01-07 1996-12-17 Panasonic Technologies, Inc. Segmentation based image compression system
US5838334A (en) * 1994-11-16 1998-11-17 Dye; Thomas A. Memory and graphics controller which performs pointer-based display list video refresh operations
US6072548A (en) * 1997-07-28 2000-06-06 Lsi Logic Corporation Video decoder dynamic memory allocation system and method allowing variable decoded image size
US6457034B1 (en) * 1999-11-02 2002-09-24 Ati International Srl Method and apparatus for accumulation buffering in the video graphics system
US6747658B2 (en) * 2001-12-31 2004-06-08 Intel Corporation Automatic memory management for zone rendering
US6975322B2 (en) * 2002-03-12 2005-12-13 Sun Microsystems, Inc. Dynamically adjusting a number of rendering passes in a graphics system
US7224731B2 (en) * 2002-06-28 2007-05-29 Microsoft Corporation Motion estimation/compensation for screen capture video
US20040008785A1 (en) * 2002-07-15 2004-01-15 Koninklijke Philips Electronics N.V. L-frames with both filtered and unfilterd regions for motion comensated temporal filtering in wavelet based coding
KR100506864B1 (ko) * 2002-10-04 2005-08-05 엘지전자 주식회사 모션벡터 결정방법
US6911983B2 (en) * 2003-03-12 2005-06-28 Nvidia Corporation Double-buffering of pixel data using copy-on-write semantics
US6911984B2 (en) * 2003-03-12 2005-06-28 Nvidia Corporation Desktop compositor using copy-on-write semantics
US8107535B2 (en) * 2003-06-10 2012-01-31 Rensselaer Polytechnic Institute (Rpi) Method and apparatus for scalable motion vector coding
US7274370B2 (en) * 2003-12-18 2007-09-25 Apple Inc. Composite graphics rendered using multiple frame buffers
US7170526B1 (en) * 2004-01-26 2007-01-30 Sun Microsystems, Inc. Method and apparatus for redirecting the output of direct rendering graphics calls
US8036271B2 (en) * 2004-02-24 2011-10-11 Lsi Corporation Method and apparatus for determining a second picture for temporal direct-mode block prediction
GB0426170D0 (en) * 2004-11-29 2004-12-29 Falanx Microsystems As Processing of computer graphics
JP2007088922A (ja) * 2005-09-22 2007-04-05 Sanyo Electric Co Ltd 符号化装置と符号化方法
US8233535B2 (en) * 2005-11-18 2012-07-31 Apple Inc. Region-based processing of predicted pixels
US20070165042A1 (en) * 2005-12-26 2007-07-19 Seitaro Yagi Rendering apparatus which parallel-processes a plurality of pixels, and data transfer method
US20080002773A1 (en) * 2006-06-26 2008-01-03 Texas Instruments Incorporated Video decoded picture buffer
US8207972B2 (en) * 2006-12-22 2012-06-26 Qualcomm Incorporated Quick pixel rendering processing
US20080222581A1 (en) * 2007-03-09 2008-09-11 Mips Technologies, Inc. Remote Interface for Managing the Design and Configuration of an Integrated Circuit Semiconductor Design
TWI357987B (en) * 2007-10-24 2012-02-11 Hannstar Display Corp A three-dimension image display device and a displ
US8120621B1 (en) * 2007-12-14 2012-02-21 Nvidia Corporation Method and system of measuring quantitative changes in display frame content for dynamically controlling a display refresh rate
US20090161766A1 (en) * 2007-12-21 2009-06-25 Novafora, Inc. System and Method for Processing Video Content Having Redundant Pixel Values
GB2461900B (en) * 2008-07-16 2012-11-07 Advanced Risc Mach Ltd Monitoring graphics processing
US8189666B2 (en) * 2009-02-02 2012-05-29 Microsoft Corporation Local picture identifier and computation of co-located information
JP5835879B2 (ja) * 2009-09-25 2015-12-24 アーム・リミテッド メモリからのデータの配列の読み込みを制御する方法および装置
US8659616B2 (en) * 2010-02-18 2014-02-25 Nvidia Corporation System, method, and computer program product for rendering pixels with at least one semi-transparent surface
US8493404B2 (en) * 2010-08-24 2013-07-23 Qualcomm Incorporated Pixel rendering on display
US9367927B2 (en) * 2011-07-13 2016-06-14 Nec Corporation Moving image region detection device

Also Published As

Publication number Publication date
US9672584B2 (en) 2017-06-06
GB2507851A (en) 2014-05-14
US20170301057A1 (en) 2017-10-19
CN109118570A (zh) 2019-01-01
CN103679785A (zh) 2014-03-26
CN109118570B (zh) 2023-04-18
CN103679785B (zh) 2018-08-03
US20140063030A1 (en) 2014-03-06
US9990692B2 (en) 2018-06-05
GB201315855D0 (en) 2013-10-23
GB2507851B (en) 2017-05-17

Similar Documents

Publication Publication Date Title
DE102013014846A1 (de) Systeme und Verfahren zur teilweisen Rahmenpufferaktualisierung
DE102013017639B4 (de) Zwischenspeicherung von adaptiv dimensionierten Cache-Kacheln in einem vereinheitlichten L2-Cache-Speicher mit Oberflächenkomprimierung
DE102018132468A1 (de) Multi-gpu-frame-rendern
DE60109434T2 (de) Systeme und verfahren zur erzeugung von visuellen darstellungen von graphischen daten
DE102013017640B4 (de) Verteilte gekachelte Zwischenspeicherung
DE102016211642B4 (de) Patch-speichersystem
DE102015113797B4 (de) Relative Kodierung für eine blockbasierte Begrenzungsvolumenhierarchie
DE102014004841B4 (de) Grafik auf Kachelbasis
DE102013017509A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE102013017510A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE102015107869A1 (de) Vergabe von Primitiven an Primitiv-Blöcke
DE112018004343T5 (de) Mehrraum-rendering mit konfigurierbaren transformationsparametern
DE102013020807A1 (de) Handhabung von nachgeordneten Z-Abdeckungsdaten in Rasteroperationen
CN111798556B (zh) 图像渲染方法、装置、设备和存储介质
DE102013202173A1 (de) Einheitliche Lade-Verarbeitung für Teilsätze von parallelen Threads
DE102013020968A1 (de) Technik zum Zugreifen auf einen inhaltsadressierbaren Speicher
DE102013018139A1 (de) Technik zur Speicherung gemeinsamer Vertices
DE102013018445A1 (de) Festlegung eines nachgeordneten Bilderzeugungszustands in einer vorgeordneten Schattierungseinheit
DE102020201154A1 (de) Verfahren und vorrichtung zum speichern von und zugreifen auf mehrdimensionale daten
DE102019127726A1 (de) Für fernarbeitsplatz-anwendungen geeignetes streaming individueller anwendungsfenster
DE102013020485A1 (de) Technik zur Ausführung von Speicherzugriffsoperationen über eine Textur-Hardware
DE4341304A1 (de) Verfahren und Vorrichtung zur Verwendung eines Videopuffers
DE102013020966A1 (de) Leistungseffiziente Attribut-Handhabung für Parkettierungs- und Geometrie-Schattierungseinheiten
DE112021001345T5 (de) On-demand speicherzuweisung
DE102013020967A1 (de) Technik zur Ausführung von Speicherzugriffsoperationen über eine Textur-Hardware

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R082 Change of representative

Representative=s name: WESTPHAL, MUSSGNUG & PARTNER PATENTANWAELTE MI, DE

R016 Response to examination communication