BR112018005244B1 - Armazenamento de dados gráficos compactados de largura de banda - Google Patents

Armazenamento de dados gráficos compactados de largura de banda Download PDF

Info

Publication number
BR112018005244B1
BR112018005244B1 BR112018005244-2A BR112018005244A BR112018005244B1 BR 112018005244 B1 BR112018005244 B1 BR 112018005244B1 BR 112018005244 A BR112018005244 A BR 112018005244A BR 112018005244 B1 BR112018005244 B1 BR 112018005244B1
Authority
BR
Brazil
Prior art keywords
data
bandwidth
compressed
blocks
graphics
Prior art date
Application number
BR112018005244-2A
Other languages
English (en)
Inventor
Andrew Evan Gruber
Rexford Alan Hill
Shambhoo Khandelwal
Original Assignee
Qualcomm Incorporated
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 Qualcomm Incorporated filed Critical Qualcomm Incorporated
Publication of BR112018005244B1 publication Critical patent/BR112018005244B1/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/08Bandwidth reduction

Abstract

ARMAZENAMENTO DE DADOS GRÁFICOS COMPACTADOS DE LARGURA DE BANDA. Um dispositivo de computação pode alocar uma pluralidade de blocos na memória, em que cada um da pluralidade de blocos é de um tamanho fixo uniforme na memória. O dispositivo de computação pode também armazenar uma pluralidade de dados gráficos compactados de largura de banda na respectiva pluralidade de blocos na memória, em que um ou mais dentre a pluralidade de dados gráficos compactados por largura de banda cada um tem um tamanho que é menor do que o tamanho fixo. O dispositivo de computação pode também armazenar dados associados com a pluralidade de dados gráficos compactados por largura de banda em espaço não utilizado de um ou mais dentre a pluralidade de blocos que contém o respectivo ou mais dentre a pluralidade de dados gráficos compactados por largura de banda.

Description

CAMPO TÉCNICO
[001] A presente invenção refere-se a armazenamento de dados e, mais especificamente, a armazenamento de dados gráficos compactados de largura de banda na memória.
FUNDAMENTOS
[002] Um dispositivo que fornece conteúdo para apresentação visual em um monitor eletrônico geralmente inclui uma unidade de processamento gráfico (GPU). A GPU torna os pixels que são representativos do conteúdo em um visor. A GPU gera um ou mais valores de pixel para cada pixel no visor e executa processamento gráfico sobre os valores de pixel para cada pixel no visor para renderizar cada pixel para apresentação que executa sombreamento de fragmento dos fragmentos gerados pelo estágio de rasterização.
SUMÁRIO
[003] As técnicas desta descrição relacionam-se geralmente a técnicas para armazenar uma pluralidade de dados gráficos compactados por largura de banda em memória juntamente com dados adicionais que são associados com a pluralidade de dados gráficos compactados por largura de banda. A pluralidade de dados gráficos compactados por largura de banda pode variar em tamanho e a pluralidade de dados gráficos compactados por largura de banda são armazenados em blocos de tamanho uniforme na memória que podem acomodar os dados gráficos compactados de largura de banda maiores para fora da pluralidade de dados gráficos compactados por largura de banda. Portanto, o armazenamento da pluralidade de dados gráficos compactados de largura de banda nos blocos de tamanho uniforme na memória pode resultar em espaço não usado remanescente em alguns dos blocos na memória que armazenam a pluralidade de dados gráficos compactados de largura de banda. Tal espaço não utilizado em alguns dos blocos na memória pode ser utilizado para armazenar dados adicionais que são associados com a pluralidade de dados gráficos compactados por largura de banda, tal como dados de profundidade associados com a pluralidade de dados gráficos compactados por largura de banda ou códigos hash que identificam cada um da pluralidade de dados gráficos compactados por largura de banda.
[004] Em um exemplo da revelação, um método para processamento gráfico pode incluir armazenamento, por pelo menos um processador, uma pluralidade de dados gráficos compactados por largura de banda em uma respectiva pluralidade de blocos na memória, em que cada um da pluralidade de blocos é de um tamanho fixo uniforme na memória, e em que um ou mais dentre a pluralidade de dados gráficos compactados por largura de banda tem um tamanho que é menor do que o tamanho fixo. O processo pode ainda incluir armazenamento, por pelo menos um processador, dados associados com a pluralidade de dados gráficos compactados por largura de banda em espaço não utilizado de um ou mais dentre a pluralidade de blocos que contém o respectivo um ou mais dentre a pluralidade de dados gráficos compactados por largura de banda.
[005] Em outro exemplo da revelação, um aparelho configurado para processar dados gráficos pode incluir memória. O aparelho pode ainda incluir pelo menos um processador configurado para: armazenar uma pluralidade de dados gráficos compactados de largura de banda em uma respectiva pluralidade de blocos na memória, em que cada um da pluralidade de blocos é de um tamanho fixo uniforme na memória e em que um ou mais dentre a pluralidade de dados gráficos compactados por largura de banda tem um tamanho que é menor do que o tamanho fixo; e armazenar dados associados com a pluralidade de dados gráficos compactados por largura de banda em espaço não utilizado de um ou mais dentre a pluralidade de blocos que contém o respectivo um ou mais dentre a pluralidade de dados gráficos compactados por largura de banda.
[006] Em um outro exemplo da revelação, um aparelho pode incluir meios para armazenar uma pluralidade de dados gráficos compactados por largura de banda em uma respectiva pluralidade de blocos na memória, em que cada um da pluralidade de blocos é de um tamanho fixo uniforme na memória, e em que um ou mais dentre a pluralidade de dados gráficos compactados por largura de banda tem um tamanho que é menor do que o tamanho fixo. O aparelho pode ainda incluir meios para armazenar dados associados com a pluralidade de dados gráficos compactados por largura de banda em espaço não utilizado de um ou mais dentre a pluralidade de blocos que contém o respectivo ou mais dentre a pluralidade de dados gráficos compactados por largura de banda.
[007] Os detalhes de um ou mais exemplos são estabelecidos nos desenhos anexos e na descrição abaixo. Outras características, objetivos e vantagens serão evidentes a partir da descrição e desenhos, e das reivindicações.
BREVE DESCRIÇÃO DOS DESENHOS
[008] A Figura 1 é um diagrama de blocos que ilustra um exemplo de dispositivo de computação que pode ser configurado para implementar um ou mais aspectos da presente invenção para armazenar dados gráficos compactados por largura de banda na memória.
[009] A Figura 2 é um diagrama de blocos que ilustra implementações de exemplo da CPU, a GPU, e a memória do sistema da Figura 1 em maiores detalhes.
[0010] As Figuras 3A -3 F são diagramas conceituais que ilustram técnicas de exemplo para o armazenamento de dados gráficos compactados de largura de banda na memória.
[0011] A Figura 4 é um fluxograma que ilustra um processo exemplar para armazenar dados gráficos compactados por largura de banda na memória
DESCRIÇÃO DETALHADA
[0012] Dados gráficos compactados por largura de banda são dados gráficos que são comprimidos de forma que possam ser transferidos mais rapidamente através dos barramentos de um dispositivo de computação. Unidade de processamento gráfico (GPU) de um dispositivo de computação executa operações de processamento de gráficos em dados gráficos, tal como uma superfície, o dispositivo de computação pode transferir a superfície através de um barramento entre a GPU e a memória ou entre diferentes memórias. Por exemplo, o dispositivo de computação pode executar uma operação de composição que combina duas superfícies diferentes através da transferência daquelas duas superfícies da memória para a GPU para realizar a operação de composição, e transferir a superfície composta resultante da GPU de volta para a memória. Assim, pela redução do tamanho da superfície por meio de compressão, o dispositivo de computação pode transferir a superfície mais rapidamente entre os componentes do dispositivo de computação, desse modo aperfeiçoando o desempenho do dispositivo de computação.
[0013] O dispositivo de computação pode executar a compressão de largura de banda de uma superfície dividindo a superfície em sub-regiões e comprimir cada uma das sub-regiões da superfície para gerar uma pluralidade de dados gráficos compactados por largura de banda. A pluralidade de dados gráficos compactados por largura de banda pode variar em tamanho devido às diferenças no conteúdo entre sub-regiões da superfície. Por exemplo, um dispositivo de computação pode ser capaz de comprimir uma sub-região da superfície que contém de forma uniforme os pixels da figura uma cor única em um tamanho relativamente menor do que outra sub-região da superfície que contém pixels de muitas cores diferentes.
[0014] O dispositivo de computação pode armazenar a pluralidade de dados gráficos compactados por largura de banda em uma pluralidade de blocos uniformemente dimensionados que o dispositivo de computação aloca na memória. Cada um dos blocos é grande o suficiente para conter o maior dentre a pluralidade de dados gráficos compactados por largura de banda. Porque cada um da pluralidade de blocos é o mesmo tamanho enquanto a pluralidade de dados gráficos compactados por largura de banda pode variar em tamanho, armazenar a pluralidade de dados gráficos compactados de largura de banda na pluralidade de blocos pode resultar em um ou mais dos blocos que cada um tem espaço não usado que não é ocupado pelos respectivos dados gráficos compactados de largura de banda armazenados no bloco.
[0015] De acordo com aspectos da presente descrição, o dispositivo de computação pode armazenar outros dados associados com a pluralidade de dados gráficos compactados por largura de banda no espaço não utilizado de um ou mais dos blocos. Por exemplo, ao invés de armazenar dados de profundidade associados com a pluralidade de dados gráficos compactados por largura de banda em uma área separada (por exemplo, bloco) em memória, o dispositivo de computação pode, em vez disso, armazenar tais dados de profundidade no espaço não usado de um ou mais dos blocos. De forma similar, o dispositivo de computação pode armazenar códigos hash que identificam cada uma da pluralidade de dados gráficos compactados por largura de banda no espaço não utilizado de um ou mais dos blocos. Deste modo, o dispositivo de computação pode utilizar o espaço não usado na pluralidade de blocos para armazenar dados adicionais associados com a pluralidade de dados gráficos compactados de largura de banda, desse modo aumentando a eficiência de utilização de memória do dispositivo de computação.
[0016] Os outros dados que o dispositivo de computação podem armazenar no espaço não utilizado de um ou mais blocos podem ser superfícies de otimização, pelo fato de que o dispositivo de computação pode usar tais dados para otimizar o desempenho das operações gráficas nos dados gráficos. Por exemplo, o dispositivo de computação pode utilizar os dados de profundidade para aumentar seu desempenho na renderização dos dados gráficos associados, enquanto o dispositivo de computação pode utilizar os códigos hash para aumentar seu desempenho de certas operações gráficas nos dados gráficos. Como tal, o dispositivo de computação pode armazenar qualquer número de dados adicionais diferentes de dados de profundidade ou códigos hash no espaço não utilizado de um ou mais blocos, incluindo armazenar superfícies de otimização adicionais que podem ser usadas para otimizar a sintetização dos dados gráficos.
[0017] A Figura 1 é um diagrama de blocos que ilustra um exemplo de dispositivo de computação que pode ser configurado para implementar um ou mais aspectos da presente invenção para armazenar dados gráficos compactados por largura de banda na memória. Conforme mostrado na Figura 1, o dispositivo 2 pode ser um dispositivo de computação incluindo mas não limitado a dispositivos de vídeo, jogadores de mídia, caixas de topo de mesa, aparelhos sem fio tais como telefones móveis e assim denominados telefones inteligentes, assistentes digitais pessoais (PDAs), computadores de mesa, computadores laptop, consoles de jogos, unidades de videoconferência, dispositivos de computação de mesa, e semelhantes. No exemplo da Figura 1, o dispositivo 2 pode incluir uma unidade de processamento central (CPU) 6, memória de sistema 10, e GPU 12. O Dispositivo 2 também pode incluir processador de exibição 14, módulo de transceptor 3, interface de usuário 4, e mostrador 8. Módulo transceptor 3 e processador de exibição 14 podem ambos ser parte do mesmo circuito integrado (IC) como CPU 6 e/ou GPU 12, podem ambos ser externos ao IC ou ICs que incluem a CPU 6 e/ou a GPU 12, ou pode ser formado no IC que é externo ao IC que inclui a CPU 6 e/ou a GPU 12.
[0018] Dispositivo 2 pode incluir módulos ou unidades adicionais não mostradas na Figura 1 para fins de clareza. Por exemplo, o dispositivo 2 pode incluir um alto- falante e um microfone, nenhum dos quais é mostrado na Figura 1, para efetuar comunicações telefônicas em exemplos onde o dispositivo 2 é um telefone sem fio móvel, ou um alto-falante onde o dispositivo 2 é um tocador de mídia. O dispositivo 2 também pode incluir uma câmera de vídeo Além disso, os vários módulos e unidades mostrados no dispositivo 2 podem não ser necessários em cada exemplo de dispositivo 2. Por exemplo, interface de usuário 4 e mostrador 8 podem ser externas ao dispositivo 2 em exemplos onde o dispositivo 2 é um computador de mesa ou outro dispositivo que é equipado para interfacear com uma interface ou exibição de usuário externa.
[0019] Exemplos de interface de usuário 4 incluem, mas não estão limitados a, um trackball, um mouse, um teclado e outros tipos de dispositivos de entrada. A interface de usuário 4 também pode ser uma tela de toque e pode ser incorporada como uma parte de uma tela 8. O módulo de Transceptor 3 pode incluir um circuito para permitir comunicação sem fio ou cabeada entre o dispositivo de computação 2 e um outro dispositivo ou uma rede. Módulo de transceptor 3 pode incluir moduladores, demoduladores, amplificadores e outros tais circuitos para comunicação com fios ou sem fios.
[0020] A CPU 6 pode ser um microprocessador, tal como uma unidade central de processamento (CPU) configurado para processar instruções de um programa de computador para execução. A CPU 6 pode compreender um processador de uso geral ou de finalidade especial que controla a operação do dispositivo de computação 2. Um usuário pode fornecer entrada para o dispositivo de computação 2 para fazer com que a CPU 6 execute uma ou mais aplicações de software. As aplicações de software que executam na CPU 6 podem incluir, por exemplo, um sistema operacional, um aplicativo de processador de texto, um aplicativo de e-mail, um aplicativo de folha de espalhamento, uma aplicação de tocador de mídia, uma aplicação de videogame, uma aplicação gráfica de interface com o usuário ou um outro programa. Adicionalmente, a CPU 6 pode executar o acionador de GPU 22 para controlar a operação da GPU 12. O usuário pode fornecer entrada para o dispositivo de computação 2 através de um ou mais dispositivos de entrada (não mostrados) tal como um teclado, um mouse, um microfone, um bloco de toque ou outro dispositivo de entrada que é acoplado ao dispositivo de computação 2 através da interface de usuário 4.
[0021] As aplicações de software que executam na CPU 6 podem incluir uma ou mais instruções de sintetização de gráficos que instruam a CPU 6 para causar a renderização de dados gráficos para a tela 8. Em Alguns exemplos, as instruções de software podem se conformar a uma interface de programação de aplicação gráfica (API), tal como, por exemplo, uma Biblioteca de gráficos Abertos (Opg1®) API, um Sistema Embutido de Biblioteca de gráficos Abertos (OpenGL ES) API, uma API Direct3D, uma API X3D, uma API De RenderMan, uma API de WebGL, ou qualquer outra API de Gráficos Padrão pública ou proprietário.
[0022] Processo para processar as instruções de renderização de gráficos das aplicações de software, a CPU 6 pode emitir um ou mais comandos de renderização de gráficos para a GPU 12 (por exemplo, através do acionador da GPU22) para fazer com que a GPU 12 execute alguma ou toda a renderização dos dados gráficos. Em alguns exemplos, os dados gráficos a serem renderizados podem incluir uma lista de primitivos gráficos, por exemplo, pontos, linhas, triângulos, quadriláteros, tiras de triângulo, etc.
[0023] A GPU 12 pode ser configurada para executar operações gráficas para tornar um ou mais primitivos gráficos para exibir 8. Assim, quando uma das aplicações de software executando na CPU 6 requer processamento gráfico, a CPU 6 pode prover comandos gráficos e dados gráficos para a GPU 12 para renderizar a tela 8. Os dados gráficos podem incluir, por exemplo, comandos de desenho, informação de estado, informação primitiva, informação de textura, etc. GPU 12 pode, em alguns casos, ser construída com uma estrutura altamente paralela que proporciona um processamento mais eficiente de operações relacionadas com gráfico complexo do que a CPU 6.Por exemplo, a GPU 12 pode incluir uma pluralidade de elementos de processamento, tais como unidades sombreadoras, que são configuradas para operar em múltiplos vértices ou pixels de uma maneira paralela. A natureza altamente paralela da GPU 12 pode, em alguns casos, permitir a GPU 12 desenhar imagens gráficas (por exemplo cenas gráficas bidimensionais (2D) e/ou tridimensionais (3D)) sobre a tela 8 mais rapidamente do que o desenho das cenas diretamente para a tela 8 utilizando a CPU 6.
[0024] A GPU 12 pode, em alguns casos, ser integrada em uma placa mãe do dispositivo de computação 2.Em outros casos, a GPU 12 pode estar presente em um cartão gráfico que é instalado em um orifício na placa mãe do dispositivo de computação 2 ou pode ser incorporado de outro modo dentro de um dispositivo periférico configurado para interoperar com o dispositivo de computação 2. A GPU 12 pode incluir um ou mais processadores, tais como um ou mais microprocessadores, circuitos integrados de aplicação específica (ASICs), arranjos de porta programáveis em campo (FPGAs), processadores de sinal digital (DSPs), ou outro conjunto de circuito lógico integrado ou discreto equivalente. A GPU 12 também pode incluir um ou mais núcleos de processador, de modo que a GPU 12 possa ser referida como um processador de múltiplos núcleos.
[0025] GPU 12 pode ser diretamente acoplada à memória gráfica 402. Assim, a GPU 12 pode ler dados a partir de e escrever dados à memória gráfica 40 sem usar um barramento. Em outras palavras, a GPU 12 pode processar dados localmente usando um armazenamento local, em vez da memória off-chip. Tal memória gráfica 40 pode ser referida como memória no chip. Isto permite que a GPU 12 opere de maneira mais eficiente ao eliminar a necessidade de GPU 12, dados de leitura e gravação através de um barramento, que pode experimentar tráfego de barramento pesado. Em alguns casos, entretanto, a GPU 12 pode não incluir uma memória separada, mas em vez disso utiliza a memória do sistema 10 através de um barramento. A memória gráfica 40 pode incluir uma ou mais memórias voláteis ou não voláteis ou dispositivos de armazenamento, tais como, por exemplo, memória de acesso aleatório (RAM), RAM estática (SRAM), RAM dinâmica (DRAM), ROM programável apagável (EPROM), ROM programável eletricamente apagável (EEPROM), memória Instantânea, um meio de dados magnéticos ou um meio de armazenamento óptico.
[0026] Em alguns exemplos, a GPU 12 pode armazenar uma imagem completamente formada na memória do sistema 10, onde a imagem pode ser uma ou mais superfícies. Uma superfície, em alguns exemplos, pode ser um bloco bidimensional de pixels, onde cada um dos pixels pode ter um valor de cor. Por toda esta descrição, o termo dados gráficos pode, em um exemplo não limitante, incluir superfícies ou porções de superfícies. O processador de exibição 14 pode recuperar a imagem da memória do sistema 10 e valores de saída que fazem com que os pixels da tela 8 ilumine para exibir a imagem. O visor 8 pode ser o visor do dispositivo de computação 2 que exibe o conteúdo de imagem gerado pela GPU 12. O Mostrador 8 pode ser um visor de cristal líquido (LCD), um visor de diodo emissor de luz orgânico (OLED), um tubo de raios catódicos (CRT) visor, um monitor de plasma, ou outro tipo de dispositivo de exibição.
[0027] De acordo com aspectos da presente descrição, o dispositivo de computação 2 pode alocar uma pluralidade de blocos na memória, tal como a memória do sistema 10 ou a memória gráfica 40, em que cada um da pluralidade de blocos é de um tamanho fixo uniforme na memória. Dispositivo de computação 2 pode também armazenar uma pluralidade de dados gráficos compactados por largura de banda na respectiva pluralidade de blocos na memória, em que um ou mais dentre a pluralidade de dados gráficos compactados por largura de banda tem um tamanho que é menor do que o tamanho fixo. Dispositivo de computação 2 pode também armazenar dados associados com a pluralidade de dados gráficos compactados por largura de banda em espaço não utilizado de um ou mais dentre a pluralidade de blocos que contém o respectivo ou mais dentre a pluralidade de dados gráficos compactados por largura de banda.
[0028] A Figura 2 é um diagrama de blocos que ilustra implementações exemplares da CPU 6, a GPU 12, e a memória do sistema 10 da Figura 1 em maiores detalhes. Conforme mostrado na Figura 2, a CPU 6 pode incluir pelo menos uma aplicação de software 18, API de gráficos 20, e acionador de GPU 22, cada um dos quais pode ser um ou mais aplicativos ou serviços de software que executam na CPU 6.
[0029] Memória disponível para a CPU 6 e GPU 12 pode incluir memória de sistema 10, armazenamento temporário de quadro 16, e renderizar alvos 24. O armazenamento temporário de quadros 16 pode ser uma parte da memória do sistema 10 ou pode ser separado da memória do sistema 10, e pode armazenar dados de imagem renderizados. GPU 12. Também pode tornar os dados de imagem para armazenamento na renderização de alvos 24 Similares à memória intermediária de quadro 16, os alvos de renderização 24 podem ser uma parte da memória do sistema 10 ou podem ser separados da memória do sistema 10.
[0030] A aplicação de Software 18 pode ser qualquer aplicação que utiliza a funcionalidade da GPU 12 Por exemplo, a aplicação de software 18 pode ser uma aplicação GUI, um sistema operacional, uma aplicação de mapeamento portátil, programa de projeto auxiliado por computador para aplicações de engenharia ou artísticas, uma aplicação de videogame, ou outro tipo de aplicação de software que utiliza gráficos 2D ou 3D.
[0031] A aplicação de Software 18 pode incluir uma ou mais instruções de desenho que instruem a GPU 12 para renderizar uma interface gráfica de utilizador (GUI) e/ou uma cena gráfica. Por exemplo, as instruções de desenho podem incluir instruções que definem um conjunto de um ou mais primitivos gráficos a serem renderizados pela GPU 12. Em alguns Exemplos, as instruções de desenho podem, coletivamente, definir toda ou parte de uma pluralidade de superfícies de janela usadas em uma GUI. Em exemplos adicionais, as instruções de desenho podem, coletivamente, definir toda ou parte de uma cena gráfica que inclui um ou mais objetos gráficos dentro de um espaço de modelo ou espaço de mundo definido pela aplicação.
[0032] A aplicação de Software 18 pode invocar o driver de GPU 22, através da API de gráficos 20, para emitir um ou mais comandos para a GPU 12 para a sintetização de um ou mais gráficos primitivos em imagens gráficas exibíveis. Por exemplo, a aplicação de software 18 pode invocar o acionador de GPU 22, através da API de gráficos 20, para fornecer definições primitivas à GPU 12. Em Alguns casos, as definições primitivas podem ser fornecidas à GPU 12 na forma de uma lista de desenhos primitivos, por exemplo, triângulos, retângulos, ventiladores de triângulo, tiras de triângulo, etc. as definições primitivas podem incluir especificações de vértice que especificam um ou mais vértices associados aos primitivos a serem renderizados. As especificações de vértice podem incluir coordenadas posicionais para cada vértice e, em alguns casos, outros atributos associados ao vértice, tal como, por exemplo, coordenadas de cor, vetores normais e coordenadas de textura. As definições primitivas também podem incluir informações do tipo primitivo (por exemplo, triângulo, retângulo, ventilador de triângulo, tira de triângulo, etc), informação de escala, informação de rotação e semelhantes. Baseado nas instruções emitidas pela aplicação de software 18 ao acionador de GPU 22, o acionador de GPU 22 pode formular um ou mais comandos que especificam uma ou mais operações para a GPU 12 executar a fim de tornar o primitivo. Quando a GPU 12 recebe um comando da CPU 6, o cluster de processador 46 pode executar uma canalização de processamento gráfico para decodificar o comando e a CPU pode configurar o encadeamento de processamento gráfico para executar a operação especificada no comando. Por exemplo, um motor de comando da canalização de processamento de gráficos pode ler dados primitivos e montar os dados em primitivos para utilização pelos outros estágios de canalização de gráficos na canalização de processamento de gráficos. Após a realização das operações especificadas, a GPU 12 emite os dados renderizados para a memória intermediária de quadro 16 associada a um dispositivo de exibição ou a um dos alvos de renderização 24.
[0033] Armazenamento temporário de quadro 16 armazena pixels de destino para GPU 12. Cada pixel de destino pode ser associado a uma localização de pixel de tela única. Em alguns exemplos, o armazenamento temporário de quadro 16 pode armazenar componentes de cor e um valor alfa de destino para cada pixel de destino. Por exemplo, o armazenamento temporário de quadro 16 pode armazenar Vermelho, Verde, Azul, alfa (RGBa) componentes para cada pixel onde os componentes "RGB" correspondem a valores de cor e o componente "a" corresponde a um valor alfa de destino. O armazenamento temporário de quadro 16 também pode armazenar valores de profundidade para cada pixel de destino. Deste modo, o armazenamento temporário de quadro 16 pode ser dito armazenar dados gráficos (por exemplo, uma superfície) Embora a memória intermediária de quadro 16 e a memória de sistema 10 sejam ilustradas como sendo unidades de memória separadas, em outros exemplos, a memória intermediária de quadro 16 pode ser parte da memória do sistema 10. Uma vez que a GPU 12 renderiza todos os pixels de uma estrutura na memória intermediária de quadro 16, o armazenamento temporário de frames pode emitir o quadro acabado para o mostrador 8 para exibição.
[0034] Similar à memória intermediária de quadro 16, cada um dos alvos de reprodução 24 também pode armazenar pixels de destino para GPU 12, incluindo valores de cor e/ou valores de profundidade para pixels. Cada um dos alvos de reprodução 24 pode armazenar informação para o mesmo número de localizações de pixel únicas como armazenador de quadro 16 ou pode armazenar um subconjunto do número de localizações de pixel únicas como armazenador de quadro 16.
[0035] O cluster de processador 46 pode incluir uma ou mais unidades de processamento programáveis 42 e/ou uma ou mais unidades de processamento de função fixa 44. A unidade de processamento programável 42 pode incluir, por exemplo, unidades renderizadores programáveis que são configuradas para executar um ou mais programas renderizadores que são descarregados na GPU 12 Da CPU 6. Em alguns exemplos, as unidades de processamento programáveis 42 podem ser referidas como "processadores de sombreador" ou "sombreadores unificados", e pode executar geometria, vértice, pixel, ou outras operações de sombreamento para renderizar gráficos. As unidades renderizadoras podem incluir, cada uma, um ou mais componentes para operações de busca e decodificação, um ou mais ALUs para realizar cálculos aritméticos, uma ou mais memórias, caches, e registradores.
[0036] A GPU 12 pode designar unidades de processamento programáveis 42 para executar uma variedade de operações de sombreamento tais como sombreamento de vértice, sombreamento de casco, sombreamento de domínio, sombreamento de geometria, sombreamento de fragmento, e similares enviando comandos para unidades de processamento programáveis 42 para executar um ou mais de um estágio de sombreador de vértice, estágios de mosaico, um estágio de sombreador de geometria, um estágio de rasterização, e um estágio de sombreador de fragmento no encadeamento de processamento gráfico. Em alguns exemplos, o driver de GPU 22 pode causar um compilador executado na CPU 6 para compilar um ou mais programas renderizadores, e para descarregar os programas renderizadores compilados sobre as unidades de processamento programáveis 42 contidas dentro da GPU 12. Os Programas renderizadores podem ser escritos em uma linguagem de sombreamento de alto nível, tal como, por exemplo, uma linguagem de sombreamento OpenGL (GLSL), uma linguagem de sombreamento de alto Nível (HSL), uma linguagem de sombreamento de C para Gráficos (Cg), um Núcleo do OpenCL C, etc. Os programas renderizadores compilados podem incluir uma ou mais instruções que controlam as unidades de processamento programáveis 42 dentro da GPU 12. Por exemplo, os programas renderizadores podem incluir programas renderizadores de vértice que podem ser executados por unidades de processamento programáveis 42 para realizar as funções do estágio de sombreador de vértice, os programas renderizadores de mosaico que podem ser executados por unidades de processamento programáveis 42 realizam as funções dos estágios de tesselação (tesellation), programas renderizadores de geometria que podem ser executados por unidades de processamento programáveis 42 para executar as funções do estágio de sombreador de geometria e/ou programas renderizadores de fragmento que podem ser executados por unidades de processamento programáveis 42 para realizar as funções do estágio de sombreador de fragmento. Um programa renderizador de vértice pode controlar a execução de uma unidade renderizadora de vértice programável ou uma unidade renderizadora unificada, e incluem instruções que especificam uma ou mais operações por vértice.
[0037] O cluster de processador 46 também pode incluir unidades de processamento de função fixa 44. Unidades de processamento de função fixa 44 podem incluir hardware que é ligado por fios para executar certas funções. Embora unidades de processamento de função fixa 44 possam ser configuráveis, através de um ou mais sinais de controle, por exemplo, para executar funções diferentes, o hardware de função fixa tipicamente não inclui uma memória de programa que é capaz de receber programas compilados por usuário. Em alguns exemplos, as unidades de processamento de função fixa 44 no cluster de processador 46 podem incluir, por exemplo, unidades de processamento que realizam operações de varredura, tais como, por exemplo, teste de profundidade, teste de tesoura, mistura de alfa, teste de profundidade de baixa resolução, etc. para realizar as funções do estágio de rasterização do encadeamento de processamento gráfico.
[0038] Memória gráfica 40 é armazenamento em chip ou memória que fisicamente integrado no circuito integrado da GPU 12 Em alguns casos, uma vez que a memória gráfica 40 é sobre-chip, a GPU 12 pode ser capaz de ler valores de ou escrever valores para a memória gráfica 40 mais rapidamente do que os valores de leitura a partir de ou gravar valores para a memória do sistema 10 através de um barramento do sistema.
[0039] Em alguns exemplos, a GPU 12 pode operar de acordo com um modo de renderização adiada (também chamada renderização de binning ou renderização baseada em mosaico) para renderizar dados gráficos. Quando operando de acordo com o modo de sintetização adiada, o cluster de processador 46 dentro da GPU 12 primeiramente executa uma passagem de binning (também conhecida como uma passagem de batimento)) para dividir um quadro em uma pluralidade de mosaicos, e determinar quais primitivos estão dentro de cada tile. Em alguns exemplos, o passo de binning pode indicar se um primitivo está ou não dentro de um mosaico. Em outros exemplos, o passe binante pode também incluir um teste de profundidade e indicar se um primitivo específico é ou não visível em uma telha renderizada. Para cada uma da pluralidade de mosaicos, o cluster de processadores 46 então torna os dados gráficos (valores de cor dos pixels) da telha para a memória gráfica 40 localizada localmente na GPU 12, incluindo a execução da canalização de processamento de gráficos para renderizar cada mosaico, e, quando completa, lê os dados gráficos renderizados a partir da memória gráfica 40 e para o armazenamento temporário de quadro 16 ou um dos alvos de renderização 24. Em alguns exemplos, porque cada mosaico renderizado inclui os valores de cor dos pixels de um bloco bidimensional de pixels, um mosaico pode ser considerado uma superfície, ou pode ser considerado uma porção de uma superfície que é a imagem finalmente sintetizada constituída por uma pluralidade de mosaicos.
[0040] GPU 12 pode dividir cada mosaico em uma pluralidade de blocos de pixels. O tamanho dos blocos de pixels pode ser similar ao tamanho dos blocos de pixels no mostrador 8 que correspondem a um local de armazenamento no armazenador de baixa resolução. A GPU 12 pode transformar primitivos de cada mosaico no espaço de tela, e podem ordenar os primitivos um com relação ao outro da frente para trás, sub-quadros de teste do quadro atual para determinar: 1) se cada primitivo está incluído dentro do dado de subtítulo; e 2) se incluído no dado subtítulo, se os pixels do primitivo são ocluídos por pixels de qualquer outro primitivo no sub-quadro particular.
[0041] Em alguns exemplos, durante a passagem de binagem, A GPU 12 pode também gerar z de Baixa resolução (LRZ) dados para blocos de pixels de cada uma da pluralidade de mosaicos e podem armazenar tais dados de LRZ em um armazenador de baixa resolução na memória, tal como memória de sistema 10. Z de baixa resolução refere-se ao fato de que o armazenador de baixa resolução armazena dados de profundidade associados com um bloco de pixels em vez de para cada pixel de cada uma da pluralidade de mosaicos. O armazenamento temporário de baixa resolução pode ser um armazenamento temporário bidimensional com uma pluralidade de localizações de armazenamento. Cada local de armazenamento no armazenador de baixa resolução pode corresponder a um bloco de pixels representado na tela 8. Em alguns exemplos, o número de localizações de armazenamento dentro do armazenador de baixa resolução pode ser menor do que o número de pixels a serem representados na tela 8. Os dados de LRZ podem ser dados de profundidade para um bloco de pixels (por exemplo Bloco 2x2 de pixels) que contém o valor de profundidade posterior para o bloco de dados de pixéis. Um mosaico pode ser associado A um ou mais dados de LRZ. Por exemplo, dado um mosaico que é um bloco 8x8 de pixel, o mosaico pode incluir 16 Primeiros dados de LRZ que são associados a um bloco de pixels 2x2 dado do tile, e cada um dos 16 Primeiros dados de LRZ pode conter o valor de profundidade mais posterior para o bloco de pixel 2x2 associado do mosaico.
[0042] GPU 12 pode determinar os dados de LRZ com base na determinação dos valores de profundidade de pixels de primitivos que ocupam o bloco de pixels associados aos dados de LRZ. Porque os dados de LRZ são dados de profundidade para um bloco de pixels em vez de um pixel individual, a GPU 12 pode ser conservativa na determinação dos dados de LRZ para cada bloco de pixels. Por exemplo, se os dados de LRZ forem um bloco 2x2 de pixels (p00, p01, p10 e p11), a GPU 12 pode ajustar os dados de LRZ correspondentes a serem os dados de profundidade do pixel mais traseiro (isto é, o pixel que está mais distante da câmera). Se os pixels p00, p01, p10 e p11 tiverem valores de profundidade correspondentes de 0,1,0,1, 0,2 e 0,15, respectivamente, onde um valor inferior representa uma profundidade que é mais afastada da câmera do que um valor mais alto, a GPU 12 pode ajustar os dados de LRZ para aquele bloco de pixel a ser 0,1.
[0043] Após a atualização da memória intermediária de baixa resolução com informação de profundidade dos pixels que compõem a superfície renderizada, a GPU 12 pode, tile-by-tile, renderizar uma imagem à memória gráfica 40 com base nos valores de profundidade armazenados no armazenador de baixa resolução.Para renderizar pixels, para cada pixel na tela, a GPU 12 pode determinar quais pixels renderizam a partir dos quais primitivos no mosaico com base nos valores de profundidade armazenados dentro do armazenador de baixa resolução. Se a GPU 12 determinar, com base nos valores de profundidade armazenados dentro do armazenamento temporário de baixa resolução, que os pixels de um primitivo são ocluídos na cena final, a GPU 12 pode determinar não realizar sombreamento de pixel adicional ou operações de sombreamento de fragmentos naqueles pixels ocultos, desse modo aperfeiçoando o desempenho da GPU 12. Após cada mosaico ser renderizado para a memória gráfica 40, a GPU 12 pode transferir o mosaico renderizado da memória gráfica 40 para a memória 26. Deste modo, o armazenamento temporário de quadro 16 ou um dos alvos de reprodução 24 pode ser preenchido por telha-por-mosaicos por meio de renderizada a partir da GPU 12 e transferir cada um dos mosaicos renderizados a partir da memória gráfica para a memória intermediária de quadro 16 ou um dos alvos de renderização 24, desse modo tornando uma superfície no armazenamento temporário de quadro 16 ou um dos alvos de renderização 24.
[0044] A GPU 12 tenta tornar mais primitivos para a superfície renderizada, a GPU 12 pode utilizar os dados de LRZ construídos para a superfície para otimizar a interpretação daqueles primitivos. A GPU 12 pode rastrear aqueles primitivos em pixels através das técnicas desta revelação e pode executar testes de profundidade de baixa resolução para descartar pixels que A GPU 12 determina ser oculta. A GPU 12 pode para cada pixel, comparar o valor de profundidade do pixel com o valor de profundidade dos dados de LRZ associados (p.ex., os dados de LRZ associados com a localização de pixel do pixel que está sendo testado) e pode descartar o pixel se o valor de profundidade do pixel for menor (por exemplo, mais distante da câmera) do que o valor de profundidade dos dados de LRZ associados. Pelo descarte destes pixels ocluídos, a GPU 12 pode omitir o desempenho de quaisquer operações de renderização de gráficos adicionais para aqueles pixels, tais como operações de sombreamento de pixels e similares, desse modo aperfeiçoando o desempenho de processamento de gráficos da GPU 12.
[0045] Em algumas situações, a GPU 12 pode não rejeitar pixels como sendo necessariamente ocluído por meio de outros pixels quando a GPU 12 realiza testes de baixa resolução daqueles pixels usando-se os dados de LRZ mesmo se aqueles pixels podem ser rejeitados durante o teste de profundidade de nível de pixel de pixels individuais. Por exemplo, dado um dado de LRZ que representa um bloco 2x2 de pixels (p00, p01, p10, e p11), os dados de LRZ podem ser um valor de profundidade de 0,1, Onde um valor inferior representa uma profundidade que é mais afastada da câmera do que um valor mais alto, mesmo que o pixel p01 possa ter um valor de profundidade real de 0,2. Subsequentemente, a GPU 12 pode determinar se tornar um primitivo tendo novo pixel p01' com um valor de profundidade de 0,15 na mesma localização de pixel como pixel p01. Devido ao fato de os dados de LRZ serem um valor de profundidade de 0,1, A GPU 12 pode, não obstante, baseada nos dados de LRZ, determinar que o primitivo associado com o novo pixel p01’ será visível na figura finalmente tornada superfície, uma vez que o pixel p01’ tem um valor de profundidade de 0,15 é maior do que o Valor de profundidade de dados de LRZ de 0,1, mesmo que o valor de profundidade real do pixel p01 seja 0,2. Devido à determinação da GPU 12's esse pixel p01 é visível com base nos dados De LRZ, a GPU 12 pode executar operações de renderização de gráficos para o pixel (por exemplo, Operações de sombreamento de fragmentos) antes da GPU 12 executar testes de profundidade de nível de pixel em pixel p01’ para determinar que o pixel p01’ não é realmente visível na cena finalmente renderizada e descarta o pixel p01’, desse modo impedindo que os valores de cor do pixel p01’ sejam escritos no armazenamento temporário de quadro 16 ou um dos alvos de renderização 24.
[0046] Porque a GPU 12 executa o teste de profundidade de nível de pixel de cada pixel após o teste de profundidade de baixa resolução utilizando dados de LRZ, o uso de dados de LRZ pode ser considerado opcional. Enquanto o teste de profundidade de baixa resolução pode descartar os pixels antes da GPU 12 executar operações de sombreamento de pixel naqueles pixels, a GPU 12 pode ainda finalmente executar o teste de profundidade por pixel de cada pixel não descartado Após a GPU 12 executar operações de sombreamento de pixel naqueles pixels. Assim, o teste de profundidade de baixa resolução utilizando dados de LRZ pode ser considerado como uma otimização para o processamento da GPU 12' s que economiza a GPU 12 de despender o valor do seu processamento para realizar sombreamento de pixel em certos pixels que são descartados como resultado do teste de profundidade de baixa resolução. Como tal, a GPU 12 pode ainda executar corretamente para renderizar dados gráficos até mesmo se a GPU 12 não executar testes de profundidade de baixa resolução como parte de seu processamento gráfico.
[0047] A GPU 12 também pode determinar um código hash baseado em mosaicos para cada mosaico renderizado com base nos dados de cor do bloco de pixels incluídos em cada mosaico renderizado, de modo que um código hash baseado em mosaico identifica unicamente mosaicos tendo diferentes dados de cor para seu bloco de pixels. Conforme discutido acima, cada mosaico apresentado é um bloco (por exemplo, 8x8) de pixels, onde cada pixel tem um valor de cor. A GPU 12 pode associar placas que contêm diferentes padrões de valores de pixel (por exemplo um mosaico completamente cheio com pixels vermelhos e um mosaico completamente cheio com pixels verdes) com códigos hash com base em mosaicos diferentes, e podem associar placas que contêm o mesmo padrão de valores de pixel (por exemplo, dois mosaicos que são cada qual completamente preenchidos com pixels vermelhos) com o mesmo código de hash baseado em mosaico.
[0048] Tais códigos de hash baseados em mosaicos podem ser úteis quando a GPU 12 determina se executa uma transferência de bloco de bits de dados de cor correspondentes a um mosaico a partir de um primeiro mosaico para um segundo mosaico. Se o primeiro mosaico e o segundo mosaico forem associados, cada um, com o mesmo código de hash baseado em tile, a GPU 12 pode determinar que nenhuma transferência real de dados de cor precisa ocorrer porque os primeiro e segundo mosaicos contêm o mesmo conjunto de dados de cor para seus respectivos blocos de pixels, desse modo aperfeiçoando o desempenho do dispositivo de computação 2. Em alguns exemplos, a GPU 12 pode determinar um código de hash baseado em mosaico para blocos de pixels que são menores do que o tamanho de um mosaico. Por exemplo, se um mosaico compreender um bloco 8x8 de pixels, a GPU 12 pode, não obstante, determinar um código hash baseado em mosaico para cada bloco 4x4 de pixels de uma superfície. Neste caso, cada mosaico pode ser associado a quatro códigos hash à base de mosaico para cada bloco 4x4 de pixels que ele contém.
[0049] Uma vez que cada mosaico apresentado é transferido para fora da memória gráfica 40 para armazenamento no armazenamento temporário de quadro 16 ou um dos alvos de reprodução 24, a GPU 12 pode comprimir, através de qualquer algoritmo de compressão adequado, cada mosaico para mover mais eficientemente o mosaico através do barramento para o armazenador de quadro 16 ou um dos alvos 24. O tamanho resultante dos mosaicos comprimidos pode diferir com base na variabilidade do conteúdo de cada mosaico. Enquanto alguns mosaicos comprimidos podem ser uma fração do tamanho de um mosaico não comprimido, outros mosaicos comprimidos podem ser pouco menores do que ou o mesmo tamanho que aquele de um mosaico não comprimido ou podem não ser comprimidos de modo algum. Assim, uma pluralidade de placas comprimidas por largura de banda pode incluir uma ou mais placas não comprimidas entre outras placas comprimidas.
[0050] Em alguns exemplos, a GPU 12 pode determinar um código de hash baseado em mosaicos para cada mosaico comprimido. Assim, ao invés de gerar códigos de hash com base em mosaicos para os valores de cor de superfície subjacentes da telha não comprimida, a GPU 12 pode gerar hash baseado em códigos baseados nos dados de cada mosaico após a compressão, agindo assim como somas de verificação para a pluralidade de mosaicos comprimidos. Neste exemplo, dois códigos hash baseados em mosaicos podem ser os mesmos se os dois mosaicos comprimidos associados, após a compressão, são iguais.
[0051] Porque os mosaicos não comprimidos de uma dada imagem renderizada são de todo o mesmo tamanho, o armazenamento temporário de estrutura 16 ou um dos alvos de formação 24 são configurados para ter espaço suficiente para armazenar todas as placas não comprimidas de uma superfície em blocos de tamanho fixo que são cada um do mesmo tamanho que uma placa não comprimida. Além disso, porque a compressão de mosaicos que compõem uma superfície pode resultar em LT em mosaicos de diferentes tamanhos que variam nos valores de cor de cada mosaico específico, a GPU 12 pode não ser capaz de alocar blocos personalizados de tamanho variado na memória 26 especificamente para armazenar os mosaicos comprimidos. Portanto, a GPU 12 pode utilizar a mesma pluralidade de blocos alocados para armazenar mosaicos não comprimidos de uma imagem renderizada pelo armazenamento da pluralidade de mosaicos comprimidos na pluralidade de blocos, de modo que cada mosaico comprimido é armazenado em um dos blocos.
[0052] Devido à memória 26 que armazena os mosaicos comprimidos em blocos que são, cada um, o mesmo tamanho que uma telha não comprimida, a memória 26 não conservará realmente qualquer espaço pelo armazenamento da pluralidade de mosaicos comprimidos em vez de mosaicos não- compactados. Mesmo que a pluralidade de placas comprimidas possa assumir menos espaço na memória 26 do que as placas não comprimidas, não obstante, a mesma quantidade de espaço na memória 26 é reservada para a pluralidade de blocos independentemente de placas comprimidas ou mosaicos não- compactados serem armazenados na pluralidade de blocos.
[0053] Portanto, quando a GPU 12 armazena os mosaicos comprimidos na pluralidade de blocos, a pluralidade de blocos pode incluir um espaço não utilizado que não é tomado pelo armazenamento da pluralidade de mosaicos comprimidos. Para cada mosaico comprimido que leva menos do que todo o espaço do bloco correspondente no qual o mosaico comprimido é armazenado, o bloco correspondente pode ter espaço não utilizado. Como tal, de acordo com As técnicas desta descrição, a GPU 12 pode ser configurada para utilizar o espaço não usado para armazenar dados adicionais que são associados com a superfície renderizada que é constituída da pluralidade de mosaicos comprimidos. Por exemplo, ao invés de armazenar dados de LRZ e códigos de hash com base em mosaicos, para a pluralidade de mosaicos comprimidas em armazenadores dedicados na memória 26, a GPU 12 pode armazenar tais dados no espaço não utilizado da pluralidade de blocos.
[0054] [0054] Uma vez que o espaço não utilizado em um bloco que armazena um mosaico comprimido não é garantido, a GPU 12 pode ser capaz de armazenar dados associados a um mosaico comprimido particular, tais como dados de LRZ e códigos de hash baseados em mosaicos, somente se o bloco que armazena o mosaico comprimido específico tiver espaço não utilizado. Entretanto, se um mosaico comprimido ocupa completamente um bloco, a GPU 12 pode não ser capaz de armazenar dados associados com o mosaico comprimido específico no bloco. Assim, a GPU 12 pode ser capaz de armazenar dados que são opcionais para cada porção da superfície associada com um mosaico comprimido correspondente, para os espaços não usados dos blocos.
[0055] A GPU 12 pode determinar o espaço não utilizado disponível em cada um da pluralidade de blocos resultante da pluralidade de blocos que armazenam os mosaicos comprimidos. Por exemplo, a GPU 12 pode determinar o tamanho de um bloco na pluralidade de blocos, e pode determinar o tamanho de cada um dos mosaicos comprimidos.Se a GPU 12 determinar que o tamanho de um mosaico comprimido específico é menor do que o tamanho de um bloco na pluralidade de blocos, a GPU 12 pode determinar que o bloco que armazena o mosaico comprimido específico pode ter espaço não utilizado.
[0056] Em resposta à GPU 12, a determinação de que um ou mais dentre a pluralidade de blocos inclui espaço não utilizado, a GPU 12 pode armazenar superfícies de otimização que a GPU 12 pode utilizar para melhorar seu desempenho no espaço não utilizado de um ou mais dentre a pluralidade de blocos. Por exemplo, os dados de LRZ são úteis pela indicação de primitivos que não são visíveis na tornada à superfície pela habilitação da GPU 12 para não efetuar a rasterização daqueles primitivos. Entretanto, sem os dados de LRZ, A GPU 12 pode ainda transmitir corretamente uma determinada superfície por meio de realizar a rasterização de primitivos independente de se aqueles primitivos são visíveis na superfície finalmente renderizada. Como tal, enquanto os dados de LRZ podem melhorar o desempenho da GPU 12 à medida que ele torna uma superfície, não é informação que é crítica para a GPU 12 para tornar corretamente uma superfície.
[0057] Códigos de hash baseados em mosaicos são similares aos dados de LRZ em que são úteis para melhorar o desempenho da GPU 12, mas não são críticos para A GPU 12 para executar corretamente as operações gráficas. Sem códigos hash baseados em mosaicos, a GPU 12 pode ainda executar corretamente funções tais como transferências de blocos de bits de dados de cor, mas pode realizar transferências redundantes de dados de cor entre partes da superfície que tem o mesmo bloco de dados de cor.
[0058] As Figuras 3A -3 F são diagramas conceituais que ilustram técnicas de exemplo para o armazenamento de dados gráficos compactados de largura de banda na memória. Conforme mostrado na Figura 3A, a GPU 12 pode armazenar dados gráficos compactados por largura de banda 56A -56 N (" dados gráficos compactados de largura de banda 56 ") nos blocos 54A -54 N ("blocos 54") na memória 26, tal como a memória do sistema 10, armazenamento temporário de quadro 16, um ou mais dentre os alvos 24, e semelhantes. Dados gráficos compactados de largura de banda 56, em alguns exemplos, podem ser cada qual um mosaico (por exemplo, uma porção de uma superfície de imagem) que constitui uma cena ou superfície renderizada que é comprimida pela GPU 12 de modo a obter-se mais eficientemente mover dados gráficos através de barramentos e entre componentes do dispositivo de computação 2 (por exemplo, entre GPU 12 e memória 26).
[0059] Os blocos 54 podem ser contíguos na memória 26 e podem, cada um, ter o mesmo tamanho fixo uniforme para armazenar cada um dos dados gráficos compactados de largura de banda 56. Em alguns exemplos, se cada um dos dados gráficos compactados de largura de banda 56 for um mosaico comprimido de largura de banda, a GPU 12 pode alocar, na memória 26, o mesmo número de blocos 54 à medida que o número de mosaicos constituindo uma superfície renderizada, de modo que cada um dos blocos 54 possa armazenar dados gráficos compactados de largura de banda correspondentes 56.
[0060] Uma vez que cada um dos blocos 54 é grande o bastante para armazenar dados gráficos não- compactados de uma superfície renderizada, armazenamento de dados gráficos compactados de largura de banda 56 em blocos 54 pode resultar em espaço não usado remanescente nos blocos 54. No exemplo Da figura 3 a, espaço não usado 58 a, 58B, 58C, 58D, e 58E ("espaço não usado 58") podem permanecer nos blocos 54 a, 54B, 54C, 54E e 54N, respectivamente, quando os blocos 54A, 54B, 54C, 54E e 54N armazenam os respectivos dados gráficos compactados de largura de banda 56A, 56B, 56C, 56E e 56N.
[0061] Conforme discutido acima, a GPU 12 pode determinar se cada bloco de blocos 54 e tem o espaço não usado 58 comparando o tamanho de cada dado gráfico comprimido de largura de banda 56 com o tamanho de um bloco de blocos 54. A GPU 12 pode criar e armazenar as superfícies de marcação 52A -52 N (" superfícies de baliza 52 ") na memória 26, onde cada uma das superfícies de marcação 52 é associada a um dos blocos 54, e pode indicar a quantidade de espaço não usado em um bloco correspondente de blocos 54.
[0062] No exemplo da Figura 3 a, as superfícies de marcação 52 podem armazenar a fração, fora de quatro, da quantidade de espaço não usado em um bloco correspondente dos blocos 54. A superfície de sinalização 52A pode indicar que o espaço não usado leva 3/4 do bloco 54 uma superfície de indicador 52B pode indicar que o espaço não usado leva até 1/2 do bloco 54B. A superfície do indicador 52C pode indicar que o espaço não usado assume 1/4 do bloco 54C. A superfície de sinalização 52D pode indicar que o bloco 54D não tem espaço não usado. A superfície de bandeira 52E pode indicar que o espaço não usado assume 1/4 do bloco 54E. A superfície de indicador 52F pode indicar que o bloco 54F não tem espaço não usado. A superfície de indicador 52N pode indicar que o espaço não usado ocupa 1/4 do bloco 54N. Como as superfícies de sinalização 52 também são armazenadas na memória 26, armazenar dados gráficos compactados de largura de banda 56 na memória pode levar mais espaço na memória 26 do que armazenar dados gráficos compactados comparáveis 56.
[0063] Conforme discutido acima, a GPU 12 pode armazenar dados associados com a largura de banda os dados gráficos comprimidos 56 no espaço não usados 58. Conforme mostrado na Figura 3B, a GPU 12 pode determinar, com base na superfície de sinalização 52, os blocos de blocos 54 que têm espaço não usado 58, E pode armazenar os dados de LRZ 60A -60 E Em espaço não usado 58A -58 E dos Blocos 54. Cada um Dos Dados de LRZ 60A -60 E pode ser de um tamanho fixo. Em virtude de apenas os blocos 54A, 54B, 54C, 54E, E 54N possuem respectivos espaços não usados 58A -58 E, a GPU 12 pode, no exemplo da FIG. 3B, somente armazenar os dados de LRZ 60A -60 E Que incluem a informação de profundidade para os respectivos dados gráficos compactados de largura de banda 56A, 56B, 56C, 56E, e 56N no espaço não usado 58 dos blocos 54. Assim, as informações de profundidade para os dados gráficos compactados por largura de banda 56D e 56F não são armazenadas no espaço não utilizado 58 dos blocos 54.
[0064] Os dados de LRZ 60A podem ser associados com os dados gráficos compactados de largura de banda 56A pelo fato de que os dados de LRZ 60A podem incluir dados de LRZ para os pixels que compõem a porção da superfície que corresponde a dados gráficos compactados de largura de banda 56A. Por exemplo, se os dados gráficos compactados de largura de banda 56A incluírem dados gráficos em relação a um bloco 8x8 particular de pixels, Os dados de LRZ 60A, em um exemplo, pode incluir uma pluralidade correspondente de dados de LRZ para cada bloco de pixel 2x2 do bloco 8x8 de pixels. Similarmente, os dados de LRZ 60B podem incluir dados De LRZ para os pixels que compõem o mapa porção da superfície que corresponde a dados gráficos compactados de largura de banda 56B, Os dados de LRZ 60C podem incluir dados De LRZ para os pixels que compõem a porção da superfície que corresponde aos dados gráficos compactados de largura de banda 56C, os dados LRZ 60D podem incluir dados de LRZ para os pixels que compõem a porção da superfície que corresponde aos dados gráficos compactados de largura de banda 56E e os dados de LRZ 60E podem incluir dados De LRZ para os pixels que compõem a porção da superfície que corresponde a dados gráficos compactados por largura de banda 56N.
[0065] Para os dados gráficos comprimidos por largura de banda 56D e 56F que não possuem dados de LRZ associados armazenados em Blocos associados 54D e 54F, a GPU 12 pode associar um valor de profundidade padrão com cada um dos dados gráficos compactados por largura de banda 56D e 56F que ocupam completamente seus respectivos blocos 54D e 54F. O valor de profundidade padrão pode ser um valor de profundidade posterior que indica que pixels adicionais a serem renderizados para as partes da superfície associadas com os dados gráficos compactados por largura de banda 56D e 56T 56F estão em frente dos pixels das porções da superfície associada com os dados gráficos compactados por largura de banda 56D e 56F, e assim será visível, independente se aqueles pixels adicionais são realmente visíveis na cena finalmente renderizada.
[0066] Informação de profundidade para cada um dos dados gráficos compactados de largura de banda 56, a GPU 12 pode armazenar informação de profundidade para múltiplos dados gráficos compactados de largura de banda 56 no espaço não usado 58 de um único bloco de blocos 54. Como mostrado Na figura 3C, a GPU 12 pode armazenar os dados de LRZ 60F no espaço não usado 58A do bloco 54A que incluem dados de LRZ para múltiplos dados de gráficos compactados de largura de banda consecutivos 56. Os Dados de LRZ armazenados no espaço não utilizado 58 de um bloco único de bloco 54 podem incluir informação de profundidade para os dados gráficos compactados de largura de banda associados de dados gráficos compactados de largura de banda 56 bem como informações de profundidade para um próximo número especificado consecutivo de dados gráficos compactados de largura de banda 56. Por exemplo, se os dados de LRZ armazenados no espaço não utilizado 58 um bloco simples do bloco 54 pode incluir dados de LRZ para seis dos dados gráficos compactados de largura de banda 56, os dados de LRZ 60F podem incluir dados de profundidade para dados de gráficos compactados de largura de banda 56A -56 F Similarmente, Os dados de LRZ 60G podem incluir dados de profundidade para dados de gráficos compactados por largura de banda 56N bem como os cinco dados de gráficos compactados de Largura de banda seguintes 56. Desta maneira, os blocos 54 podem armazenar dados de profundidade para cada dado gráfico comprimido de largura de banda 56.
[0067] Como mostrado na Figura 3D, a GPU 12 também pode armazenar códigos hash baseados em mosaicos 62A -62 e para o espaço não usado 58A -58 E Dos blocos 54. Cada um dos códigos hash baseados em mosaico 62A -62 E pode ser do mesmo tamanho. Em virtude de apenas os blocos 54A, 54B, 54C, 54E, E 54N possuem respectivos espaços não usados 58A -58 E, a GPU 12 pode, no exemplo da figura 3B, somente os códigos hash baseados em telha de armazenamento 62A -62 E que identificam os valores de cor para os respectivos dados gráficos compactados de largura de banda 56A, 56B, 56C, 56E e 56N no espaço não usado 58 dos blocos 54. Assim, códigos de hash com base em mosaicos para dados gráficos compactados por largura de banda 56D e 56T 56F não são armazenados no espaço não utilizado 58 dos blocos 54.
[0068] Códigos hash baseados em mosaicos para cada um dos dados gráficos compactados por largura de banda 56, a GPU 12 pode armazenar códigos hash à base de mosaico para múltiplos dados gráficos compactados de largura de banda 56 no espaço não usado 58 de um único bloco de blocos 54. Conforme mostrado Na figura 3E, a GPU 12 pode armazenar o código hash baseado em mosaico 62F no espaço não usado 58C do bloco 54C que inclui códigos hash baseados em mosaico para múltiplos dados gráficos compactados de largura de banda consecutivos 56. Códigos de hash com base em mosaicos armazenados no espaço não utilizado 58 de um bloco simples de bloco 54 podem incluir códigos de hash com base em mosaicos para os dados gráficos compactados de largura de banda associados de largura de banda, dados gráficos compactados 56 bem como códigos hash com base em mosaico para um próximo número especificado consecutivo de dados gráficos compactados por largura de banda 56 ou um número consecutivo prévio de dados gráficos compactados de largura de banda 56. Por exemplo, se os códigos de hash baseados em mosaicos armazenados no espaço não utilizado 58 de um bloco simples do bloco 54 pode incluir dados de LRZ para três dos dados gráficos compactados de largura de banda 56, código hash baseado em mosaico 62F pode incluir códigos hash à base de mosaico para cada um dos dados gráficos compactados de largura de banda 56A -56 C Similarmente, código hash baseado em mosaico 62G pode incluir códigos hash baseados em mosaico para dados gráficos compactados por largura de banda 56N bem como os dois dados gráficos compactados de largura de banda anteriores 56. Deste modo, os blocos 54 podem armazenar códigos hash com base em mosaicos para cada dado gráfico comprimido por largura de banda 56.
[0069] Em alguns exemplos, a GPU 12 pode armazenar múltiplos tipos de dados associados com a largura de banda os dados gráficos comprimidos 56 no espaço não usado 58 dos blocos 54 ao mesmo tempo. Por exemplo, o espaço não utilizado 58 dos blocos 54 pode armazenar ambos os dados de profundidade, bem como os dados de códigos de hash com base em largura de banda para cada um dos dados gráficos compactados de largura de banda 56. Conforme mostrado na Figura 3F, A GPU 12 pode armazenar os dados LRZ 60H no espaço não usado 58 A do bloco 54 A E os Dados LRZ 601 para o espaço não usado 58D do bloco 54E. A GPU 12 também pode armazenar o código hash baseado em mosaicos 62H no espaço não utilizado 58C do bloco 54 A e o código hash baseado em mosaicos 621 para o espaço não utilizado 58E do bloco 54N. Como tal, o espaço não usado 58 dos blocos 54 pode armazenar ambos os dados de LRZ e FT de códigos hash baseados em mosaico para dados gráficos compactados por largura de banda 56 ao mesmo tempo.
[0070] Enquanto As Figuras 3A -3 F ilustram que a GPU 12 é capaz de armazenar dados de LRZ e códigos de hash com base em mosaicos no espaço não utilizado 58 de blocos 54, esta descrição não é necessariamente limitada a armazenar somente dados de LRZ e códigos de hash com base em mosaicos no espaço não usado 58 dos blocos 54. Ao Invés disso, a GPU 12 pode armazenar quaisquer outros dados relacionados aos dados gráficos compactados de largura de banda 56 no espaço não usado 58 dos blocos 54.
[0071] A Figura 4 é um fluxograma que ilustra um processo exemplar para armazenar dados gráficos compactados por largura de banda na memória. Conforme mostrado na Figura 4, o processo pode incluir armazenamento, pela GPU 12, uma pluralidade de dados gráficos compactados de largura de banda 56 em uma respectiva pluralidade de blocos 54 na memória 26, em que cada um da pluralidade de blocos 54 é de um tamanho fixo uniforme na memória 26 e em que um ou mais dentre a pluralidade de dados gráficos compactados de largura de banda 56 tem um tamanho que é menor do que o tamanho fixo (102). O processo pode ainda incluir armazenamento, pela GPU 12, dados associados com a pluralidade de dados gráficos compactados de largura de banda 56 no espaço não usado 58 de um ou mais da pluralidade de blocos 54 que contém o respectivo um ou mais da pluralidade de dados gráficos compactados por largura de banda 56 (104).
[0072] Em alguns exemplos, os dados associados com a pluralidade de dados gráficos compactados por largura de banda 56 compreendem dados de profundidade para o um ou mais da pluralidade de dados gráficos compactados por largura de banda 56 armazenados em um ou mais dentre a pluralidade de blocos 54. Em alguns exemplos, um segundo ou mais dentre a pluralidade de dados gráficos compactados por largura de banda 56 e pode completamente ocupar um segundo ou mais dentre a pluralidade de blocos 54, e o processo pode ainda incluir a associação, pela GPU 12, um valor de profundidade padrão para cada um do segundo um ou mais dentre a pluralidade de dados gráficos compactados de largura de banda 56. Em alguns exemplos, os dados associados com a pluralidade de dados gráficos compactados por largura de banda 56 compreendem dados de profundidade para cada da pluralidade de dados gráficos compactados de largura de banda 56 armazenados em um ou mais dentre a pluralidade de blocos 54.
[0073] Em alguns exemplos, os dados associados com a pluralidade de dados gráficos compactados por largura de banda 56 e compreende um ou mais códigos hash que identificam cada um dos um ou mais dentre a pluralidade de dados gráficos compactados por largura de banda 56 armazenados em um ou mais dentre a pluralidade de blocos 54. Em alguns exemplos, os dados associados com a pluralidade de dados gráficos compactados por largura de banda 56 compreendem códigos hash que identificam cada da pluralidade de dados gráficos compactados de largura de banda 56 armazenados em um ou mais dentre a pluralidade de blocos 54.
[0074] Em alguns exemplos, os dados associados com a pluralidade de dados gráficos compactados por largura de banda 56 e compreende códigos de hash que identificam cada um da pluralidade de dados gráficos compactados de largura de banda 56 armazenados no um ou mais da pluralidade de blocos 54 e dados de profundidade para cada um da pluralidade de dados gráficos compactados de largura de banda 56 armazenados em um ou mais dentre a pluralidade de blocos 54.
[0075] Em alguns exemplos, os dados associados com a pluralidade de dados gráficos compactados por largura de banda 56 e compreende superfícies de otimização associadas com a pluralidade de dados gráficos compactados de largura de banda 56. Em alguns exemplos, a pluralidade de dados gráficos compactados por largura de banda 56 pode compreender porções comprimidas por largura de banda de uma superfície de imagem.
[0076] Em alguns exemplos, o armazenamento, pela GPU 12, os dados associados com a pluralidade de dados gráficos compactados de largura de banda 56 no espaço não utilizado do um ou mais da pluralidade de blocos 54 que contém o respectivo um ou mais dentre a pluralidade de dados gráficos compactados de largura de banda 56 pode ainda incluir a determinação, pela GPU 12, que o um ou mais dentre a pluralidade de blocos 54 incluem o espaço não utilizado e em resposta à determinação de que o um ou mais dentre a pluralidade os blocos 54 incluem o espaço não usado, armazenamento, pela GPU 12, os dados associados com a pluralidade de dados gráficos compactados de largura de banda 56 no espaço não utilizado de um ou mais dentre a pluralidade de blocos 54 que contém o respectivo um ou mais dentre a pluralidade de dados gráficos compactados de largura de banda 56.
[0077] Em um ou mais exemplos, as funções descritas podem ser implementadas em hardware, software, firmware, ou qualquer combinação dos mesmos. Se implementado em software, as funções podem ser armazenadas ou transmitidas por si sobre o como uma ou mais instruções ou código em um meio legível por computador. Mídia legível por computador pode incluir meios de armazenamento de dados de computador ou meios de comunicação incluindo qualquer meio que facilite a transferência de um programa de computador de um lugar para outros meios de armazenamento de dados podem ser quaisquer meios disponíveis que podem ser acessados por um ou mais computadores ou um ou mais processadores para recuperar instruções, código e/ou estruturas de dados para implementação das técnicas descritas nesta descrição. A título de exemplo, e não de limitação, tais meios legíveis por computador podem compreender RAM, ROM, EEPROM, CD-ROM ou outro armazenamento de disco óptico, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético Ou qualquer outro meio que possa ser usado para transportar ou armazenar o código de programa desejado na forma de instruções ou estruturas de dados e que possa ser acessado por um computador. Também, qualquer conexão é apropriadamente denominada um meio legível por computador. Por exemplo, se o software For transmitido a partir de um sítio da rede, o servidor, ou outra fonte remota utilizando um cabo coaxial, cabo de fibra óptica, par torcido, linha de assinante digital (DSL), ou tecnologias sem fio tais como infravermelho, rádio e micro-ondas, então o cabo coaxial, cabo de fibra óptica, par torcido, DSL, ou tecnologias sem fio tal como infravermelho, rádio, e micro-ondas são incluídos na definição de meio. Disco e disco, conforme aqui usado, incluem disco compacto (CD), disco de laser, disco ótico, disco versátil digital (DVD), disco flexível e disco Blu-ray onde discos usualmente reproduzem dados magneticamente, enquanto discos reproduzem dados opticamente com lasers. Combinações do acima devem também ser incluídas dentro do escopo de mídia legível por computador.
[0078] O código pode ser executado por um ou mais processadores, tal como um ou mais processadores de sinais digitais (DSPs), microprocessadores de finalidade geral, circuitos integrados de aplicação específica (ASICs), arranjos lógicos programáveis em campo (FPGAs), ou outros circuitos lógicos integrados ou discretos equivalentes. Consequentemente, o termo "processador" e "unidade de processamento", como usado aqui pode se referir a qualquer uma dentre a estrutura precedente ou qualquer outra estrutura adequada para implementação das técnicas descritas aqui. Além disso, em alguns aspectos, a funcionalidade descrita aqui pode ser provida dentro de módulos de hardware e/ou software dedicados configurados para codificação e descodificação, ou incorporado em um codec combinado. Também, as técnicas poderiam ser totalmente implementadas em um ou mais circuitos ou elementos lógicos.
[0079] As técnicas desta descrição podem ser implementadas em uma ampla variedade de dispositivos ou aparelhos, incluindo um aparelho de mão sem fio, um circuito integrado (IC) ou um conjunto de ICs (isto é, um conjunto de chip) Vários componentes, módulos ou unidades são descritos neste relatório descritivo para enfatizar aspectos funcionais de dispositivos configurados para realizar as técnicas descritas, mas não requerem necessariamente realização por diferentes unidades de hardware. De preferência, conforme descrito acima, várias unidades podem ser combinadas em uma unidade de hardware codec ou providas por uma coleção de unidades de hardware interoperatórias, incluindo um ou mais processadores conforme descrito acima, em conjunto com software e/ou firmware adequados.
[0080] Vários exemplos foram descritos. Estes e outros exemplos estão dentro do escopo das reivindicações anexas.

Claims (15)

1. Método para processamento gráfico, caracterizado pelo fato de que compreende: armazenar (102), por pelo menos um processador, uma pluralidade de dados gráficos compactados por largura de banda (56) em uma respectiva pluralidade de blocos (54) na memória, incluindo armazenar um primeiro ou mais dentre a pluralidade de dados de gráfico compactados por largura de banda (56) em um primeiro ou mais dentre a pluralidade de blocos (54), e armazenar um segundo ou mais dentre a pluralidade de dados de gráficos compactados por largura de banda (56) em um segundo ou mais dentre a pluralidade de blocos (54), em que cada um dentre a pluralidade de blocos (54) é de um tamanho fixo uniforme na memória, que pode totalmente conter um maior dentre a pluralidade de dados de gráficos compactados por largura de banda (56), em que um ou mais dentre a pluralidade de dados gráficos compactados por largura de banda (56) tem um tamanho que é menor do que o tamanho fixo (102), e em que cada do segundo ou mais dentre a pluralidade de dados gráficos compactados por largura de banda (56) é totalmente armazenado em cada um dos respectivos segundo ou mais dentre a pluralidade de blocos (54); e armazenar (104), por pelo menos um processador, dados associados com a pluralidade de dados gráficos compactados por largura de banda (56) em espaço não utilizado do primeiro ou mais dentre a pluralidade de blocos (54) que contém o respectivo primeiro ou mais dentre a pluralidade de dados gráficos compactados por largura de banda (56) com base pelo menos em parte em uma determinação que o primeiro ou mais dentre a pluralidade de blocos (54) inclui o espaço não utilizado de modo que o processador utiliza os dados para otimizar o desempenho de operações gráficas sobre os dados gráficos.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que os dados associados com a pluralidade de dados gráficos compactados por largura de banda (56) compreendem dados de profundidade para o primeiro ou mais dentre a pluralidade de dados gráficos compactados por largura de banda (56) armazenados no primeiro ou mais dentre a pluralidade de blocos (54).
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que compreende adicionalmente: associar, por pelo menos um processador, um valor de profundidade padrão para cada um do segundo ou mais dentre a pluralidade de dados gráficos compactados por largura de banda (56), que ocupa totalmente o segundo ou mais dentre a pluralidade de blocos (54).
4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que os dados associados com a pluralidade de dados gráficos compactados por largura de banda (56) compreendem um ou mais códigos hash que identificam cada um dentre o primeiro ou mais dentre a pluralidade de dados gráficos compactados por largura de banda armazenados no primeiro ou mais dentre a pluralidade de blocos, ou em que os dados associados com a pluralidade de dados gráficos compactados por largura de banda (56) compreendem códigos hash que identificam cada um dentre a pluralidade de dados gráficos compactados por largura de banda armazenados na pluralidade de blocos (54).
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que os dados associados com a pluralidade de dados gráficos compactados por largura de banda (56) compreendem códigos hash que identificam cada um dentre a pluralidade de dados gráficos compactados por largura de banda armazenados na pluralidade de blocos (54) e dados de profundidade para cada um dentre a pluralidade de dados gráficos compactados por largura de banda armazenados na pluralidade de blocos (54).
6. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que os dados associados com a pluralidade de dados gráficos compactados por largura de banda (56) compreendem superfícies de otimização associadas com a pluralidade de dados gráficos compactados de largura de banda que são utilizados para otimizar a renderização dos dados gráficos.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a pluralidade de dados gráficos compactados por largura de banda (56) compreende porções comprimidas por largura de banda de uma superfície de imagem.
8. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que pelo menos um processador inclui uma unidade de processamento gráfico.
9. Aparelho para processamento gráfico, caracterizado pelo fato de que compreende: uma memória (26); pelo menos um processador; e uma unidade de processamento gráfico, GPU (12), para armazenar uma pluralidade de dados gráficos compactados por largura de banda (56) em uma respectiva pluralidade de blocos (54) na memória (26), incluindo uma unidade de processamento gráfico (12) para armazenar uma primeira ou mais dentre a pluralidade de dados de gráficos compactados por largura de banda (56) em um primeiro ou mais dentre a pluralidade de blocos (54), e uma unidade de processamento gráfico (12) para armazenar um segundo ou mais dentre a pluralidade de dados gráficos compactados por largura de banda (56) em um segundo ou mais dentre a pluralidade de blocos (54), em que cada um dentre a pluralidade de blocos (54) é de um tamanho fixo uniforme na memória, em que cada um do primeiro ou mais dentre a pluralidade de dados gráficos compactados por largura de banda (56) tem um tamanho que é menor do que o tamanho fixo (102), e em que cada um do segundo ou mais dentre a pluralidade de dados gráficos compactados por largura de banda (56) é totalmente armazenado em cada um do respectivo segundo ou mais dentre a pluralidade de blocos; e em que a GPU (12) adicionalmente armazena dados associados com a pluralidade de dados gráficos compactados por largura de banda (56) no espaço não utilizado de um ou mais dentre a pluralidade de blocos (54) que contém o respectivo um ou mais dentre a pluralidade de dados gráficos compactados por largura de banda (56) de modo que os dados armazenados são utilizados para otimizar o desempenho de operações gráficas sobre os dados gráficos.
10. Aparelho, de acordo com a reivindicação 9, caracterizado pelo fato de que os dados associados com a pluralidade de dados gráficos compactados por largura de banda (56) compreendem dados de profundidade para o primeiro ou mais dentre a pluralidade de dados gráficos compactados por largura de banda armazenados no primeiro ou mais dentre a pluralidade de blocos (54).
11. Aparelho, de acordo com a reivindicação 10, caracterizado pelo fato de que a unidade de processamento gráfico, GPU (12) adicionalmente associa um valor de profundidade padrão para cada um do segundo ou mais dentre a pluralidade de dados gráficos compactados por largura de banda (56) que ocupa totalmente o segundo ou mais dentre a pluralidade de blocos (54).
12. Aparelho, de acordo com a reivindicação 9, caracterizado pelo fato de que os dados associados com a pluralidade de dados gráficos compactados por largura de banda (56) compreendem dados de profundidade para cada um dentre a pluralidade de dados gráficos compactados por largura de banda armazenados na pluralidade de blocos (54).
13. Aparelho de acordo com a reivindicação 9, caracterizado pelo fato de que os dados associados com a pluralidade de dados gráficos compactados por largura de banda (56) compreendem um ou mais códigos hash que identificam cada do primeiro ou mais dentre a pluralidade de dados gráficos compactados por largura de banda armazenados no primeiro ou mais dentre a pluralidade de blocos.
14. Aparelho, de acordo com a reivindicação 9, caracterizado pelo fato de que os dados associados com a pluralidade de dados gráficos compactados por largura de banda compreendem códigos hash que identificam cada um dentre a pluralidade de dados gráficos compactados por largura de banda armazenados na pluralidade de blocos (54).
15. Aparelho, de acordo com a reivindicação 9, caracterizado pelo fato de que os dados associados com a pluralidade de dados gráficos compactados por largura de banda compreendem códigos hash que identificam cada um dentre a pluralidade de dados gráficos compactados por largura de banda (56) armazenados na pluralidade de blocos (54) e dados de profundidade para cada um dentre a pluralidade de dados gráficos compactados por largura de banda (56) armazenados na pluralidade de blocos (54).
BR112018005244-2A 2015-09-17 2016-08-01 Armazenamento de dados gráficos compactados de largura de banda BR112018005244B1 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/857,303 2015-09-17

Publications (1)

Publication Number Publication Date
BR112018005244B1 true BR112018005244B1 (pt) 2023-08-29

Family

ID=

Similar Documents

Publication Publication Date Title
US9697640B2 (en) Start node determination for tree traversal in ray tracing applications
ES2770874T3 (es) Almacenamiento de datos gráficos comprimidos en ancho de banda
ES2804149T3 (es) Renderización híbrida en procesamiento de gráficos
US9818221B2 (en) Start node determination for tree traversal for shadow rays in graphics processing
US9087409B2 (en) Techniques for reducing memory access bandwidth in a graphics processing system based on destination alpha values
US9286649B2 (en) Conditional execution of rendering commands based on per bin visibility information with added inline operations
CN108027956B (zh) 后期深度测试与保守深度测试之间的动态切换
US9805495B2 (en) Single pass bounding volume hierarchy rasterization
US9852539B2 (en) Single pass surface splatting
TWI786233B (zh) 關於以微磚為基礎之低解析度深度儲存之方法、器件與非暫時性電腦可讀儲存媒體
BR112018016807A2 (pt) processamento de textura de múltiplas etapas com retorno na unidade de textura
WO2015123029A1 (en) Techniques for conservative rasterization
EP3201872A1 (en) Transparent pixel format converter
BR112018005244B1 (pt) Armazenamento de dados gráficos compactados de largura de banda