KR101717915B1 - 동적 생성 그래픽 자원들에 대한 압축 기술들 - Google Patents

동적 생성 그래픽 자원들에 대한 압축 기술들 Download PDF

Info

Publication number
KR101717915B1
KR101717915B1 KR1020150089764A KR20150089764A KR101717915B1 KR 101717915 B1 KR101717915 B1 KR 101717915B1 KR 1020150089764 A KR1020150089764 A KR 1020150089764A KR 20150089764 A KR20150089764 A KR 20150089764A KR 101717915 B1 KR101717915 B1 KR 101717915B1
Authority
KR
South Korea
Prior art keywords
graphics
dynamically generated
resource
generated graphics
compression
Prior art date
Application number
KR1020150089764A
Other languages
English (en)
Other versions
KR20160012903A (ko
Inventor
로버트 비 테일러
트래비스 티 슐루에슬러
Original Assignee
인텔 코포레이션
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 인텔 코포레이션 filed Critical 인텔 코포레이션
Publication of KR20160012903A publication Critical patent/KR20160012903A/ko
Application granted granted Critical
Publication of KR101717915B1 publication Critical patent/KR101717915B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/23418Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • 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/001Arbitration of resources in a display system, e.g. control of access to frame buffer by video controller and/or main processor
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • H04L43/0882Utilisation of link capacity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/154Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/81Monomedia components thereof
    • H04N21/8146Monomedia components thereof involving graphical data, e.g. 3D object, 2D graphics
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2340/00Aspects of display data processing
    • G09G2340/02Handling of images in compressed format, e.g. JPEG, MPEG
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2350/00Solving problems of bandwidth in display systems
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication
    • G09G2370/16Use of wireless transmission of display information

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • General Engineering & Computer Science (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Discrete Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Image Generation (AREA)
  • Computer Graphics (AREA)

Abstract

동적 생성 그래픽 자원들에 대한 압축 기술들이 설명된다. 하나의 실시예에서, 예를 들어, 장치는 적어도 일부분이 하드웨어로 이루어진 로직을 포함할 수 있고, 이 로직은 동적으로 생성되는 그래픽 자원의 하나 이상의 사용 특성들을 결정하고, 하나 이상의 사용 특성들에 기초하여 동적으로 생성되는 그래픽 자원을 압축할지 여부를 결정하고, 동적으로 생성되는 그래픽 자원을 압축할 것을 결정한 것에 응답하여, 동적으로 생성되는 그래픽 자원에 대한 그래픽 품질 임계치에 기초하여 압축 절차를 선택한다. 다른 실시예들이 설명되고 청구된다.

Description

동적 생성 그래픽 자원들에 대한 압축 기술들{COMPRESSION TECHNIQUES FOR DYNAMICALLY-GENERATED GRAPHICS RESOURCES}
컴퓨팅 디바이스(computing device) 상에 3차원(three-dimensional; 3D) 그래픽 컨텐츠의 프레임(frame)을 생성하는 프로세스는 전형적으로 그래픽 처리 장치(graphics processing unit; GPU)와 같은 로직 회로에 의해 실행되고 또한 "패스(passes)"로 칭해지는 많은 중간 동작(intermediate operations)을 수반한다. 이 중간 동작들 각각은 전형적으로 메모리로부터 그리고/또는 메모리로 하나 이상의 그래픽 자원들을 판독 및/또는 기록한다. 이 그래픽 자원들은 그 후에 메모리로부터 액세스되고 후속 동작들 동안 사용된다. 반복해서 그래픽 자원들을 판독하여 메모리에 기록하는 방법은 결과적으로 메모리에 대한 상당한 대역폭 수요가 있을 수 있다. 메모리가 그와 같은 대역폭 수요들을 수용할 수 없다는 것은 흔히 GPU들 및 다른 그래픽 처리 디바이스들의 성능을 제약하는 요인이다. 3D 그래픽 프로세스와 연관되는 메모리 대역폭 수요들을 줄이기 위해, 상기 프로세스와 연관되는 그래픽 자원들은 메모리에 저장되기 전에 압축될 수 있다. 그러나, 종래의 기술들에 따르면, 압축은 단지 정적인, 미리 생성된 자원들, 특정한 자원 클래스(resource class)들 및/또는 렌더링 파이프라인(rendering pipeline)의 특정 단계들에만 적용된다.
도 1은 동작 환경의 하나의 실시예를 도시하는 도면.
도 2는 장치의 하나의 실시예 및 제 1 시스템의 하나의 실시예를 도시하는 도면.
도 3은 제 1 로직 흐름의 하나의 실시예를 도시하는 도면.
도 4는 제 2 로직 흐름의 하나의 실시예를 도시하는 도면.
도 5는 제 3 로직 흐름의 하나의 실시예를 도시하는 도면.
도 6은 제 4 로직 흐름의 하나의 실시예를 도시하는 도면.
도 7은 저장 매체의 하나의 실시예를 도시하는 도면.
도 8은 제 2 시스템의 하나의 실시예를 도시하는 도면.
도 9는 제 3 시스템의 하나의 실시예를 도시하는 도면.
도 10은 디바이스의 하나의 실시예를 도시하는 도면.
다양한 실시예들은 일반적으로 동적으로 생성되는 그래픽 자원들에 대한 압축 기술들에 관한 것일 수 있다. 하나의 실시예에서, 예를 들어, 장치는 적어도 일부분이 하드웨어로 이루어진 로직을 포함할 수 있고, 이 로직은 동적으로 생성되는 그래픽 자원의 하나 이상의 사용 특성들을 결정하고, 하나 이상의 사용 특성들에 기초하여 동적 생성 그래픽 자원을 압축할지 여부를 결정하고, 이 동적 생성 그래픽 자원을 압축한다는 결정에 응답하여, 이 동적 생성 그래픽 자원에 대한 그래픽 품질 임계치에 기초하여 압축 절차를 선택한다. 다른 실시예들이 설명되고 청구된다.
다양한 실시예들은 하나 이상의 요소들을 포함할 수 있다. 하나의 요소는 특정한 동작들을 수행하도록 구성되는 임의의 구조를 포함할 수 있다. 각 요소는 소정의 설계 파라미터들 또는 성능 제약들의 세트에 바람직한 바에 따라, 하드웨어, 소프트웨어, 또는 이들의 임의의 결합으로서 구현될 수 있다. 어떤 실시예가 예로서 특정한 토폴로지(topology) 내에서 제한된 수의 요소들로 설명될지라도, 이 실시예는 대안의 토폴로지들에서는 소정의 구현에 바람직한 바에 따라 더 많거나 더 적은 요소들을 포함할 수 있다. 임의로 "하나의 실시예" 또는 "실시예"라 함은 이 실시예와 관련하여 설명되는 특정한 특징, 구조 또는 특성이 적어도 하나의 실시예 내에 포함되는 것을 의미한다는 것은 주목할 가치가 있다. 명세서 내의 다양한 장소들에서 나타나는 어구들 "하나의 실시예에서", "일부 실시예들에서" 및 "다양한 실시예들에서"는 반드시 모두 동일한 실시예를 칭하는 것은 아니다.
도 1은 다양한 실시예들을 나타낼 수 있는 하나의 예의 동작 환경(100)을 도시한다. 도 1에 도시되는 바와 같이, 동작 환경(100)은 메모리 유닛(104), 그래픽 처리 회로(106) 및 디스플레이(146)를 포함한다. 일부 실시예들에서, 그래픽 처리 회로(106)는 그래픽 처리 장치(graphics processing unit; GPU)를 포함할 수 있다. 그래픽 컨텐츠를 디스플레이(146) 상에 제시하기 위해, 그래픽 처리 회로(106)는 그래픽 프레임들(112)을 생성한다. 다양한 실시예들에서, 그래픽 컨텐츠는 픽셀들의 2차원(two-dimensional; 2D) 구성을 사용하여 3개의 공간 차원들을 묘사하는 3D 컨텐츠를 포함할 수 있다. 일부 그와 같은 실시예들에서, 그래픽 프레임들(112) 중 일부 또는 모두는 3D 장면들의 2D 래스터(raster) 표현들을 포함할 수 있다. 그래픽 프레임들(112)을 생성하는 것과 함께, 그래픽 처리 회로(106)는 메모리 버스(120)를 통해 메모리 유닛(104)으로 그리고 메모리 유닛(104)으로부터 그래픽 자원들(114)을 반복해서 기록하고 검색한다. 이 그래픽 자원들(114) 중 일부는 자신들이 연관되어 있는 애플리케이션의 런타임 전에 규정되는 정적인, 미리 생성된 그래픽 자원들을 포함한다. 이 그래픽 자원들(114) 중 다른 자원들은 연관되는 애플리케이션의 실행 중에 생성되는 동적 생성 그래픽 자원들(118)을 포함한다. 도 1이 임의의 그래픽 처리 아키텍처의 구성요소들 모두에 대한 포괄적인 표현을 도시하도록 의도되지 않음이 주목할 가치가 있다. 오히려, 도 1은 간소화되어 도시된 것을 포함하고, 이에 따라 간소화 및 명료화를 위해 동작 환경(100)과 연관되는 임의의 특정한 그래픽 처리 아키텍처 내에 포함될 수 있는 일부 구성요소들이 생략될 수 있다. 실시예들이 이 간소하게 도시된 것으로 제한되지 않음이 이해되어야 한다.
다양한 실시예들에서, 그래픽 처리 회로(106)가 메모리 유닛(104)에 그리고/또는 메모리 유닛(104)으로부터 그래픽 자원들(114)을 기록 및/또는 검색할 수 있는 레이트(rate)는 메모리 버스(120)의 대역폭 그리고/또는 메모리 버스(120)의 하나 이상의 다른 특성들에 의해 제한될 수 있다. 결과적으로, 이것은 그래픽 처리 회로(106)가 그래픽 프레임들(112)을 생성하는 레이트를 제한할 수 있다. 그래픽 처리 회로(106)가 그래픽 프레임들(112)을 충분한 레이트로 생성할 수 없으면, 디스플레이(146) 상에 제시되는 그래픽 컨텐츠의 질은 저하될 수 있다. 이에 따라, 그래픽 자원들(114)을 메모리 유닛(104)에/으로부터 기록/검색하는 것과 연관되는 대역폭 수요들을 줄이는 것이 바람직할 수 있다.
일부 종래의 시스템들에서 사용되는 하나의 방법은 어떤 그래픽 자원들을 메모리 내에 저장하기 전에 이것들을 압축하는 것을 포함한다. 그러나, 종래의 시스템들에서, 압축은 단지 미리 생성된 그래픽 자원들과 같은 정적 그래픽 자원들에, 특정한 자원 클래스들에, 그리고/또는 렌더링 파이프라인의 특정한 단계들에만 적용된다. 그러므로, 종래의 방법들은 동적 생성 그래픽 자원들(118)과 같은 동적으로 생성되는 그래픽 자원들에 압축을 적용함으로써 잠재적으로 획득될 수 있는 메모리 대역폭 소비 감소들을 활용하지 못한다.
그래픽 애플리케이션의 메모리 대역폭 수요들을 줄이기 위해 일부 실시예들에서 구현될 수 있는 바와 같은 그러한 동적 생성 그래픽 자원들에 대한 압축 기술들이 본원에서 개시된다. 다양한 그와 같은 기술들에 따르면, 소정의 동적 생성 그래픽 자원들을 압축할지의 여부 및/또는 어떻게 압축할지의 결정은 적어도 부분적으로 이 동적 압축 그래픽 자원이 얼마나 자주 사용되는지에 그리고/또는 이 동적 생성 그래픽 자원의 크기를 줄이기 위해 이 동적 생성 그래픽 자원의 품질이 희생될 수 있다면 어느 정도까지 희생될 수 있는지에 대한 범위에 기초할 수 있다. 본원에서 설명되는 기술들에 따르면, 압축은 임의의 포맷들, 비트 심도(bit depth)들 및 타일 레이아웃(tile layout)들의 동적 생성 그래픽 자원들에 적용될 수 있다. 일부 실시예들에서, 개시되는 기술들은 3D 그래픽 컨텐츠를 위한 렌더링 파이프라인의 하나 이상의 단계들에서 생성되거나 이 단계들과 연관되는 동적 생성 그래픽 자원들에 적용될 수 있다. 다양한 다른 실시예들에서, 개시되는 기술들은 다른 유형들의 그래픽 프로세스들과 연관되는 동적 생성 그래픽 자원들에 적용될 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
도 2는 장치(200)의 블록도를 도시한다. 도 2에 도시되는 바와 같이, 장치(200)는 프로세서 회로(202), 메모리 유닛(204), 그래픽 처리 회로(206) 및 그래픽 관리 모듈(208)을 포함하는 다수의 요소들을 포함한다. 그러나, 실시예들은 도면에 도시된 요소들의 유형, 수 또는 구성으로 제한되지 않는다.
일부 실시예들에서, 장치(200)는 프로세서 회로(202)를 포함할 수 있다. 프로세서 회로(202)는 복합 명령 세트 컴퓨터(complex instruction set computer; CISC) 마이크로프로세서, 축소 명령 세트 컴퓨팅(reduced instruction set computing; RISC) 마이크로프로세서, 매우 긴 명령(very long instruction; VLIW) 마이크로프로세서, x86 명령 세트 호환 가능 프로세서, 명령 세트들의 결합을 구현하는 프로세서, 듀얼 코어 프로세서 또는 듀얼 코어 모바일 프로세서와 같은 다중 코어 프로세서 또는 임의의 다른 마이크로프로세서 또는 중앙 처리 장치(central processing unit; CPU)와 같은 임의의 프로세서 또는 로직 디바이스를 사용하여 구현될 수 있다. 프로세서 회로(202)는 또한 제어기, 마이크로제어기, 임베딩(embedding)형 프로세서, 칩 멀티프로세서(chip multiprocessor; CMP), 코프로세서(co-processor), 디지털 신호 프로세서(digital signal processor; DSP), 네트워크 프로세서, 미디어 프로세서, 입력/출력(input/output; I/O) 프로세서, 미디어 액세스 제어(media access control; MAC) 프로세서, 무선 기저대역 프로세서, 주문형 반도체(application specific integrated circuit; ASIC), 필드 프로그래머블 게이트 어레이(field programmable gate array; FPGA), 프로그래머블 로직 디바이스(programmable logic device; PLD) 등과 같은 전용 프로세서로서 구현될 수 있다. 하나의 실시예에서, 예를 들어, 프로세서 회로(202)는 캘리포니아 산타 클라라에 있는 Intel® Corporation에 의해 제조되는 프로세서와 같은 범용 프로세서로서 구현될 수 있다. 실시예들은 본 상황으로 제한되지 않는다.
다양한 실시예들에서, 프로세서 회로(202)는 운영 시스템(203)을 실행하도록 동작할 수 있다. 운영 시스템(203)은 프로그램 구성요소, 시스템, 사용자 및 데이터 통신들, 요청들 및 응답들을 포함하고, 통신하고, 생성하고, 획득하고 그리고 제공할 수 있고, 통신 네트워크들, 네트워크 인터페이스들, 데이터, I/O, 주변 디바이스들, 저장 디바이스들, 프로그램 구성요소들, 메모리 디바이스들, 사용자 입력 디바이스들 등과 같은 다양한 하드웨어 및/또는 소프트웨어 구성요소들과 상호 작용하고/하거나 이것들 사이에서 상호 작용하는 것을 촉진하도록 동작 가능할 수 있다. 일부 실시예들에서, 운영 시스템(203)은 장치(200)의 하나 이상의 하드웨어 및/또는 소프트웨어 요소들을 활용 및/또는 제어하도록 동작 가능한 프로그래밍 로직을 포함할 수 있다. 실시예들을 이 상황으로 제한되지 않는다.
다양한 실시예들에서, 장치(200)는 메모리 유닛(204)을 포함하거나 이 메모리 유닛(204)과 통신 가능하게 결합되도록 구성될 수 있다. 메모리 유닛(204)은 데이터를 저장할 수 있는 임의의 기계 판독 가능 또는 컴퓨터 판독 가능 매체를 사용하여 구현될 수 있고, 휘발성 및 비휘발성 메모리 모두를 포함한다. 예를 들어, 메모리 유닛(204)은 판독 전용 메모리(read-only memory; ROM), 랜덤 액세스 메모리(random access memory; RAM), 동적 RAM(dynamic RAM; DRAM), 더블 데이터 레이트 DRAM(Double-Data-Rate DRAM; DDRAM), 동기 DRAM(synchronous DRAM; SDRAM), 정적 RAM(static RAM; SRAM), 프로그램 가능 ROM(programmable ROM; PROM), 소거 가능 프로그램 가능 ROM(erasable programmable ROM; EPROM), 전기적 소거 가능 프로그램 가능 ROM(electrically erasable programmable ROM; EEPROM), 플래시 메모리, 강유전성 폴리머 메모리(ferroelectric polymer memory)와 같은 폴리머 메모리, 오보닉 메모리(ovonic memory), 상 변화 또는 강유전성 메모리, 실리콘 옥사이드 나이트라이드 옥사이드 실리콘(silicon-oxide-nitride-oxide-silicon; SONOS) 메모리, 자기 또는 광 카드들 또는 정보를 저장하는 데 적합한 임의의 다른 유형의 매체를 포함할 수 있다. 메모리 유닛(204)의 일부분 또는 모두는 프로세서 회로(202)와 동일한 집적 회로 상에 포함될 수 있거나 또는 대안으로 메모리 유닛(204)의 일부분 또는 모두는 프로세서 회로(202)의 집적 회로 외부에 있는 집적 회로 또는 다른 매체, 예를 들어 하드 디스크 드라이브 상에 배치될 수 있음은 주목할 가치가 있다. 메모리 유닛(204)이 도 2에서 장치(200) 내에 포함될지라도, 메모리 유닛(204)은 일부 실시예들에서 장치(200) 외부에 있을 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
일부 실시예들에서, 장치(200)는 그래픽 처리 회로(206)를 포함할 수 있다. 그래픽 처리 회로(206)는 장치(200) 대신 그래픽 처리 계산들 및/또는 연산들을 수행하도록 구성되는 회로를 포함할 수 있다. 다양한 실시예들에서, 그래픽 처리 회로(206)는 그래픽들을 하나 이상의 디스플레이 상에 제시하는데 사용되는 하나 이상의 프레임 버퍼(frame buffer)들 내에 저장하기 위하여 그래픽 프레임들을 생성하도록 동작 가능할 수 있다. 일부 실시예들에서, 그래픽 처리 회로(206)는 그래픽 처리 장치(graphic processing unit; GPU)를 포함할 수 있다. 다양한 실시예들에서, 그래픽 처리 회로(206)는 프로세서 회로(202) 내에 집적 그래픽 회로를 포함할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
일부 실시예들에서, 장치(200)는 그래픽 관리 모듈(208)을 포함할 수 있다. 그래픽 관리 모듈(208)은 그래픽 처리 회로(206)를 관리 및/또는 제어하도록 동작하는 로직, 회로, 및/또는 명령들을 포함할 수 있다. 다양한 실시예들에서, 그래픽 관리 모듈(208)은 그래픽 처리 회로(206)를 위한 드라이버를 포함할 수 있다. 일부 실시예들에서, 그래픽 관리 모듈(208)은 운영 시스템(203)이 그래픽 처리 회로(206)를 활용 및/또는 제어할 수 있도록 하는 프로그래밍 로직을 포함할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
도 2는 또한 시스템(240)의 블록도를 도시한다. 시스템(240)은 장치(200)의 상술한 요소들 중 임의의 요소를 포함할 수 있다. 시스템(240)은 무선 주파수(radio frequency; RF) 송수신기(242)를 더 포함할 수 있다. RF 송수신기(242)는 다양한 적절한 무선 통신 기술들을 사용하여 신호들을 송신 및 수신할 수 있는 하나 이상의 무선장치들을 포함할 수 있다. 그와 같은 기술들은 하나 이상의 무선 네트워크들에 걸친 통신들을 포함할 수 있다. 예시의 무선 네트워크들은 셀룰러 무선 액세스 네트워크들, 무선 근거리 네트워크(wireless local area network; WLAN)들, 무선 개인 에어리어 네트워크(wireless personal area network; WPAN)들, 무선 메트로폴리탄 에어리어 네트워크(wireless metropolitan area network; WMAN)들 및 위성 네트워크들을 포함한다(그러나 이로 제한되지 않는다). 그와 같은 네트워크들에 걸쳐서 통신할 때, RF 송수신기(242)는 하나 이상의 적용 가능한 표준들에 따라 임의의 버전으로 동작할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
다양한 실시예들에서, 시스템(240)은 하나 이상의 RF 안테나들(244)을 포함할 수 있다. 임의의 특정한 RF 안테나(244)의 예들은 내부 안테나, 전방향성(omni-directional) 안테나, 모노폴(monopole) 안테나, 다이폴(dipole) 안테나, 엔드 페드(end-fed) 안테나, 원 편파(circularly polarized) 안테나, 마이크로 스트립(micro-strip) 안테나, 다이버시티(diversity) 안테나, 듀얼(dual) 안테나, 3중 대역(tri-band) 안테나, 4중 대역(quad-band) 안테나 등을 포함할 수 있다. 일부 실시예들에서, RF 송수신기(242)는 하나 이상의 RF 안테나들(244)을 사용하여 메시지들 및/또는 데이터를 송신 및/또는 수신하도록 동작할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
장치(200) 및/또는 시스템(240)의 일반적인 동작 동안, 프로세서 회로(202)는 그래픽 애플리케이션(209)를 실행하도록 동작 가능할 수 있다. 그래픽 애플리케이션(209)은 예를 들어, 이미지 또는 비디오 뷰잉 애플리케이션(viewing application), 이미지 또는 비디오 재생 애플리케이션, 스트리밍 비디오 재생 애플리케이션, 멀티미디어 애플리케이션 프로그램, 시스템 프로그램, 컨퍼런싱 애플리케이션(conferencing application), 게임 애플리케이션, 생산성 애플리케이션(productivity application), 메시징 애플리케이션(messaging application), 인스턴트 메시징(instant messaging; IM) 애플리케이션, 전자 메일(electronic mail; email) 애플리케이션, 단문 메시지 서비스(short messaging service; SMS) 애플리케이션, 멀티미디어 메시지 서비스(multimedia messaging service; MMS) 애플리케이션, 소셜 네트워킹(social networking) 애플리케이션, 웹 브라우징 애플리케이션 등과 같이, 그래픽 생성 능력들을 피처링(featuring)하는 임의의 애플리케이션을 포함할 수 있다. 다양한 실시예들에서, 그래픽 애플리케이션(209)은 하나 이상의 3D 그래픽 생성 케이퍼빌리티들을 피처링하는 3차원(3D) 그래픽 애플리케이션을 포함할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
일부 실시예들에서, 실행 중에, 그래픽 애플리케이션(209)은 일반적으로 그래픽 처리 회로(206)로 하여금 프레임 버퍼(210)에 그래픽 프레임들(212)이 반복하여 상주하게 하도록 동작할 수 있다. 프레임 버퍼(210)로부터, 그래픽 프레임들(212)이 디스플레이(246)로 반복해서 보내져서 그래픽 컨텐츠가 디스플레이(246)에 제시되도록 할 수 있다. 디스플레이(246)의 예들은 텔레비전, 모니터, 프로젝터 및 컴퓨터 스크린을 포함할 수 있다. 하나의 실시예에서, 예를 들어, 디스플레이(246)는 액정 디스플레이(liquid crystal display; LCD), 발광 다이오드(light emitting diode; LED) 또는 다른 유형의 적절한 비주얼 인터페이스에 의해 구현될 수 있다. 디스플레이(246)는 예를 들어, 터치 감응 디스플레이 스크린("터치스크린")을 포함할 수 있다. 다양한 구현들에서, 디스플레이(246)는 임베딩된 트랜지스터들을 포함하는 하나 이상의 박막 트랜지스터(thin-film transistor; TFT) LCD를 포함할 수 있다. 그러나, 실시예들은 이 예들로 제한되지 않는다. 디스플레이(246)가 도 2에서 장치(200) 및 시스템(240) 외부에 있는 것으로 도시될지라도, 디스플레이(246)는 일부 실시예들에서 장치(200) 및/또는 시스템(240) 내에 포함될 수 있음은 주목할 가치가 있다. 실시예들은 이 상황으로 제한되지 않는다.
다양한 실시예들에서, 그래픽 처리 회로(206)는 일련의 패스(pass)들을 포함하는 프레임 생성 프로세스에 따라 임의의 특정한 그래픽 프레임(212)을 생성하도록 동작할 수 있다. 일부 실시예들에서, 이 패스들 일부 또는 모두 동안, 그래픽 처리 회로(206)는 자신이 액세스했던 메모리로 그리고/또는 이 메모리로부터 하나 이상의 그래픽 자원들(214)을 판독 및/또는 기록하도록 동작할 수 있다. 다양한 실시예들에서, 예를 들어, 그래픽 처리 회로(206)는 메모리 유닛(204)으로 그리고 메모리 유닛(204)으로부터 하나 이상의 그래픽 자원들(214)을 판독 및/또는 기록하도록 동작할 수 있다. 간소화를 위해, 다음의 논의는 이 특정한 예의 구성을 가정한다. 그러나, 일부 다른 실시예들에서, 그래픽 처리 회로(206)는 메모리 유닛(204) 외의 메모리로 그리고 이 메모리로부터 하나 이상의 그래픽 자원들(214)을 판독 및/또는 기록하도록 동작할 수 있다. 예를 들어, 다양한 실시예들에서, 그래픽 처리 회로(206)는 메모리 유닛(204) 외부에 있는 전용 그래픽 메모리로 그리고/또는 이 메모리로부터 하나 이상의 그래픽 자원들(214)을 판독 및/또는 기록하도록 동작할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
일부 실시예들에서, 각각의 그래픽 자원(214)은 하나 이상의 그래픽 프레임들(212)을 생성하는 데 사용하기 위한 그래픽 정보를 포함할 수 있다. 그래픽 자원들(214)의 예들은 제한 없이, 텍스처(texture)들, 중간 렌더 타깃(render target)들, 형상(shape)들, 영상들, 이미지들, 프레임들, 비트맵들, 패턴들 및/또는 다른 유형들의 그래픽 정보를 포함할 수 있다. 다양한 실시예들에서, 그래픽 자원들(214)은 하나 이상의 미리 생성된 그래픽 자원들(216)을 포함할 수 있다. 각각의 미리 생성된 그래픽 자원(216)은 그래픽 애플리케이션(209)이 실행을 시작하는 시간에 이미 규정되었고/되었거나 구성되었던 그래픽 자원을 포함할 수 있다. 일부 실시예들에서, 미리 생성된 그래픽 자원들(216) 중 하나 이상은 그래픽 애플리케이션(209)의 설계 및/또는 개발 중에 규정되고/되거나 구성되는 그래픽 자원들을 포함할 수 있다. 다양한 실시예들에서, 그래픽 애플리케이션(209)은 그래픽 애플리케이션(209)의 초기 실행 단계 중에 메모리 유닛(204) 내에 하나 이상의 미리 생성된 그래픽 자원들(216)을 저장하도록 동작할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
일부 실시예들에서, 그래픽 자원들(214)은 하나 이상의 동적 생성 그래픽 자원들(218)을 포함할 수 있다. 각각의 동적 생성 그래픽 자원(218)은 진행 중인 그래픽 애플리케이션(209)의 실행 중에 생성되고 그러므로 그래픽 애플리케이션(209)의 실행 전에 규정되지 않은 그래픽 자원을 포함할 수 있다. 다양한 실시예들에서, 그래픽 처리 회로(206)는 하나 이상의 동적 생성 그래픽 자원들(2180)을 생성하고 이것들을 메모리 유닛(204) 내에 저장하도록 동작할 수 있다. 일부 실시예들에서, 그래픽 처리 회로(206)가 동적 생성 그래픽 자원(218)을 생성할 때마다, 이 회로는 메모리 유닛(204)으로부터 하나 이상의 그래픽 자원들(214)을 판독하고 상기 하나 이상의 그래픽 자원들(214)에 기초하여 동적 생성 그래픽 자원(218)을 생성할 수 있다. 다양한 실시예들에서, 그래픽 처리 회로(206)가 임의의 특정한 동적 생성 그래픽 자원(218)을 생성하기 위해 검색하고 사용하는 그래픽 자원들(214)은 하나 이상의 다른 동적 생성 그래픽 자원들(218)을 포함할 수 있다. 예를 들어, 일부 실시예들에서, 프레임 생성 프로세스의 소정의 패스 동안, 그래픽 처리 회로(206)는 프레임 생성 프로세스의 하나 이상의 이전의 패스들 동안 생성되었고 저장되었던 하나 이상의 동적 생성 그래픽 자원들(218)에 기초하여 하나 이상의 동적 생성 그래픽 자원들(218)을 생성하도록 동작할 수 있다. 새로 생성되는 동적 생성 그래픽 자원들(218) 자체는 그 후에 메모리 유닛(204)에 기록될 수 있고, 이 자원들(218)은 프레임 생성 프로세스의 하나 이상의 후속 패스들 동안 사용하기 위해 메모리 유닛(204)으로부터 판독될 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
다양한 실시예들에서, 그래픽 처리 회로(206)는 메모리 버스(220)를 통해 메모리 유닛(204)에 액세스하도록 동작할 수 있다. 일부 실시예들에서, 그래픽 처리 회로(206)가 임의의 시점에서 메모리 유닛(204)에 그리고/또는 메모리 유닛(204)으로부터 그래픽 자원들(214)을 판독 및/또는 기록할 수 있는 레이트는 메모리 버스(220)의 이용 가능한 대역폭에 의해 제한될 수 있다. 다양한 실시예들에서, 메모리 유닛(204) 내의 그래픽 자원들(214)이 더 클수록, 상기 그래픽 자원들(214)을 판독 및/또는 기록하는 것과 연관되는 대역폭 소비가 더 클 수 있다. 메모리 버스(220)를 통하여 그래픽 자원들(214)에 액세스하는 것과 연관되는 대역폭 수요들이 수용될 수 없으면, 그래픽 처리 회로(206)는 디스플레이(246) 상에 제시되는 그래픽 컨텐츠에 관한 만족스런 품질 레벨을 산출하는 데 충분한 레이트로 그래픽 프레임들(212)을 생성할 수 없을 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
일부 실시예들에서, 임의의 소정의 그래픽 자원(214)이 메모리 버스(220)에서의 처리량에 관하여 부담을 주는 정도는 상기 자원의 사용자 특성들뿐만 아니라 이의 크기에 좌우될 수 있다. 예를 들어, 매우 큰 그래픽 자원(214)이 단지 프레임 생성 프로세스의 과정 중에 메모리 유닛(204)으로부터 한 번 판독되면, 이 매우 큰 그래픽 자원(214)은 특히 현저한 메모리 대역폭 소비자로 여겨지지 않을 수 있다. 마찬가지로, 상대적으로 작은 그래픽 자원(214)이 프레임 생성 프로세스 동안 메모리 유닛(204)으로부터 매우 빈번하게 판독되면 이 작은 그래픽 자원(214)은 매우 현저한 메모리 대역폭 소비자로 여겨질 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
다양한 실시예들에서, 그래픽 처리 회로(206)는 압축 구성요소(222)를 포함할 수 있다. 압축 구성요소(222)는 하나 이상의 그래픽 자원들(214)을 압축하도록 동작하는 로직, 회로 및/또는 명령들을 포함할 수 있다. 더 특정하게, 일부 실시예들에서, 압축 구성요소(222)는 하나 이상의 그래픽 자원들(214)을 메모리 유닛(204) 내에 저장하기 전에 이것들을 압축하도록 동작할 수 있다. 다양한 실시예들에서, 압축 구성요소(222)가 압축하도록 동작하는 하나 이상의 그래픽 자원들(214)은 하나 이상의 미리 생성된 그래픽 자원들(216) 및/또는 하나 이상의 동적 생성 그래픽 자원들(218)을 포함할 수 있다. 일부 실시예들에서, 압축 구성요소(222)는 하나 이상의 각각의 압축된 텍스처 포맷들로 압축하는 하나 이상의 쉐이더(shader)들을 포함할 수 있다. 다양한 실시예들에서, 압축 구성요소(222)의 압축 능력들은 하나 이상의 애플리케이션 프로그래밍 인터페이스(application programming interface; API) 명령들을 통해 액세스 가능할 수 있다. 일부 실시예들에서, 하나 이상의 그와 같은 API 명령들은 3D API 명령들을 포함할 수 있다. 다양한 실시예들에서, 하나 이상의 그와 같은 API 명령들은 그래픽 애플리케이션(209)에 투명한 하나 이상의 하드웨어 구현 및/또는 최적화 쉐이더 구현 압축 에이전트들을 GPU 디바이스 드라이버에 기반하여 제어하는 것이 가능할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
일부 실시예들에서, 그래픽 처리 회로(206)는 압축 해제(decompression) 구성요소(224)를 포함할 수 있다. 압축 해제 구성요소(224)는 하나 이상의 압축된 그래픽 자원들(214)을 압축 해제하도록 동작하는 로직, 회로 및/또는 명령들을 포함할 수 있다. 특히, 다양한 실시예들에서, 압축 해제 구성요소(224)는 메모리 유닛(204)으로부터의 하나 이상의 압축된 그래픽 자원들(214)의 검색 이후에 이 자원들(214)을 압축 해제하도록 동작할 수 있다. 일부 실시예들에서, 압축 해제 구성요소(224)가 압축 해제하도록 동작하는 하나 이상의 그래픽 자원들(214)은 하나 이상의 압축된 미리 생성된 그래픽 자원들(216) 및/또는 하나 이상의 압축된 동적 생성 그래픽 자원들(218)을 포함할 수 있다. 다양한 실시예들에서, 압축 해제 구성요소(224)는 압축 구성요소(222)에 의해 활용되는 하나 이상의 압축된 텍스처 포맷들에 대응하는 텍스처 샘플링 로직, 회로 및/또는 명령들을 포함할 수 있다. 일부 실시예들에서는, 압축된 그래픽 자원들(214)의 일부 또는 모두가 자신들의 압축 포맷들로 고유하게 샘플링될 수 있고 따라서 압축 해제 구성요소(224)에 의해 압축해제되지 않을 수 있음은 주목할 가치가 있다. 실시예들은 이 상황으로 제한되지 않는다.
일부 실시예들에서, 그래픽 애플리케이션(209)이 런칭(launching)되면, 이 애플리케이션은 하나 이상의 미리 생성된 그래픽 자원들(216)을 메모리 유닛(204) 내에 저장하도록 동작할 수 있다. 다양한 실시예들에서, 그래픽 애플리케이션(209)은 추가 또는 대안으로 진행 중인 실행 동안 하나 이상의 미리 생성된 그래픽 자원들(216)을 메모리 유닛(204) 내에 저장하도록 동작할 수 있다. 일부 실시예들에서, 그래픽 애플리케이션(209)은 하나 이상의 그와 같은 미리 생성된 그래픽 자원들(216)을 압축되지 않은 포맷으로 저장하도록 동작할 수 있다. 다양한 실시예들에서, 그래픽 애플리케이션(209)은 추가 또는 대안으로 하나 이상의 그와 같은 미리 생성된 그래픽 자원들(216)을 메모리 유닛(204) 내에 하나 이상의 압축된 포맷들로 저장하도록 동작할 수 있다. 일부 실시예들에서, 하나 이상의 미리 생성된 그래픽 자원들(216)은 자신들이 이미 미리 생성되는 것과 함께 압축되었을 수 있고, 그래픽 애플리케이션(209)은 이 압축된 미리 생성된 그래픽 자원들(216)을 메모리 유닛(204)에 직접 기록하도록 동작할 수 있다. 다양한 실시예들에서, 그래픽 애플리케이션(209)은 하나 이상의 미리 생성된 그래픽 자원들(216)을 메모리 유닛(204) 내에 저장하기 전에 이 자원들(216)을 하나 이상의 미리 결정된 압축 포맷들에 따라 압축하기 위하여 압축 구성요소(222)로 전송하도록 동작할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
일부 실시예들에서, 그래픽 애플리케이션(209)은 일반적으로 실행 중에 그래픽 프레임들(212)이 프레임 버퍼(210)에 반복해서 상주되도록 함으로써 그래픽 컨텐츠를 디스플레이(246)에 제시하도록 동작할 수 있다. 다양한 실시예들에서, 프레임 생성 프로세스의 일련의 패스들의 누적 결과로서 임의의 특정한 그래픽 프레임(212)이 생성될 수 있다. 일부 실시예들에서, 소정의 그래픽 프레임(212)에 대한 프레임 생성 프로세스의 임의의 특정한 패스 동안, 그래픽 처리 회로(206)는 하나 이상의 동적 생성 그래픽 자원들(218)을 생성하도록 동작할 수 있다. 다양한 실시예들에서, 그래픽 처리 회로(206)는 하나 이상의 미리 생성된 그래픽 자원들(216) 및/또는 하나 이상의 다른 동적 생성 그래픽 자원들(218)에 기초하여 임의의 특정한 동적 생성 그래픽 자원(218)을 생성하도록 동작할 수 있다. 일부 실시예들에서, 그래픽 처리 회로(206)는 메모리 버스(220)를 통해 메모리 유닛(204)으로부터 하나 이상의 미리 생성된 그래픽 자원들(216) 및/또는 하나 이상의 다른 동적 생성 그래픽 자원들(218)을 검색하도록 동작할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
다양한 실시예들에서, 프레임 생성 프로세스의 소정의 패스의 출력들을 포함하는 하나 이상의 동적 생성 그래픽 자원들(218)은 하나 이상의 후속 프레임들에 대한 생성 프로세스들 동안 하나 이상의 후속 패스들 및/또는 입력들에 대한 입력들을 이룰 수 있다. 일부 실시예들에서, 그래픽 처리 회로(206)는 상기 하나 이상의 후속 패스들 및/또는 후속 생성 프로세스들 동안의 검색을 위해 그와 같은 동적 생성 그래픽 자원들(218)을 메모리 유닛(204) 내에 저장하도록 동작할 수 있다. 다양한 실시예들에서, 상기 동적 생성 그래픽 자원들(218)이 더 많을수록, 이들의 저장 및/또는 후속 검색과 연관되는 메모리 대역폭 소비가 더 커질 수 있다. 일부 실시예들에서, 하나 이상의 그래픽 프레임들(212)에 대한 생성 프로세스 또는 프로세스들의 전체 메모리 대역폭 수요들을 줄이기 위하여, 압축 구성요소(222)가 생성 프로세스(들) 동안 생성되는 하나 이상의 동적 생성 그래픽 자원들(218)을 압축하는 것이 바람직할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
다양한 실시예들에서, 압축 구성요소(222)는 하나 이상의 손실 압축 알고리즘들을 구현하는 것이 가능할 수 있다. 일부 실시예들에서, 하나 이상의 그와 같은 손실 압축 알고리즘들은 텍스처 압축 알고리즘들을 포함할 수 있다. 다양한 실시예들에서, 하나 이상의 그와 같은 손실 압축 알고리즘들은 블록 기반 압축 알고리즘들을 포함할 수 있다. 압축 구성요소(222)가 일부 실시예들에서 구현하는 것이 가능할 수 있는 손실 압축 알고리즘들의 예들은 제한 없이, BC1/DXT1, BC2/DXT3, BC3/DXT5, BC4, BC5, BC6, 및/또는 BC7와 같은 포맷들에 따라 적응성 크기 조정 텍스처 압축(adaptive scalable texture compression; ASTC) 및 블록 압축(block compression; BC)을 포함할 수 있다. 다양한 실시예들에서, 임의의 소정의 손실 압축 알고리즘을 동적 생성 그래픽 자원(218)에 적용하는 것은 저장 공간에 점유되는 동적 생성 그래픽 자원(218)의 양을 줄이는 댓가로 동적 생성 그래픽 자원(218)과 연관되는 그래픽 품질의 양을 어느 정도 트레이드오프(tradeoff)하는 것을 포함할 수 있다. 예를 들어, 손실 압축되어 메모리 유닛(204)에 저장된 소정의 동적 생성 그래픽 자원(218)에 관하여, 압축 해제에 의해 획득되는 결과물은 이 동적 생성 그래픽 자원(218)의 원래의 압축되지 않은 버전에 비해 해상도, 비트 심도 및/또는 다른 품질 측정이 덜한 특징을 가지는 동적 생성 그래픽 자원(218)의 버전일 수 있다. 일반적으로 말해서, 압축 손실이 더 많은 압축 알고리즘은 더 큰 크기 감소를 가져올 수 있지만, 그래픽 품질을 더 희생시킬 수 있다. 마찬가지로, 압축 손실이 더 적은 압축 알고리즘은 그래픽 품질을 더 양호하게 보존할 수 있지만, 크기가 감소되는 양이 더 적을 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
일부 실시예들에서, 압축 구성요소(222)는 하나 이상의 무손실(lossless) 압축 알고리즘을 구현하는 것이 또한 가능할 수 있다. 압축 구성요소(222)가 다양한 실시예들에서 구현하는 것이 가능할 수 있는 무손실 압축 알고리즘들의 예들은 제한 없이, OpenCTM, Lempel-Ziv-Welch(LZW), 디플레이트(Deflate), 이산 코사인 변환(discrete cosine transform; DCT)-기반 인코딩, 국제 전신 전화 자문 위원회(International Telegraph and Telephone Consultative Committee; CCITT) T.4 이단(bi-level) 인코딩 및 CCITT T.6 이단 인코딩을 포함할 수 있다. 무손실 압축 알고리즘을 적용함으로써 동적 생성 그래픽 자원(218)의 그래픽 품질이 희생되지 않을 수 있을지라도, 이는 여전히 동적 생성 그래픽 자원(218)의 크기를 줄이는 댓가로 그래픽 처리 회로(206)의 이용 가능한 프로세싱 처리량의 양을 어느 정도 트레이드오프하는 것을 포함할 수 있다. 임의의 특정한 무손실 압축 알고리즘을 임의의 특정한 동적 생성 그래픽 자원(218)에 적용하는 것에 관하여, 압축을 수행하는 것과 연관되는 그래픽 처리량 비용들이 있을 수 있을 뿐만 아니라, 또한 압축된 자원이 후속해서 메모리로부터 검색될 때 대응하는 압축 해제를 수행하는 것과 연관되는 그래픽 처리량 비용들이 또한 있을 수 있음은 주목할 가치가 있다. 그와 같은 그래픽 처리량/크기 감소 트레이드오프는 임의의 특정한 손실 압축 알고리즘이 적용될 때뿐만 아니라 임의의 특정한 무손실 압축 알고리즘이 적용될 때 수반될 수 있음은 주목할 가치가 있다. 실시예들은 이 상황으로 제한되지 않는다.
일부 실시예들에서, 소정의 동적 생성 그래픽 자원(218)의 생성 및/또는 사용 시에, 상기 동적 생성 그래픽 자원(218)이 압축될지가 결정될 수 있다. 다양한 실시예들에서, 이 결정은 그래픽 애플리케이션(209)에 의해 수행될 수 있다. 일부 다른 실시예들에서, 이 결정은 그래픽 관리 모듈(208) 또는 압축 구성요소(222)에 의해 수행될 수 있다. 또 다른 실시예들에서, 이 결정은 장치 및/또는 시스템(240)의 다른 구성요소에 의해 수행될 수 있다. 더 다른 실시예들에서, 이 결정은 상술한 요소들 중 임의의 요소의 둘 이상에 의해 공동으로 수행될 수 있다. 다음의 논의를 간소화하기 위해 용어 "압축 결정 로직"은 임의의 특정한 실시예에 관하여, 동적 생성 그래픽 자원들에 대한 개시된 압축 기술들과 함께 소정의 결정 또는 다른 동작을 수행하는 엔티티(entity) 또는 엔티티들을 칭하는 포괄적 용어로서 사용될 것이다. 달리 진술되지 않으면, "압축 결정 로직"에 의해 수행되는 것으로 기술되는 임의의 특정한 결정 또는 다른 동작은 상술한 요소들 또는 이 요소들의 결합들 중 임의의 요소에 의해 수행될 수 있음이 이해되어야 한다. 특정한 요소들이 특정한 결정들 또는 다른 동작들을 수행하는 예들이 제공될 수 있을지라도, 이 예들은 용어 "압축 결정 로직"의 범위를 자신들이 적용되는 상황에 관하여 제한하도록 의도되지 않음이 더 이해되어야 한다.
다양한 실시예들에서, 압축 결정 로직은 개시된 동적 생성 그래픽 자원들에 대한 압축 기술들과 공동으로 결정들 및/또는 다른 동작들을 수행하는 것과 함께 하나 이상의 파라미터들을 생성, 결정, 저장, 분석, 비교하고/하거나 이와는 달리 활용하도록 동작할 수 있다. 임의의 특정한 그와 같은 파라미터들은 임의의 특정한 실시예에서의 압축 결정 로직의 임의의 하나 이상의 구성요소들에 의해 생성, 결정, 저장, 분석, 비교되고/되거나 이와는 달리 활용될 수 있다. 이에 따라, 도 2는 후술되는 그와 같은 파라미터들의 예를 도 2에 있는 별개의 압축 결정 파라미터들(226)에 포함되는 것으로 도시한다. 이 도시가 단지 일부 실시예들에서 이 예의 파라미터들을 생성, 결정, 저장, 분석, 비교하고/하거나 이와는 달리 활용할 수 있는 구성요소들의 선택과 연관되는 유연성을 전하는 것으로 의도되고 이 예의 파라미터들이 반드시 동일한 구성요소에 의해 생성, 결정, 저장, 분석, 비교되고/되거나 이와는 달리 활용될 필요가 있다는 것을 나타내도록 의도되지 않음이 인정되어야 한다. 실시예들은 이 상황으로 제한되지 않는다.
다양한 실시예들에서, 압축 결정 로직은 임의의 소정의 동적 생성 그래픽 자원(218)의 하나 이상의 자원 사용 특성들(228)을 결정하도록 동작할 수 있다. 일부 실시예들에서, 하나 이상의 자원 사용 특성들(228)은 동적 생성 그래픽 자원(218)이 하나 이상의 그래픽 프레임들(212)에 대한 프레임 생성 프로세스 또는 프로세스들의 남은 프로세스 동안 얼마나 자주 메모리 버스(220)를 횡단할지에 대한 하나 이상의 표시들 및/또는 추정들을 포함할 수 있다. 다양한 실시예들에서, 압축 결정 로직은 동적 생성 그래픽 자원(218)이 포함하는 그래픽 자원의 유형에 기초하여 동적 생성 그래픽 자원(218)의 하나 이상의 자원 사용 특성들(228)을 결정하도록 동작할 수 있다. 일부 실시예들에서, 압축 결정 로직은 자원 사용 이력(230)에 기초하여 동적 생성 그래픽 자원(218)의 하나 이상의 자원 사용 특성들(228)을 결정하도록 동작할 수 있다. 자원 사용 이력(230)은 하나 이상의 동적 생성 그래픽 자원들(218)이 하나 이상의 이전의 패스들 동안 그리고/또는 하나 이상의 이전의 그래픽 프레임들(212)에 대한 생성 프로세스들 동안 얼마나 자주 사용되었는지를 기술하는 정보를 포함할 수 있다. 다양한 실시예들에서, 압축 결정 로직은 일련의 그래픽 프레임들(212)의 생성과 함께 진행하는 것에 기초하여 자원 사용 이력(230)을 생성, 유지 및/또는 갱신하도록 동작할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
예의 실시예에서, 소정의 그래픽 프레임(212)에 대한 생성 프로세스의 소정의 패스 동안, 압축 결정 로직은 동적 생성 그래픽 자원(218) 및/또는 동일한 유형의 자원들이 생성 프로세스의 이전의 패스들 동안 그리고/또는 하나 이상의 이전의 그래픽 프레임들(212)에 대한 생성 프로세스들 동안 얼마나 자주 메모리 버스(220)를 횡단했는지를 나타내는 자원 사용 이력(230)에 기초하여 동적 생성 그래픽 자원(218)에 대한 하나 이상의 자원 사용 특성들(228)을 결정하도록 동작할 수 있다. 그와 같은 예의 실시예에서, 하나 이상의 생성된 자원 사용 특성들(228)은 동적 생성 그래픽 자원(218)이 상기 그래픽 프레임(212)의 생성 프로세스의 남은 프로세스 동안 그리고/또는 하나 이상의 후속 그래픽 프레임들(212)에 대한 생성 프로세스들 동안 얼마나 자주 메모리 버스(220)를 횡단할지에 대한 표시 또는 추정을 포함할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
일부 실시예들에서, 압축 결정 로직은 임의의 특정한 동적 생성 그래픽 자원(218)에 대한 하나 이상의 자원 사용 특성들(228)에 기초하여 상기 동적 생성 그래픽 자원(218)을 압축할지 여부를 결정하도록 동작할 수 있다. 다양한 실시예들에서, 압축 결정 로직은 하나 이상의 자원 사용 특성들(228)에 기초하여 동적 생성 그래픽 자원(218)에 대한 대역폭 소비 메트릭(metric)(232)를 결정하도록 동작할 수 있고, 대역폭 소비 메트릭(232)에 기초하여 동적 생성 그래픽 자원(218)을 압축할지 여부를 결정하도록 동작할 수 있다. 일부 실시예들에서, 대역폭 소비 메트릭(232)은 일반적으로 하나 이상의 후속 패스들의 과정 및/또는 하나 이상의 후속 그래픽 프레임들(212)에 대한 생성 프로세스들에 걸쳐 동적 생성 그래픽 자원(218)이 메모리 버스(220)의 대역폭을 소비할 것으로 예상되는 전체 범위의 표시를 포함할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
다양한 실시예들에서, 압축 결정 로직은 하나 이상의 자원 사용 특성들(228) 및 동적 생성 그래픽 자원(218)의 크기에 기초하여 소정의 동적 생성 그래픽 자원(218)에 대한 대역폭 소비 메트릭(232)을 결정하도록 동작할 수 있다. 예를 들어, 일부 실시예들에서, 압축 결정 로직은 동적 생성 그래픽 자원(218)의 크기를 동적 생성 그래픽 자원(218)이 프레임 생성 프로세스의 남은 패스들 동안 메모리 버스(220)를 통과할 것으로 예상되는 추정 횟수로 승산함으로써 대역폭 소비 메트릭(232)을 결정하도록 동작할 수 있다. 다양한 실시예들에서, 압축 결정 로직은 대역폭 소비 메트릭(232)을 하나 이상의 임계치들과 비교함으로써 동적 생성 그래픽 자원(218)을 압축할지 여부를 결정하도록 동작할 수 있다. 예를 들어, 일부 실시예들에서, 압축 결정 로직은 동적 생성 그래픽 자원(218)의 대응하는 대역폭 소비 메트릭(232)이 규정된 대역폭 소비 임계치(234)보다 더 작을 경우 이 동적 생성 그래픽 자원(218)을 압축하지 않을 것임을 결정하도록 동작할 수 있다. 다양한 실시예들에서, 대역폭 소비 메트릭(232)이 대역폭 소비 임계치(234)보다 더 큰 경우, 압축 결정 로직은 동적 생성 그래픽 자원(218)을 압축할 것을 결정하도록 동작할 수 있거나 또는 동적 생성 그래픽 자원(218)을 더 고려될 압축 후보로서 식별할 수 있다. 일부 실시예들에서, 대역폭 소비 임계치(234)의 값은 동적 생성 그래픽 자원(218)이 포함하는 그래픽 자원의 유형에 특정될 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
다양한 실시예들에서, 압축 결정 로직은 임의의 특정한 동적 생성 그래픽 자원(218)의 압축되지 않은 버전에 대한 그래픽 품질 메트릭(236)을 결정하도록 동작할 수 있다. 일부 실시예들에서, 이 그래픽 품질 메트릭(236)은 일반적으로 압축되지 않은 동적 생성 그래픽 자원(218)의 상대적인 품질 레벨의 표시자를 포함할 수 있다. 다양한 실시예들에서, 이 그래픽 품질 메트릭(236)은 동적 생성 그래픽 자원(218)의 해상도, 비트 심도, 포맷 및/또는 자원 유형과 같은, 압축되지 않은 동적 생성 그래픽 자원(218)의 하나 이상의 특성들의 함수로서 결정될 수 있다. 일부 실시예들에서, 압축 결정 로직은 그래픽 품질 메트릭(236)을 동적 생성 그래픽 자원(218)에 대한 그래픽 품질 임계치(238)과 비교함으로써 동적 생성 그래픽 자원(218)을 압축할지 여부를 결정하도록 동작할 수 있다. 다양한 실시예들에서, 동적 생성 그래픽 자원(218)에 대한 그래픽 품질 임계치(238)는 동적 생성 그래픽 자원(218)에 대한 허용 가능한 품질 레벨을 규정하는 그래픽 품질 메트릭 값을 포함한다. 일부 실시예들에서, 압축 결정 로직은 동적 생성 그래픽 자원(218)의 압축되지 않은 형태에 대응하는 그래픽 품질 메트릭(236)이 그래픽 품질 임계치(238)보다 더 크지 않을 경우, 동적 생성 그래픽 자원(218)을 압축하지 않을 것임을 결정하도록 동작할 수 있다. 다양한 실시예들에서, 압축되지 않은 동적 생성 그래픽 자원(218)에 대응하는 그래픽 품질 메트릭(236)이 그래픽 품질 임계치(238)보다 더 큰 경우, 압축 결정 로직은 동적 생성 그래픽 자원(218)을 압축할 것을 결정하도록 동작할 수 있거나 또는 동적 생성 그래픽 자원(218)을 더 고려될 압축 후보로서 식별할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
일부 실시예들에서, 압축 결정 로직은 대역폭 소비 메트릭들(232)에 기초하고 그래픽 품질 메트릭들(236)에 기초하여 압축 결정들을 행하도록 구성될 수 있다. 다양한 실시예들에서, 소정의 동적 생성 그래픽 자원(218)을 압축할지 여부를 결정하기 위하여, 압축 결정 로직은 우선 상기 동적 생성 그래픽 자원(218)에 대한 대역폭 소비 메트릭(232)을 대역폭 소비 임계치(234)와 비교하도록 동작할 수 있다. 일부 실시예들에서, 대역폭 소비 메트릭(232)이 대역폭 소비 임계치(234)보다 더 작은 경우, 압축 결정 로직은 동적 생성 그래픽 자원(218)을 압축하지 않을 것을 결정하도록 동작할 수 있고, 동적 생성 그래픽 자원(218)에 대한 그래픽 품질 메트릭(236)을 계산하지 않을 수 있다. 한편, 대역폭 소비 메트릭(232)이 대역폭 소비 임계치(234)보다 더 큰 경우, 압축 결정 로직은 동적 생성 그래픽 자원(218)에 대한 그래픽 품질 메트릭(236)을 계산하도록 동작할 수 있고 그래픽 품질 메트릭(236)을 그래픽 품질 임계치(238)과 비교함으로써 동적 생성 그래픽 자원(218)을 압축할지 여부를 결정할 수 있다. 그러나, 실시예들이 이 예로 제한되지 않음이 인정되어야 한다. 다양한 다른 실시예들에서, 초기 고려할 점은 그래픽 품질 메트릭(236) 및 그래픽 품질 임계치(238) 사이의 비교를 포함할 수 있고, 대역폭 보비 메트릭(232)의 결정은 이 비교의 결과의 여하에 좌우될 수 있다. 더욱이, 일부 실시예들에서, 비교 결정 로직은 임의의 특정한 동적 생성 그래픽 자원(218)을 압축할지를 또는 임의의 특정한 동적 생성 그래픽 자원(218)을 압축 후보로서 더 고려해야 할지를 결정하기 위해 하나 이상의 추가 및/또는 대안의 파라미터들 및/또는 비교치들을 사용할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
다양한 실시예들에서, 동적 생성 그래픽 자원(218)을 압축한다는 결정에 응답하여, 압축 결정 로직은 압축 절차를 선택하여 압축이 이 절차에 따라 수행될 수 있도록 동작할 수 있다. 일부 실시예들에서, 압축 결정 로직은 동적 생성 그래픽 자원(218)에 대한 그래픽 품질 임계치(238)에 기초하여 동적 생성 그래픽 자원(218)에 대한 압축 절차를 선택하도록 동작할 수 있다. 다양한 실시예들에서, 압축 결정 로직은 압축 구성요소(222)가 구현할 수 있는 복수의 압축 절차들 중에서 압축 절차를 선택하도록 동작할 수 있다. 일부 실시예들에서, 각각의 그와 같은 압축 절차는 각각의 압축 알고리즘에 대응할 수 있다. 다양한 실시예들에서, 복수의 압축 절차들은 손실 압축 알고리즘에 대응하는 하나 이상의 압축 절차들을 포함할 수 있다. 일부 실시예들에서, 복수의 압축 절차들은 추가 또는 대안으로 무손실 압축 알고리즘들에 대응하는 하나 이상의 압축 절차들을 포함할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
다양한 실시예들에서, 압축 결정 로직은 일반적으로 소정의 동적 생성 그래픽 자원(218)에 대한 자신의 압축 절차의 선택을, 품질이 동적 생성 그래픽 자원(218)의 압축과 함께 허용 가능하게 희생될 수 있는 정도에 기초할 수 있다. 일반적으로 말해서, 품질이 희생될 수 있는 허용 가능한 정도가 더 클수록, 압축 결정 로직은 더 압축하는 알고리즘을 선택할 수 있다. 일부 실시예들에서, 소정의 동적 생성 그래픽 자원(218)에 관하여, 압축 결정 로직은 상기 동적 생성 그래픽 자원(218)에 대한 그래픽 품질 임계치에 기초하여 허용 가능하게 희생될 수 있는 품질의 양을 결정 또는 추정하도록 동작할 수 있다. 다양한 실시예들에서, 예를 들어, 압축 결정 로직은 동적 생성 그래픽 자원(218)에 대한 그래픽 품질 임계치(238)를 상기 자원(218)의 압축되지 않은 형태에 대응하는 그래픽 품질 메트릭(236)에 비교함으로써 허용 가능하게 희생될 수 있는 품질의 양을 결정 또는 추정하도록 동작할 수 있다. 그와 같은 예의 실시예들에서, 그래픽 품질 메트릭(236)이 그래픽 품질 임계치(238)보다 더 큰 범위는 일반적으로 동적 생성 그래픽 자원(218)에 관하여 허용 가능하게 희생될 수 있는 품질의 양을 나타낼 수 있다. 실시예들은 이 예로 제한되지 않는다.
일부 실시예들에서, 임의의 특정한 압축 절차를 소정의 동적 생성 그래픽 자원(218)에 적용하기 위한 후보로서 고려하기 위해, 압축 결정 로직은 상기 후보 압축 절차를 상기 동적 생성 그래픽 자원(218)에 적용하는 것과 연관되는 품질 저감(quality reduction)의 정도를 결정하도록 동작할 수 있다. 다양한 실시예들에서, 이 품질 저감의 정도는 일반적으로 동적 생성 그래픽 자원(218)의 원래의 압축되지 않은 버전 및 후보 압축 절차와 연관되는 압축 알고리즘에 따라 원래의 버전을 압축 및 압축 해제함으로써 획득되는 동적 생성 그래픽 자원(218)의 버전의 품질 레벨 사이의 차를 포함할 수 있다. 일부 실시예들에서, 압축 결정 로직은 동적 생성 그래픽 자원(218)의 압축 및 압축 해제 버전에 대한 그래픽 품질 메트릭(236)을 결정함으로써 이 품질 저감의 정도를 결정하도록 동작할 수 있다. 다양한 그와 같은 실시예들에서, 압축 결정 로직은 동적 생성 그래픽 자원(218)의 압축 및 압축 해제 버전에 대한 그래픽 품질 메트릭(236)을 원래의 압축되지 않은 버전에 대한 그래픽 품질 메트릭(236)과 비교함으로써 품질 저감의 정도를 결정하도록 동작할 수 있다. 일부 실시예들에서, 무손실 압축 알고리즘의 적용을 포함하는 후보 압축 절차에 관하여, 압축 결정 로직은 상기 후보 절차에 대응하는 그래픽 품질 메트릭(236)을 결정하지 않고 후보 절차와 연관되는 그래픽 품질 저감 레벨이 존재하지 않음을 결정하도록 동작할 수 있음은 주목할 가치가 있다. 실시예들은 이 상황으로 제한되지 않는다.
다양한 실시예들에서, 압축 결정 로직은 복수의 후보 압축 절차들 중에서, 소정의 동적 생성 그래픽 자원(218)에 대한 허용 가능한 정도를 초과하는 상기 동적 생성 그래픽 자원(218)에 대한 품질 저감의 정도가 발생하지 않을 최대 압축의 후보 절차를 식별하도록 동작할 수 있다. 일부 실시예들에서, 압축 결정 로직은 연관되는 그래픽 품질 메트릭(236)이 그래픽 품질 임계치(238)보다 더 큰 최대 압축의 후보 절차를 동적 생성 그래픽 자원(218)에 관하여 식별함으로써 이 결정을 수행하도록 동작할 수 있다. 다양한 실시예들에서, 복수의 후보 압축 절차들은 손실 압축 절차들을 배타적으로 포함할 수 있고 압축 결정 로직은 동적 생성 그래픽 자원(218)에 대한 그래픽 품질 임계치(238)에 기초하여 상기 복수의 손실 압축 절차들 중에서 손실 압축 절차를 선택하도록 동작할 수 있다. 일부 다른 실시예들에서, 복수의 후보 압축 절차들은 하나 이상의 무손실 압축 절차들뿐만 아니라 하나 이상의 손실 압축 절차들을 포함할 수 있고 압축 결정 로직은 동적 생성 그래픽 자원(218)에 대한 그래픽 품질 임계치(238)에 따라, 손실 압축 절차 또는 무손실 압축 절차를 선택하도록 동작할 수 있다. 예의 실시예에서, 압축 결정 로직은 그래픽 품질 임계치(238)를 넘지 않고 적용될 수 있는 손실 압축 절차가 이용 가능하면 이 절차를 선택하도록 동작할 수 있고 그렇지 않으면 무손실 압축 절차를 선택하도록 동작할 수 있다. 또 다른 실시예들에서, 복수의 후보 압축 절차들은 무손실 압축 절차들을 배타적으로 포함할 수 있고, 압축 결정 로직은 이 복수의 무손실 압축 절차들 중에서 무손실 압축 절차를 선택하도록 동작할 수 있다. 다양한 그와 같은 실시예들에서, 압축 결정 로직은 연관되는 그래픽 처리량 소비가 임계치보다 더 작은 최대 압축의 무손실 압축 절차를 선택하도록 동작할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
일부 실시예들에서, 일단 압축 결정 로직이 특정한 동적 생성 그래픽 자원(218)이 압축되어야 한다고 결정했고 압축 절차를 선택했으면, 압축 구성요소(222)는 선택된 압축 절차를 사용하여 상기 동적 생성 그래픽 자원(218)을 압축하도록 동작할 수 있다. 압축 이후에, 압축 구성요소(222)는 예를 들어, 메모리 유닛(204)에서와 같은 메모리 내에 압축된 동적 생성 그래픽 자원(218)을 저장하도록 동작할 수 있다. 다양한 실시예들에서, 하나의 패스 동안 압축되고 저장되는 동적 생성 그래픽 자원(218)은 후속 패스로의 입력을 포함할 수 있다. 일부 실시예들에서, 압축 해제 구성요소(224)는 상기 동적 생성 그래픽 자원(218)을 압축하는 데 사용되는 압축 절차에 대응하는 압축 해제 절차에 따라 저장된 동적 생성 그래픽 자원(218)을 압축 해제하도록 동작할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
다양한 실시예들에서, 소정의 동적 생성 그래픽 자원(218)에 대해 압축 결정들을 수행하는 데 포함될 수 있는 상술한 동작들 중 일부 또는 모두는 반드시 상기 동적 생성 그래픽 자원(218)의 생성 시에 수행될 수 있는 것이 아님이 주목할 가치가 있다. 일부 실시예들에서, 압축 결정 로직은 동적 생성 그래픽 자원(218)의 생성 전에 하나 이상의 그와 같은 동작들을 수행하도록 동작할 수 있다. 예를 들어, 다양한 실시예들에서, 압축 결정 로직은 동적 생성 그래픽 자원(218)이 그래픽 처리 회로(206)에 의해 생성되기 전에 그래픽 품질 임계치(238) 및 동적 생성 그래픽 자원(218)에 대한 하나 이상의 자원 사용 특성들(228)을 식별하고 상기 동적 생성 그래픽 자원(218)을 압축할지 여부를 결정하기 위해 이것들을 사용하도록 동작할 수 있다. 실시예들은 이 예로 제한되지 않는다.
일부 실시예들에서, 압축 결정 로직이 소정의 동적 생성 그래픽 자원(218)에 대한 다수의 압축 결정들을 수행하도록 동작할 수 있음이 또한 주목할 가치가 있다. 예의 실시예에서, 소정의 동적 생성 그래픽 자원(218)의 생성 전에 또는 생성 시에, 압축 결정 로직은 동적 생성 그래픽 자원(218)이 메모리 버스(220)를 얼마나 자주 횡단할지에 대한 초기 추정에 기초하여 초기 저장을 위한 동적 생성 그래픽 자원(218)을 압축하지 않을 것임을 결정하도록 동작할 수 있다. 후속해서, 압축 결정 로직은 동적 생성 그래픽 자원(218)이 메모리 버스(220)에 관하여 나타내는 부담에 대한 더 정확한 결정 또는 추정을 가능하게 하는 축적된 자원 사용 이력(230)에 기초하여 동적 생성 그래픽 자원(218)을 압축할지를 재고려하도록 동작할 수 있다. 동적 생성 그래픽 자원(218)이 앞으로 상당한 메모리 대역폭 소비자를 이루는 것으로 예상될 수 있음을 자원 사용 이력(230)이 나타내면, 압축 결정 로직은 동적 생성 그래픽 자원(218)이 압축되어야 한다고 결정할 수 있다. 실시예들은 이 예로 제한되지 않는다.
다양한 실시예들에서, 압축 결정 로직은 하나 이상의 미리 생성된 그래픽 자원들(216)을 압축을 위한 후보들로서 평가하기 위해 상술한 기술들 중 일부 또는 모두를 사용하도록 동작할 수 있음이 더 주목할 가치가 있다. 일부 실시예들에서, 예를 들어, 하나 이상의 미리 생성된 그래픽 자원들(216)은 그래픽 애플리케이션(209)의 생성 시에 이용 가능한 압축 포맷들을 사용하여 압축에 양호한 후보들이 아니었지만 그 시간 이래로 이용 가능하게 된 새로운 압축 포맷들을 사용하여 압축에 양호한 후보들일 수 있는 자원들을 포함할 수 있다. 다양한 실시예들에서, 압축 결정 로직은 피드백 루프를 사용하여 하나 이상의 그와 같은 미리 생성된 그래픽 자원들(216)을 압축에 대한 후보들로서 평가하도록 동작할 수 있고, 여기서 이 피드백 루프에 따라서 소정의 미리 생성된 그래픽 자원(216)의 하나 이상의 압축된 버전들에 대한 품질 메트릭들이 결정되고 상기 미리 생성된 그래픽 자원(216)에 대한 품질 기준과 비교될 수 있다. 일부 실시예들에서, 압축 결정 로직은 품질 메트릭들 및 품질 기준의 비교들에 기초하여 미리 생성된 그래픽 자원(216)을 압축할지 여부를 결정하도록 동작할 수 있다. 예를 들어, 다양한 실시예들에서, 압축 결정 로직은 미리 생성된 그래픽 자원(216)의 적어도 하나의 압축된 버전과 연관되는 품질 메트릭(들)이 미리 생성된 그래픽 자원(216)에 대한 품질 기준을 만족시키는 경우 미리 생성된 그래픽 자원(216)을 압축할 것을 결정하도록 동작할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
상기 실시예들에 대한 동작들은 다음의 도면들 및 첨부 예들을 참조하여 더 설명될 것이다. 도면들 중 일부는 로직 흐름을 포함할 수 있다. 본원에서 제시되는 그와 같은 도면들은 특정한 로직 흐름을 포함할지라도, 그 로직 흐름은 단지 본원에서 설명되는 바에 따른 일반적인 기능이 어떻게 구현될 수 있는지에 대한 하나의 예를 제공하는 것이 인정될 수 있다. 더욱이, 소정의 로직 흐름은 달리 나타내지 않으면 반드시 제시된 순서로 실행될 필요는 없다. 게다가, 소정의 로직 흐름은 하드웨어 요소, 프로세서에 의해 실행되는 소프트웨어 요소, 또는 이들의 임의의 결합에 의해 구현될 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
도 3은 본원에서 설명되는 하나 이상의 실시예들에 의해 실행되는 동작들을 표현할 수 있는 로직 흐름(300)의 하나의 실시예를 도시한다. 예를 들어, 로직 흐름(300)은 다양한 실시예들에서 도 2의 장치(200) 및/또는 시스템(240)의 하나 이상의 구성요소들에 의해 실행될 수 있는 동작들을 표현할 수 있다. 로직 흐름(300)에 도시되는 바와 같이, 동적 생성 그래픽 자원은 302에서 식별될 수 있다. 예를 들어, 도 2의 압축 결정 로직의 하나 이상의 구성요소들은 동적 생성 그래픽 자원(218)을 식별하도록 동작할 수 있다. 일부 실시예들에서, 동적 생성 그래픽 자원의 생성이 시작 및/또는 완료되기 전에 동적 생성 그래픽 자원의 식별이 발생할 수 있음은 주목할 가치가 있다. 304에서, 동적 생성 그래픽 자원의 하나 이상의 사용 특성들이 결정될 수 있다. 예를 들어, 도 2의 압축 결정 로직의 하나 이상의 구성요소들은 식별된 동적 생성 그래픽 자원(218)의 하나 이상의 자원 사용 특성들(228)을 결정하도록 동작할 수 있다. 306에서, 하나 이상의 사용 특성들에 기초하여, 동적 생성 그래픽 자원을 압축할지가 결정될 수 있다. 예를 들어, 도 2의 압축 결정 로직의 하나 이상의 구성요소들은 식별된 동적 생성 그래픽 자원(218)의 하나 이상의 결정된 자원 사용 특성들(228)에 기초하여 이 식별된 동적 생성 그래픽 자원(218)을 압축할지 여부를 결정하도록 동작할 수 있다. 실시예들은 이 예들로 제한되지 않는다.
도 4는 본원에서 기술되는 하나 이상의 실시예들에 의해 실행되는 동작들을 표현할 수 있는 로직 흐름(400)의 하나의 실시예를 도시한다. 예를 들어, 로직 흐름(400)은 다양한 실시예들에서 도 3의 로직 흐름(300)에서의 블록(306)에서 수행되는 결정과 함께 도 2의 장치(200) 및/또는 시스템(240)의 하나 이상의 구성요소들에 의해 수행될 수 있는 동작들을 나타낼 수 있다. 로직 흐름(400)에 도시되는 바와 같이, 대역폭 소비 메트릭은 402에서 동적 생성 그래픽 자원의 하나 이상의 사용 특성들에 기초하여 결정될 수 있다. 예를 들어, 도 2의 압축 결정 로직의 하나 이상의 구성요소들은 동적 생성 그래픽 자원(218)의 하나 이상의 자원 사용 특성들(228)에 기초하여 상기 동적 생성 그래픽 자원(218)에 대한 대역폭 소비 메트릭(232)을 결정하도록 동작할 수 있다. 404에서, 대역폭 소비 임계치가 결정될 수 있다. 예를 들어, 도 2의 압축 결정 로직의 하나 이상의 구성요소들은 대역폭 소비 메트릭(232)이 결정되었던 동적 생성 그래픽 자원(218)에 대한 대역폭 소비 임계치(234)를 결정하도록 동작할 수 있다. 406에서, 대역폭 소비 메트릭과 대역폭 소비 임계치의 비교에 기초하여, 동적 생성 그래픽 자원을 압축할지가 결정될 수 있다. 예를 들어, 도 2의 압축 결정 로직의 하나 이상의 구성요소들은 동적 생성 그래픽 자원(218)에 대한 대역폭 소비 메트릭(232)을 대역폭 소비 임계치(234)와 비교함으로써 상기 동적 생성 그래픽 자원(218)을 압축할지 여부를 결정하도록 동작할 수 있다. 다양한 실시예들에서, 대역폭 소비 메트릭이 대역폭 소비 임계치를 초과하는 경우 동적 생성 그래픽 자원이 압축될 것임이 결정될 수 있고, 대역폭 소비 메트릭이 대역폭 압축 임계치보다 더 작을 경우 동적 생성 그래픽 자원이 압축되지 않을 것임이 결정될 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
도 5는 본원에서 설명되는 하나 이상의 실시예들에 의해 실행되는 동작들을 나타낼 수 있는 로직 흐름(500)의 하나의 실시예를 도시한다. 예를 들어, 로직 흐름(500)은 다양한 실시예들에서 동적 생성 그래픽 자원이 압축되어야 한다는 도 3의 로직 흐름(300) 내의 306에서의 결정에 응답하여 도 2의 장치(200) 및/또는 시스템(240)의 하나 이상의 구성요소들에 의해 수행될 수 있는 동작들을 나타낼 수 있다. 로직 흐름(500)에서 도시되는 바와 같이, 동적 생성 그래픽 자원에 대한 그래픽 품질 임계치는 502에서 결정될 수 있다. 예를 들어, 도 2의 압축 결정 로직의 하나 이상의 구성요소들은 동적 생성 그래픽 자원(218)에 대한 그래픽 품질 임계치(238)를 결정하도록 동작할 수 있다. 504에서, 압축 절차는 그래픽 품질 임계치에 기초하여 선택될 수 있다. 예를 들어, 도 2의 압축 결정 로직의 하나 이상의 구성요소들은 동적 생성 그래픽 자원(218)에 대한 그래픽 품질 임계치(238)에 기초하여 동적 생성 그래픽 자원(218)에 대한 압축 절차를 선택하도록 동작할 수 있다. 506에서, 동적 생성 그래픽 자원은 선택된 압축 절차에 따라 압축될 수 있다. 예를 들어, 도 2의 압축 구성요소(222)는 동적 생성 그래픽 자원(218)에 대한 그래픽 품질 임계치(238)에 기초하여 선택되는 압축 절차에 따라 상기 동적 생성 그래픽 자원(218)을 압축하도록 동작할 수 있다. 실시예들은 이 예들로 제한되지 않는다.
도 6은 본원에서 언급된 하나 이상의 실시예들에 의해 실행되는 동작들을 나타낼 수 있는 로직 흐름(600)의 하나의 실시예를 도시한다. 예를 들어, 로직 흐름(600)은 다양한 실시예들에서 도 5의 로직 흐름(500) 내의 블록(504)에서 수행되는 선택과 함께 도 2의 장치(200) 및/또는 시스템(240)의 하나 이상의 구성요소들에 의해 수행될 수 있는 동작들을 나타낼 수 있다. 로직 흐름(600)에서 도시되는 바와 같이, 복수의 손실 압축 절차들은 602에서 동적 생성 그래픽 자원의 압축을 위한 후보 절차들의 세트로서 식별될 수 있다. 예를 들어, 도 2의 압축 결정 로직의 하나 이상의 구성요소들은 복수의 손실 압축 절차들을 동적 생성 그래픽 자원(218)의 압축을 위한 후보 절차들의 세트로서 식별하도록 동작할 수 있다. 604에서, 후보 절차들의 세트 중에서, 대응하는 그래픽 품질 메트릭들이 동적 생성 그래픽 자원에 대한 그래픽 품질 임계치보다 더 작지 않은 하나 이상의 손실 압축 절차들이 식별될 수 있다. 예를 들어, 도 2의 압축 결정 로직의 하나 이상의 구성요소들은 동적 생성 그래픽 자원(218)의 압축을 위한 후보 절차들의 세트들 중에서, 각각의 대응하는 그래픽 품질 메트릭들(236)이 동적 생성 그래픽 자원(218)에 대한 그래픽 품질 임계치(238)보다 더 작지 않은 하나 이상의 손실 압축 절차들을 식별하도록 동작할 수 있다. 606에서, 식별된 손실 압축 절차 중에서 최대 압축의 손실 압축 절차가 선택될 수 있다. 예를 들어, 도 2의 압축 결정 로직의 하나 이상의 구성요소들은 604에서 식별된 하나 이상의 손실 압축 절차들 중에서 최대 압축의 손실 압축 절차를 선택하도록 동작할 수 있다. 실시예들은 이 예들로 제한되지 않는다.
도 7은 저장 매체(700)에 대한 하나의 실시예를 도시한다. 저장 매체(700)는 광, 자기 또는 반도체 저장 매체와 같이, 임의의 비일시적 컴퓨터 판독 가능 저장 매체 또는 기계 판독 가능 저장 매체를 포함할 수 있다. 다양한 실시예들에서, 저장 매체(700)는 제조 물품을 포함할 수 있다. 일부 실시예들에서, 저장 매체(700)는 도 3의 로직 흐름(300), 도 4의 로직 흐름(400), 도 5의 로직 흐름(500) 및 도 6의 로직 흐름(600) 중 하나 이상을 구현하기 위한 컴퓨터 실행 가능 명령들과 같은 컴퓨터 실행 가능 명령들을 저장할 수 있다. 컴퓨터 판독 가능 저장 매체 또는 기계 판독 가능 저장 매체의 예들은 전자 데이터를 저장할 수 있고 휘발성 메모리 또는 비휘발성 메모리, 제거 가능 또는 제거 불가능 메모리, 소거 가능 또는 소거 불가능 메모리, 기록 가능 또는 재기록 가능 메모리 등을 포함하는 임의의 유형적인 매체를 포함할 수 있다. 컴퓨터 실행 가능 명령들의 예들은 소스 코드, 컴파일링형 코드(compiled code), 해석형 코드(interpreted code), 실행 코드, 정적 코드, 동적 코드, 객체 지향 코드, 비주얼 코드 등과 같은 임의의 적절한 유형의 코드를 포함할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
도 8은 시스템(800)의 하나의 실시예를 도시한다. 다양한 실시예들에서, 시스템(800)은 도 2의 장치(200) 및/또는 시스템(240), 도 3의 로직 흐름(300), 도 4의 로직 흐름(400), 도 5의 로직 흐름(500), 도 6의 로직 흐름(600) 및/또는 도 7의 저장 매체(700)와 같이, 본원에서 설명된 하나 이상의 실시예들과 함께 사용하는 데 적합한 시스템 또는 아키텍처를 나타낼 수 있다. 실시예들은 이러한 것으로 제한되지 않는다.
도 8에 도시되는 바와 같이, 시스템(800)은 다수의 요소들을 포함할 수 있다. 하나 이상의 요소들은 소정의 설계 또는 성능 제약들의 세트에 대해 바람직한 바에 따라 하나 이상의 회로들, 구성요소들, 레지스터들, 프로세서들, 소프트웨어 서브루틴들, 모듈들 또는 이들의 임의의 결합을 사용하여 구현될 수 있다. 도 8이 예로서 특정한 토폴로지(topology) 내에 제한된 수의 요소들을 도시할지라도, 소정의 구현에 대해 바람직한 바에 따라 시스템(800)에서는 임의의 적절한 토폴로지 내에 더 많거나 더 적은 요소들이 사용될 수 있음이 인정될 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
다양한 실시예들에서, 시스템(800)은 프로세서 회로(802)를 포함할 수 있다. 프로세서 회로(802)는 임의의 프로세서 또는 로직 디바이스를 사용하여 구현될 수 있고, 도 2의 프로세서 회로와 동일 또는 유사할 수 있다.
하나의 실시예에서, 시스템(800)은 프로세서 회로(802)에 결합되는 메모리 유닛(804)을 포함할 수 있다. 메모리 유닛(804)은 소정의 구현에 대해 바람직한 바에 따라 통신 버스(843)를 통해 또는 프로세서 회로(802) 및 메모리 유닛(804) 사이의 전용 통신 버스들에 의해 프로세서 회로(802)에 결합될 수 있다. 메모리 유닛(804)은 휘발성 및 비휘발성 메모리 모두를 포함하여, 데이터를 저장할 수 있는 임의의 기계 판독 가능 또는 컴퓨터 판독 가능 매체를 사용하여 구현될 수 있고, 도 2의 메모리 유닛(204)과 동일하거나 유사할 수 있다. 일부 실시예들에서, 기계 판독 가능 또는 컴퓨터 판독 가능 매체는 비일시적 매체를 포함할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
다양한 실시예들에서, 시스템(800)은 RF 송수신기(844)를 포함할 수 있다. RF 송수신기(844)는 다양한 적절한 무선 통신 기술들을 사용하여 신호들을 송신 및 수신할 수 있는 하나 이상의 무선장치들을 포함할 수 있고, 도 2의 RF 송수신기(242)와 동일하거나 유사할 수 있다.
다양한 실시예들에서, 시스템(800)은 디스플레이(845)를 포함할 수 있다. 디스플레이(845)는 프로세서 회로(802)로부터 수신되는 정보를 디스플레이할 수 있는 임의의 디스플레이 디바이스를 포함할 수 있고, 도 2의 디스플레이(246)와 동일하거나 유사할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
다양한 실시예들에서, 시스템(800)은 저장소(846)를 포함할 수 있다. 저장소(846)는 자기 디스크 드라이브, 광 디스크 드라이브, 테이프 드라이브, 내부 저장 디바이스, 부착식 저장 디바이스, 플래시 메모리, 배터리 백업 동기 DRAM(synchronous DRAM; SDRAM) 및/또는 네트워크 액세스 가능 저장 디바이스와 같은 비휘발성 저장 매체로서 구현될 수 있으나 이로 제한되지 않는다. 실시예들에서, 저장소(846)는 예를 들어, 다수의 하드 드라이브들이 포함될 때 귀중한 디지털 매체에 대한 저장 성능 향상 보호를 증가시키는 기술을 포함할 수 있다. 저장소(846)의 부가적인 예들은 하드 디스크, 플로피 디스크, 컴팩트 디스크 판독 전용 메모리(Compact Disk Read Only Memory; CD-ROM), 기록 가능 컴팩트 디스크(Compact Disk Recordable; CD-R) 재기록 가능 컴팩트 디스크(Compact Disk Rewriteable; CD-RW), 광 디스크, 자기 매체, 자기-광 매체, 제거 가능 메모리 카드들 또는 디스크들, 다양한 유형들의 DVD 디바이스들, 테이프 디바이스, 카세트 디바이스 등을 포함할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
다양한 실시예들에서, 시스템(800)은 하나 이상의 I/O 어댑터들(847)을 포함할 수 있다. I/O 어댑터들(847)의 예들은 범용 직렬 버스(Universal Serial Bus; USB) 포트들/어댑터들, IEEE 1394 파이어와이어(Firewire) 포트들/어댑터들 등을 포함할 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
도 9는 시스템(900)의 하나의 실시예를 도시한다. 다양한 실시예들에서, 시스템(900)은 도 2의 장치(200) 및/또는 시스템(240), 도 3의 로직 흐름(300), 도 4의 로직 흐름(400), 도 5의 로직 흐름(500), 도 6의 로직 흐름(600), 도 7의 저장 매체(700) 및/또는 도 8의 시스템(800)과 같이 본원에서 기술된 하나 이상의 실시예들과 함께 사용하기 적합한 시스템 또는 아키텍처를 나타낼 수 있다. 실시예들은 이러한 것으로 제한되지 않는다.
도 9에 도시되는 바와 같이, 시스템(900)은 다수의 요소들을 포함할 수 있다. 하나 이상의 요소들은 소정의 세트의 설계 또는 성능 제약들에 대해 바람직한 바에 따라 하나 이상의 회로들, 구성요소들, 레지스터들, 프로세서들, 소프트웨어 서브루틴들, 모듈들 또는 이들의 임의의 결합을 사용하여 구현될 수 있다. 도 9가 예로서 특정한 토폴로지(topology)에서 제한된 수의 요소들을 도시할지라도, 임의의 적절한 토폴로지에서는 소정의 구현에 대해 바람직한 바에 따라 시스템(900) 내에 더 많거나 더 적은 요소들이 사용될 수 있음이 인정될 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
실시예들에서, 시스템(900)은 미디어 시스템일 수 있으나 시스템(900)은 이 상황으로 제한되지 않는다. 예를 들어, 시스템(900)은 개인용 컴퓨터(PC), 랩탑 컴퓨터, 울트라 랩탑 컴퓨터, 태블릿, 터치 패드, 휴대용 컴퓨터, 소형 컴퓨터, 팜탑 컴퓨터, 개인용 디지털 보조장치(personal digital assistant; PDA), 셀룰러 전화기, 셀룰러 전화기/PDA의 결합, 텔레비전, 스마트 디바이스(예를 들어, 스마트폰, 스마트 태블릿 또는 스마트 텔레비전), 모바일 인터넷 디바이스(mobile internet device; MID), 메시징 디바이스, 데이터 통신 디바이스 등 내에 통합될 수 있다.
실시예들에서, 시스템(900)은 디스플레이(945)에 결합되는 플랫폼(901)을 포함한다. 플랫폼(901)은 컨텐츠 서비스 디바이스(들)(948) 또는 컨텐츠 전달 디바이스(들)(949)와 같은 컨텐츠 디바이스 또는 다른 유사한 컨텐츠 소스들로부터 컨텐츠를 수신할 수 있다. 하나 이상의 내비게이션 피처(feature)들을 포함하는 내비게이션 제어기(950)는 예를 들어 플랫폼(901) 및/또는 디스플레이(945)와 상호 작용하는 데 사용될 수 있다. 이 구성요소들 각각은 아래에서 더 상세하게 기술된다.
실시예들에서, 플랫폼(901)은 프로세서 회로(902), 칩셋(903), 메모리 유닛(904), 송수신기(944), 저장소(946), 애플리케이션들(951) 및/또는 그래픽 서브시스템(952)의 임의의 결합을 포함할 수 있다. 칩셋(903)은 프로세서 회로(902), 메모리 유닛(904), 송수신기(944), 저장소(946), 애플리케이션들(951) 및/또는 그래픽 서브시스템(952) 사이의 상호 통신을 제공할 수 있다. 예를 들어, 칩셋(903)은 저장소(946)와의 상호 통신을 제공할 수 있는 저장소 어댑터(도시되지 않음)를 포함할 수 있다.
프로세서 회로(902)는 임의의 프로세서 또는 로직 디바이스를 사용하여 구현될 수 있고, 도 8에서의 프로세서 회로(802)와 동일 또는 유사할 수 있다.
메모리 유닛(904)은 데이터를 저장할 수 있는 임의의 기계 판독 가능 또는 컴퓨터 판독 가능 매체를 사용하여 구현될 수 있고, 도 8에서의 메모리 유닛(804)와 동일 또는 유사할 수 있다.
송수신기(944)는 다양한 적합한 무선 통신 기술들을 사용하여 신호들을 송신 및 수신할 수 있는 하나 이상의 무선장치들을 포함할 수 있고, 도 8에서의 송수신기(844)와 동일 또는 유사할 수 있다.
디스플레이(945)는 임의의 텔레비전 유형의 모니터 또는 디스플레이를 포함할 수 있고, 도 8에서의 디스플레이(845)와 동일 또는 유사할 수 있다.
저장소(946)는 비휘발성 저장 디바이스로서 구현될 수 있고, 도 8에서의 저장소(846)와 동일 또는 유사할 수 있다.
그래픽 서브시스템(952)은 디스플레이를 위해 정지사진 또는 비디오와 같은 이미지들의 처리를 수행할 수 있다. 그래픽 서브시스템(952)은 예를 들어, 그래픽 처리 장치(PPU) 또는 시각 처리 장치(visual processing unit; VPU)일 수 있다. 아날로그 또는 디지털 인터페이스는 그래픽 서브시스템(952) 및 디스플레이(945)를 통신적으로 결합하는 데 사용될 수 있다. 예를 들어, 인터페이스는 고선명 멀티미디어 인터페이스(High-Definition Multimedia Interface), 디스플레이포트(DisplayPort), 무선 HDMI 및/또는 무선 HD 부합 기술들 중 임의의 하나일 수 있다. 그래픽 서브시스템(952)은 프로세서 회로(902) 또는 칩셋(903) 내에 통합될 수 있다. 그래픽 서브시스템(952)은 칩셋(903)에 통신적으로 결합되는 단독식 카드일 수 있다.
본원에서 설명되는 그래픽 및/또는 비디오 처리 기술들은 다양한 하드웨어 아키텍처들에서 구현될 수 있다. 예를 들어, 그래픽 및/또는 비디오 기능은 칩셋 내에 통합될 수 있다. 대안으로, 별개의 그래픽 및/또는 비디오 프로세서가 사용될 수 있다. 또 다른 실시예로서, 그래픽 및/또는 비디오 기능들은 다코어 프로세서를 포함하는 범용 프로세서에 의해 구현될 수 있다. 부가 실시예에서, 기능들은 소비자 일렉트로닉스 디바이스에서 구현될 수 있다.
실시예들에서, 컨텐츠 서비스 디바이스(들)(948)는 임의의 국가, 국제 및/또는 독립 서비스에 의해 호스팅(hosting)되고 따라서 예를 들어, 인터넷을 통해 플랫폼(901)에 액세스될 수 있다. 컨텐츠 서비스 디바이스(들)(948)는 플랫폼(901) 및/또는 디스플레이(945)에 결합될 수 있다. 플랫폼(901) 및/또는 컨텐츠 서비스 디바이스(들)(948)는 미디어 정보를 네트워크(953)으로 그리고 네트워크(953)로부터 통신(예를 들어, 송신 및/또는 수신)하기 위해 네트워크(953)에 결합될 수 있다. 컨텐츠 전달 디바이스(들)(949)는 또한 플랫폼(901) 및/또는 디스플레이(945)에 결합될 수 있다.
실시예들에서, 컨텐츠 서비스 디바이스(들)(948)는 케이블 텔레비전 박스, 개인용 컴퓨터, 네트워크 전화, 디지털 정보 및/또는 컨텐츠를 전달할 수 있는 인터넷 가능 디바이스들 또는 어플라이언스, 그리고 컨텐츠를 컨텐츠 제공자들 및 플랫폼(901) 및 디스플레이(945) 사이에서 네트워크(953)를 통해 또는 직접적으로 단방향으로 또는 양방향으로 통신할 수 있는 임의의 다른 유사한 디바이스를 포함할 수 있다. 컨텐츠는 네트워크(953)를 통해 시스템(900) 내의 구성요소들 및 컨텐츠 제공자 중 임의 하나로 그리고 임의의 하나로부터 단방향으로 그리고/또는 양방향으로 통신될 수 있음이 인정될 것이다. 컨텐츠의 예들은 예를 들어, 비디오, 음악, 의료 및 게임 정보 등을 포함하는 임의의 미디어 정보를 포함할 수 있다.
컨텐츠 서비스 디바이스(들)(948)는 케이블 텔레비전 프로그래밍과 같이 미디어 정보, 디지털 정보 및/또는 다른 컨텐츠를 포함하는 컨텐츠를 수신한다. 컨텐츠 제공자들의 예들은 임의의 케이블 또는 위성 텔레비전 또는 무선 또는 인터넷 컨텐츠 제공자들을 포함할 수 있다. 제공되는 예들은 개시된 특허대상의 실시예들을 제한하도록 의도되지 않는다.
실시예들에서, 플랫폼(901)은 하나 이상의 내비게이션 피처들을 가지는 내비게이션 제어기(950)로부터 제어 신호들을 수신할 수 있다. 내비게이션 제어기(950)의 내비게이션 피처들은 예를 들어, 사용자 인터페이스(954)와 상호 작용하는 데 사용될 수 있다. 실시예들에서, 내비게이션 제어기(950)는 사용자가 공간(예를 들어, 연속 및 다차원) 데이터를 컴퓨터 내에 입력하는 것을 가능하게 하는 컴퓨터 하드웨어 구성요소(특히, 휴먼 인터페이스 디바이스(human interface device))일 수 있는 포인팅 디바이스(pointing device)일 수 있다. 그래픽 사용자 인터페이스(graphical user interface; GUI)들 및 텔레비전들 및 모니터들과 같은 많은 시스템들에서는 사용자가 물리적 제스처들을 사용하여 데이터를 제어하고 데이터를 컴퓨터 또는 텔레비전에 제공하는 것이 가능하다.
내비게이션 제어기(950)의 내비게이션 피처들의 이동들은 포인터, 커서, 포커스 링(focus ring) 또는 디스플레이 상에 디스플레이되는 다른 시각적 표시자들의 이동들에 의해 디스플레이(예를 들어, 디스플레이(945)) 상에 반영(echo)될 수 있다. 예를 들어, 소프트웨어 애플리케이션들(951)의 제어 하에, 내비게이션 제어기(950) 상에 위치되는 내비게이션 피처들은 사용자 인터페이스(954) 상에서 디스플레이되는 가상 내비게이션 피처들로 매핑(mapping)될 수 있다. 실시예들에서, 내비게이션 제어기(950)는 별개의 구성요소가 아닐 수 있으나 플랫폼(901) 및/또는 디스플레이(945) 내에 통합될 수 있다. 그러나, 실시예들은 이 요소들로 또는 본원에서 도시되거나 언급되는 상황으로 제한되지 않는다.
실시예들에서, 드라이버들(도시되지 않음)은 예를 들어, 텔레비전과 같이 초기 부팅 후에 사용 가능할 때 사용자들이 버튼의 터치로 플랫폼(901)을 바로 켜고 끄는 것이 가능한 기술을 포함할 수 있다. 프로그램 로직에 의해 플랫폼(901)은 플랫폼이 꺼져 있을 때 컨텐츠를 미디어 어댑터들 또는 다른 컨텐츠 서비스 디바이스(들)(948) 또는 컨텐츠 전달 디바이스(들)(949)로 스트리밍(streaming)하는 것이 가능할 수 있다. 게다가, 칩셋(903)은 예를 들어, 5.1 서라운드 사운드 오디오 및/또는 고선명도 7.1 서라운드 사운드 오디오에 대한 하드웨어 및/또는 소프트웨어 지원을 포함할 수 있다. 드라이버들은 통합 그래픽 플랫폼들을 위한 그래픽 드라이버를 포함할 수 있다. 실시예들에서, 그래픽 드라이버는 주변 구성요소 상호 접속(peripheral component interconnect; PCI) 익스프레스 그래픽 카드를 포함할 수 있다.
다양한 실시예들에서, 시스템(900)에 도시되는 구성요소들 중 임의의 하나 이상이 통합될 수 있다. 예를 들어, 플랫폼(901) 및 컨텐츠 서비스 디바이스(들)(948)이 통합될 수 있거나, 플랫폼(901) 및 컨텐츠 전달 디바이스(들)(949)가 통합될 수 있거나, 플랫폼(910), 컨텐츠 서비스 디바이스(들)(948) 및 컨텐츠 전달 디바이스(들)(949)가 예를 들어 통합될 수 있다. 다양한 실시예들에서, 플랫폼(901) 및 디스플레이(945)는 통합 유닛일 수 잇다. 예를 들어, 디스플레이(945) 및 컨텐츠 서비스 디바이스(들)(948)는 통합될 수 있거나, 또는 디스플레이(945) 및 컨텐츠 전달 디바이스(들)(949)는 통합될 수 있다. 이 예들은 개시된 특허 대상을 제한하도록 의도되지 않는다.
다양한 실시예들에서, 시스템(900)은 무선 시스템, 유선 시스템 또는 이 둘의 결합으로 구현될 수 있다. 무선 시스템으로 구현될 때, 시스템(900)은 하나 이상의 안테나들, 송신기들, 수신기들, 송수신기들, 증폭기들, 필터들, 제어 로직 등과 같이, 무선 공유 매체를 통해 통신하는 데 적합한 구성요소들 및 인터페이스들을 포함할 수 있다. 무선 공유 매체의 하나의 예는 RF 스펙트럼 등과 같은 무선 스펙트럼의 일부분들을 포함할 수 있다. 유선 시스템으로 구현될 때, 시스템(900)은 I/O 어댑터를 대응하는 유선 통신 매체, 네트워크 인터페이스 카드(network interface card; NIC), 디스크 제어기, 비디오 제어기, 오디오 제어기 등과 접속시키기 위해 I/O 어댑터들, 물리적 커넥터들과 같이 유선 통신 매체를 통해 통신하는 데 적합한 구성요소들 및 인터페이스들을 포함할 수 있다. 무선 통신 매체의 예들은 와이어, 케이블, 금속 리드(lead)들, 인쇄 회로 기판(printed circuit board; PCB), 백플레인(backplane), 스위치 패브릭(switch fabric), 반도체 재료, 연선(twisted-pair wire), 동축 케이블, 광섬유 등을 포함할 수 있다.
플랫폼(901)은 정보를 통신하기 위한 하나 이상의 로직 또는 물리 채널들을 설정할 수 있다. 정보는 미디어 정보 및 제어 정보를 포함할 수 있다. 미디어 정보는 사용자용으로 의도된 컨텐츠를 표현하는 임의의 데이터를 칭할 수 있다. 컨텐츠의 예들은 예를 들어 음성 대화, 화상회의, 스트리밍 비디오, 전자 메일("이메일") 메시지, 음성 메일 메시지, 문자숫자 심볼들, 그래픽들, 이미지, 비디오, 텍스트 등으로부터의 데이터를 포함할 수 있다. 음성 대화로부터의 데이터는 예를 들어, 발성 정보, 무음 기간들, 배경 잡음, 컴포트 노이즈(comfort noise), 톤들 등일 수 있다. 제어 정보는 자동화된 시스템용으로 의도된 지시들, 명령들 또는 제어 단어들을 나타내는 임의의 데이터를 칭할 수 있다. 예를 들어, 제어 정보는 시스템을 통해 미디어 정보를 라우팅(routing)하거나 노드에게 미리 결정된 방식으로 미디어 정보를 프로세싱하라고 지시하는 데 사용될 수 있다. 그러나, 실시예들은 이 요소들로 제한되지 않고 도 9에서 도시되거나 언급된 상황으로 제한되지 않는다.
상술한 바와 같이, 시스템(900)은 가지각색의 물리적인 스타일들 또는 폼 팩터(form factor)들로 구현될 수 있다. 도 10은 시스템(900)이 구현될 수 있는 작은 폼 팩터의 디바이스(1000)의 실시예들을 도시한다. 실시예들에서, 예를 들어, 디바이스(1000)는 무선 능력들을 가지는 모바일 컴퓨팅 디바이스로서 구현될 수 있다. 모바일 컴퓨팅 디바이스는 예를 들어, 프로세싱 시스템 및 하나 이상의 배터리들과 같은 모바일 전력 소스 또는 공급원을 가지는 임의의 디바이스를 칭한다.
상술한 바와 같이, 모바일 컴퓨팅 디바이스의 예들은 개인용 컴퓨터(PC), 랩탑 컴퓨터, 울트라 랩탑 컴퓨터, 태블릿, 터치 패드, 휴대용 컴퓨터, 소형 컴퓨터, 팜탑(palmtop) 컴퓨터, 개인용 디지털 보조장치(personal digital assistant; PDA), 셀룰러 전화기, 셀룰러 전화기/PDA의 결합, 텔레비전, 스마트 디바이스(예를 들어, 스마트폰, 스마트 태블릿 또는 스마트 텔레비전), 모바일 인터넷 디바이스(mobile internet device; MID), 메시징 디바이스, 데이터 통신 디바이스 등을 포함할 수 있다.
모바일 컴퓨팅 디바이스의 예들은 손목 컴퓨터, 손가락 컴퓨터, 반지 컴퓨터, 안경 컴퓨터, 벨트 칩 컴퓨터, 팔목 밴드 컴퓨터, 신발 컴퓨터들, 의류 컴퓨터들 및 다른 착용 가능 컴퓨터들과 같이, 사람이 입도록 구성되는 컴퓨터들을 포함할 수 있다. 실시예들에서, 예를 들어, 모바일 컴퓨팅 디바이스는 컴퓨터 애플리케이션뿐만 아니라 음성 통신들 및/또는 데이터 통신들을 실행할 수 있는 스마트폰으로 구현될 수 있다. 일부 실시예들이 예로서 스마트폰으로 구현되는 모바일 컴퓨팅 디바이스로 기술될 수 있을지라도, 다른 실시예들은 또한 다른 무선 모바일 컴퓨팅 디바이스들을 사용하여 구현될 수 있음이 인정될 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
도 10에 도시되는 바와 같이, 디바이스(1000)는 디스플레이(1045), 내비게이션 제어기(1050), 사용자 인터페이스(1054), 하우징(1055), I/O 디바이스(1056) 및 안테나(1057)를 포함할 수 있다. 디스플레이(1045)는 모바일 컴퓨팅 디바이스에 적합한 정보를 디스플레이하기 위한 임의의 적절한 디스플레이 유닛을 포함할 수 있고, 도 9에서의 디스프레이(945)와 동일하거나 유사할 수 있다. 내비게이션 제어기(1050)은 사용자 인터페이스(1054)와 상호 작용하는 데 사용될 수 있는 하나 이상의 내비게이션 피처들을 포함할 수 있고, 도 9에서의 내비게이션 제어기(950)와 동일하거나 유사할 수 있다. I/O 디바이스(1056)는 모바일 컴퓨팅 디바이스 내에 정보를 입력하기 위한 임의의 적절한 I/O 디바이스를 포함할 수 있다. I/O 디바이스(1056)에 대한 예들은 문자숫자 키보드, 숫자 키패드, 터치 패드, 입력 키들, 버튼들, 스위치들, 락커 스위치(rocker switch)들, 마이크로폰들, 스피커들, 음성 인식 디바이스 및 소프트웨어 등을 포함할 수 있다. 정보는 또한 마이크로폰을 통해 디바이스(1000) 내로 입력될 수 있다. 그와 같은 정보는 음성 인식 디바이스에 의해 디지털화될 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
다양한 실시예들은 하드웨어 요소들, 소프트웨어 요소들 또는 이 둘의 결합을 사용하여 구현될 수 있다. 하드웨어 요소들의 예들은 프로세서들, 마이크로프로세서들, 회로들, 회로 요소들(예를 들어, 트랜지스터들, 저항들, 커패시터들, 인덕터들 등), 집적 회로들, 주문형 반도체(ASIC), 프로그래머블 로직 디바이스(PLD), 디지털 신호 프로세서(DSP), 필드 프로그래머블 게이트 어레이(FPGA), 로직 게이트들, 레지스터들, 반도체 디바이스, 칩들, 마이크로칩들, 칩셋들 등을 포함할 수 있다. 소프트웨어의 예들은 소프트웨어 구성요소들, 프로그램들, 애플리케이션들, 컴퓨터 프로그램들, 애플리케이션 프로그램들, 시스템 프로그램들, 기계 프로그램들, 운영 시스템 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈들, 루틴들, 서브루틴들, 기능들, 방법들, 절차들, 소프트웨어 인터페이스들, 애플리케이션 프로그램 인터페이스(application program interface; API)들, 명령어 세트들, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트(code segment)들, 컴퓨터 코드 세그먼트들, 워드들, 값들, 심볼들 또는 이들의 임의의 결합을 포함할 수 있다. 하나의 실시예가 하드웨어 요소들 및/또는 소프트웨어 요소들을 사용하여 구현되는지를 결정하는 것은 원하는 계산 레이트, 전력 레벨들, 열 내성들, 프로세싱 사이클 버짓(processing cycle budget), 입력 데이터 레이트들, 출력 데이터 레이트들, 메모리 자원들, 데이터 버스 속도들 및 다른 설계 또는 성능 제약들과 같은 임의의 수의 요인들에 따라 바뀔 수 있다.
적어도 하나의 실시예의 하나 이상의 양태들은 프로세서 내의 다양한 로직을 표현하는 기계 판독 가능 매체 상에 저장되고 기계에 의해 판독될 때 이 기계로 하여금 본원에서 언급된 기술들을 수행하는 로직을 만들도록 하는 전형적인 명령들에 의해 구현될 수 있다. "IP 코어"로서 공지되어 있는 그와 같은 전형적인 명령들은 유형적인 기계 판독 가능 매체 상에 저장되고 실제로 로직 또는 프로세서를 만드는 제작 기계들 내로 로딩되는 다양한 고객 또는 제조 설비들로 공급될 수 있다. 일부 실시예들은 예를 들어, 기계에 의해 실행되는 경우, 이 기계로 하여금 실시예들에 따른 방법 및/또는 동작들을 수행하도록 할 수 있는 명령 또는 명령들의 세트를 저장할 수 있는 기계 판독 가능 매체 또는 물품을 사용하여 구현될 수 있다. 그와 같은 기계는 예를 들어, 임의의 적절한 프로세싱 플랫폼, 컴퓨팅 플랫폼, 컴퓨팅 디바이스, 프로세싱 디바이스, 컴퓨팅 시스템, 프로세싱 시스템, 컴퓨터, 프로세서 등을 포함할 수 있고, 하드웨어 및/또는 소프트웨어의 임의의 적절한 결합을 사용하여 구현될 수 있다. 기계 판독 가능 매체 또는 물품은 예를 들어, 임의의 적절한 유형의 메모리 유닛, 메모리 디바이스, 메모리 물품, 메모리 매체, 저장 디바이스, 저장 물품, 저장 매체 및/또는 저장 유닛, 예를 들어 메모리, 제거 가능 또는 제거 불가능 매체, 소거 가능 또는 소거 불가능 매체, 기록 가능 또는 재기록 가능 매체, 디지털 또는 아날로그 매체, 하드 디스크, 플로피 디스크, 컴팩트 디스크 판독 전용 메모리(Compact Disk Read Only Moemory; CD-ROM), 기록 가능 컴팩트 디스크(Compact Disk Recordable; CD-R), 재기록 가능 컴팩트 디스크(Compact Disk Rewriteable; CD-RW), 광 디스크, 자기 매체, 광자기 매체, 제거가능 메모리 카드들 또는 디스크들, 다양한 유형들의 디지털 다용도 디스크(Digital Versatile Disk; DVD), 테이프, 카세트 등을 포함할 수 있다. 명령들은 소스 코드, 컴파일링형 코드(compiled code), 해석형 코드(interpreted code), 실행 코드, 정적 코드, 동적 코드, 암호식 코드 등과 같이, 임의의 적절한 고 레벨, 저 레벨, 객체 지향, 비주얼, 컴파일링형 및/또는 해석형 프로그래밍 언어를 사용하여 구현되는 임의의 적절한 유형의 코드를 포함할 수 있다.
다음의 예들은 추가 실시예들에 관한 것이다.
예 1은 적어도 일부가 하드웨어로 이루어진 로직을 포함하는 그래픽 처리 장치이고, 상기 로직은 동적 생성 그래픽 자원의 하나 이상의 사용 특성들을 결정하고, 하나 이상의 사용 특성들에 기초하여 동적 생성 그래픽 자원을 압축할지 여부를 결정하고, 동적 생성 그래픽 자원을 압축한다는 결정에 응답하여, 동적 생성 그래픽 자원에 대한 그래픽 품질 임계치에 기초하여 압축 절차를 선택한다.
예 2에서, 예 1의 로직은 하나 이상의 사용 특성들에 기초하여 메모리 대역폭 소비 메트릭을 결정하고 메모리 대역폭 소비 메트릭에 기초하여 동적 생성 그래픽 자원을 압축할지를 선택적으로 결정할 수 있다.
예 3에서, 예 1 내지 예 2 중 임의의 예의 그래픽 품질 임계치는 동적 생성 그래픽 자원에 대한 품질 저감의 허용 가능한 정도를 선택적으로 나타낼 수 있다.
예 4에서, 예 1 내지 예 3 중 임의의 예의 로직은 하나 이상의 사용 특성들 및 동적 생성 그래픽 자원에 대한 그래픽 품질 임계치에 기초하여 동적 생성 그래픽 자원을 압축할지를 선택적으로 결정할 수 있다.
예 5에서, 예 1 내지 예 4 중 임의의 예의 로직은 선택적으로 손실 압축 절차를 선택할 수 있다.
예 6에서, 예 5의 로직은 선택적으로 복수의 손실 압축 절차들 중에서 손실 압축 절차를 선택할 수 있다.
예 7에서, 예 6의 로직은 선택적으로, 복수의 손실 압축 절차들 중에서, 대응하는 그래픽 품질 메트릭이 그래픽 품질 임계치보다 더 작지 않은 최대 압축의 손실 압축 절차를 선택할 수 있다.
예 8에서, 예 5 내지 예 7 중 임의의 예의 손실 압축 절차는 적응성 크기 조정 텍스처 압축(ASTC) 압축 알고리즘을 선택적으로 포함할 수 있다.
예 9에서, 예 5 내지 예 7 중 임의의 예의 손실 압축 절차는 블록 압축(BC) 압축 알고리즘을 선택적으로 포함할 수 있다.
예 10에서, 예 9의 BC 압축 알고리즘은 BC6 또는 BC7을 선택적으로 포함할 수 있다.
예 11에서, 예 1 내지 예 4 중 임의의 예의 로직은 선택적으로 무손실 압축 절차를 선택할 수 있다.
예 12에서, 예 1 내지 예 11 중 임의의 예의 로직은 선택된 압축 절차에 따라 동적 생성 그래픽 자원을 압축하고 메모리 유닛 내에 압축된 동적 생성 그래픽 자원을 선택적으로 저장할 수 있다.
예 13에서, 예 12의 로직은 압축된 텍스처 포맷으로 압축하는 쉐이더를 사용하여 동적 생성 그래픽 자원을 선택적으로 압축할 수 있다.
예 14에서, 예 12 내지 예 13 중 임의의 예의 로직은 선택적으로 메모리 유닛으로부터 압축된 동적 생성 그래픽 자원을 검색하고 압축된 동적 생성 그래픽 자원에 기초하여 그래픽 프레임을 생성할 수 있다.
예 15에서, 예 14의 로직은 선택적으로 압축된 동적 생성 그래픽 자원을 압축 해제하고 압축 해제된 동적 생성 그래픽 자원에 기초하여 그래픽 프레임을 생성할 수 있다.
예 16에서, 예 14의 로직은 선택적으로 압축된 동적 생성 그래픽 자원에 기초하여 중간 렌더 타깃을 생성하고 중간 렌더 타깃에 기초하여 그래픽 프레임을 생성할 수 있다.
예 17에서, 예 12 내지 예 16 중 임의의 예의 로직은 선택적으로 선택된 압축 절차와 상이한 제 2 압축 절차에 따라 제 2 동적 생성 그래픽 자원을 압축할 수 있다.
예 18에서, 예 1 내지 예 17 중 임의의 예의 로직은 선택적으로 미리 생성된 그래픽 자원을 압축을 위한 후보로서 평가할 수 있다.
예 19에서, 예 18의 로직은 선택적으로 미리 생성된 그래픽 자원의 하나 이상의 압축된 버전들에 대한 품질 메트릭들을 결정할 수 있다.
예 20에서, 예 19의 로직은 선택적으로 미리 생성된 그래픽 자원의 하나 이상의 압축된 버전들에 대한 품질 메트릭들을 미리 생성된 그래픽 자원에 대한 품질 기준과 비교함으로써 미리 생성된 그래픽 자원을 압축할지 여부를 결정할 수 있다.
예 21에서, 예 1 내지 예 20 중 임의의 예의 동적 생성 그래픽 자원은 텍스처를 선택적으로 포함할 수 있다.
예 22에서, 예 1 내지 예 21 중 임의의 예의 동적 생성 그래픽 자원은 선택적으로 3D 그래픽 컨텐츠에 대한 렌더링 파이프라인의 상태에서 생성될 수 있다.
예 23은 예1 내지 예 22 중 임의의 예에 따른 그래픽 처리 장치, 무선 주파수(RF) 송수신기 및 하나 이상의 RF 안테나들을 포함하는 시스템이다.
예 24는 디스플레이를 포함하는, 예 23의 시스템이다.
예 25는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 컴퓨팅 디바이스로 하여금 동적 생성 그래픽 자원의 하나 이상의 사용 특성들을 결정하고, 하나 이상의 사용 특성들에 기초하여 동적 생성 그래픽 자원을 압축할지 여부를 결정하고, 동적 생성 그래픽 자원을 압축한다는 결정에 응답하여, 동적 생성 그래픽 자원에 대한 그래픽 품질 임계치에 기초하여 압축 절차를 선택하도록 하는 그래픽 처리 명령들의 세트를 포함하는 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체이다.
예 26에서, 예 25의 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 컴퓨팅 디바이스로 하여금 하나 이상의 사용자 특성들에 기초하여 메모리 대역폭 소비 메트릭을 결정하고 메모리 대역폭 소비 메트릭에 기초하여 동적 생성 그래픽 자원을 압축할지 여부를 결정하도록 하는 그래픽 처리 명령들을 선택적으로 포함할 수 있다.
예 27에서, 예 25 내지 예 26 중 임의의 예의 그래픽 품질 임계치는 선택적으로 동적 생성 그래픽 자원에 대한 품질 저감의 허용 가능한 정도를 나타낼 수 있다.
예 28에서, 예 25 내지 예 27 중 임의의 예의 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 컴퓨팅 디바이스로 하여금 하나 이상의 사용 특성들 및 동적 생성 그래픽 자원에 대한 그래픽 품질 임계치에 기초하여 동적 생성 그래픽 자원을 압축할지 여부를 결정하도록 하는 그래픽 처리 명령들을 선택적으로 포함할 수 있다.
예 29에서, 예 25 내지 예 28 중 임의의 예의 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 컴퓨팅 디바이스로 하여금, 손실 압축 절차를 선택하도록 하는 그래픽 처리 명령들을 선택적으로 포함할 수 있다.
예 30에서, 예 29의 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 컴퓨팅 디바이스로 하여금 복수의 손실 압축 절차들 중에서 손실 압축 절차를 선택하도록 하는 그래픽 처리 명령들을 선택적으로 포함할 수 있다.
예 31에서, 예 30의 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 컴퓨팅 디바이스로 하여금, 복수의 손실 압축 절차들 중에서, 대응하는 그래픽 품질 메트릭이 그래픽 품질 임계치보다 더 작지 않는 최대 압축의 손실 압축 절차를 선택하도록 하는 그래픽 처리 명령들을 선택적으로 포함할 수 있다.
예 32에서, 예 29 내지 예 31 중 임의의 예의 손실 압축 절차는 적응성 크기 조정 텍스처 압축(ASTC) 압축 알고리즘을 선택적으로 포함할 수 있다.
예 33에서, 예 29 내지 예 31 중 임의의 예의 손실 압축 절차는 블록 압축(BC) 압축 알고리즘을 선택적으로 포함할 수 있다.
예 34에서, 예 33의 BC 압축 알고리즘은 BC6 또는 BC7을 선택적으로 포함할 수 있다.
예 35에서, 예 25 내지 예 28 중 임의의 예의 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 컴퓨팅 디바이스로 하여금, 무손실 압축 절차를 선택하도록 하는 그래픽 처리 명령들을 선택적으로 포함할 수 있다.
예 36에서, 예 25 내지 예 35 중 임의의 예의 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 컴퓨팅 디바이스로 하여금, 선택된 압축 절차에 따라 동적 생성 그래픽 자원을 압축하고 메모리 유닛 내에 압축된 동적 생성 그래픽 자원을 저장하도록 하는 그래픽 처리 명령들을 선택적으로 포함할 수 있다.
예 37에서, 예 36의 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 컴퓨팅 디바이스로 하여금 압축된 텍스처 포맷으로 압축되는 쉐이더를 사용하여 동적 생성 그래픽 자원을 압축하도록 하는 그래픽 처리 명령들을 선택적으로 포함할 수 있다.
예 38에서, 예 36 내지 예 37 중 임의의 예의 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 컴퓨팅 디바이스로 하여금, 메모리 유닛으로부터 압축된 동적 생성 그래픽 자원을 검색하고 압축된 동적 생성 그래픽 자원에 기초하여 그래픽 프레임을 생성하도록 하는 그래픽 처리 명령들을 선택적으로 포함할 수 있다.
예 39에서, 예 38의 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 컴퓨팅 디바이스로 하여금, 압축된 동적 생성 그래픽 자원을 압축 해제하고 압축 해제된 동적 생성 그래픽 자원에 기초하여 그래픽 프레임을 생성하도록 하는 그래픽 처리 명령들을 선택적으로 포함할 수 있다.
예 40에서, 예 38의 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 컴퓨팅 디바이스로 하여금, 압축된 동적 생성 그래픽 자원에 기초하여 중간 렌더 타깃을 생성하고 중간 렌더 타깃에 기초하여 그래픽 프레임을 생성하도록 하는 그래픽 처리 명령들을 선택적으로 포함할 수 있다.
예 41에서, 예 36 내지 예 40 중 임의의 예의 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 컴퓨팅 디바이스로 하여금, 선택된 압축 절차와 상이한 제 2 압축 절차에 따라 제 2 동적 생성 그래픽 자원을 압축하도록 하는 그래픽 처리 명령들을 선택적으로 포함할 수 있다.
예 42에서, 예 25 내지 예 41 중 임의의 예의 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 컴퓨팅 디바이스로 하여금, 미리 생성된 그래픽 자원을 압축을 위한 후보로서 평가하도록 하는 그래픽 처리 명령들을 선택적으로 포함할 수 있다.
예 43에서, 예 42의 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 컴퓨팅 디바이스로 하여금 미리 생성된 그래픽 자원의 하나 이상의 압축된 버전들에 대한 품질 메트릭들을 결정하도록 하는 그래픽 처리 명령들을 선택적으로 포함할 수 있다.
예 44에서, 예 43의 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 컴퓨팅 디바이스로 하여금, 미리 생성된 그래픽 자원의 하나 이상의 압축된 버전들에 대한 품질 메트릭들을 미리 생성된 그래픽 자원에 대한 품질 기준과 비교함으로써 미리 생성된 그래픽 자원을 압축할지 여부를 결정하도록 하는 그래픽 처리 명령들을 선택적으로 포함할 수 있다.
예 45에서, 예 25 내지 예 44 중 임의의 예의 동적 생성 그래픽 자원은 텍스처를 선택적으로 포함할 수 있다.
예 46에서, 예 25 내지 예 45 중 임의의 예의 동적 생성 그래픽 자원은 선택적으로 3D 그래픽 컨텐츠에 대한 렌더링 파이프라인의 단계 동안 생성될 수 있다.
예 47은 프로세서 회로에 의해, 동적 생성 그래픽 자원의 하나 이상의 사용 특성들을 결정하는 단계, 하나 이상의 사용 특성들에 기초하여 동적 생성 그래픽 자원을 압축할지 여부를 결정하는 단계 및 동적 생성 그래픽 자원을 압축한다는 결정에 응답하여, 동적 생성 그래픽 자원에 대한 그래픽 품질 임계치에 기초하여 압축 절차를 선택하는 단계를 포함하는 그래픽 처리 방법이다.
예 48에서, 예 47의 그래픽 처리 방법은 하나 이상의 사용 특성들에 기초하여 메모리 대역폭 소비 메트릭을 결정하고 메모리 대역폭 소비 메트릭에 기초하여 동적 생성 그래픽 자원을 압축할지 여부를 결정하는 단계를 선택적으로 포함할 수 있다.
예 49에서, 예 47 내지 예 48 중 임의의 예의 그래픽 품질 임계치는 선택적으로 동적 생성 그래픽 자원에 대한 품질 저감의 허용 가능한 정도를 나타낼 수 있다.
예 50에서, 예 47 내지 예 49 중 임의의 예의 그래픽 처리 방법은 동적 생성 그래픽 자원에 대한 그래픽 품질 임계치 및 하나 이상의 사용 특성들에 기초하여 동적 생성 그래픽 자원을 압축할지 여부를 결정하는 단계를 선택적으로 포함할 수 있다.
예 51에서, 예 47 내지 예 50 중 임의의 예의 그래픽 처리 방법은 손실 압축 절차를 선택하는 단계를 선택적으로 포함할 수 있다.
예 52에서, 예 51의 그래픽 처리 방법은 복수의 손실 압축 절차들 중에서 손실 압축 절차를 선택하는 단계를 선택적으로 포함할 수 있다.
예 53에서, 예 52의 그래픽 처리 방법은 복수의 손실 압축 절차들 중에서, 대응하는 그래픽 품질 메트릭이 그래픽 품질 임계치보다 더 작지 않은 최대 압축의 손실 압축 절차를 선택하는 단계를 선택적으로 포함할 수 있다.
예 54에서, 예 51 내지 예 53 중 임의의 예의 손실 압축 절차는 적응성 크기 조정 가능 텍스처 압축(ASTC) 압축 알고리즘을 선택적으로 포함할 수 있다.
예 55에서, 예 51 내지 예 53 중 임의의 예의 손실 압축 절차는 블록 압축(BC) 압축 알고리즘을 선택적으로 포함할 수 있다.
예 56에서, 예 55의 BC 압축 알고리즘은 BC6 또는 BC7을 선택적으로 포함할 수 있다.
예 57에서, 예 47 내지 예 50 중 임의의 예의 그래픽 처리 방법은 무손실 압축 절차를 선택하는 단계를 선택적으로 포함할 수 있다.
예 58에서, 예 47 내지 예 57 중 임의의 예의 그래픽 처리 방법은 선택된 압축 절차에 따라 동적 생성 그래픽 자원을 압축하는 단계 및 메모리 유닛 내에 압축된 동적 생성 그래픽 자원을 저장하는 단계는 선택적으로 포함할 수 있다.
예 59에서, 예 58의 그래픽 처리 방법은 압축된 텍스처 포맷으로 압축하는 쉐이더를 사용하여 동적 생성 그래픽 자원을 압축하는 단계를 선택적으로 포함할 수 있다.
예 60에서, 예 58 내지 예 59 중 임의의 예의 그래픽 처리 방법은 메모리 유닛으로부터 압축된 동적 생성 그래픽 자원을 검색하는 단계 및 압축된 동적 생성 그래픽 자원에 기초하여 그래픽 프레임을 생성하는 단계를 선택적으로 포함할 수 있다.
예 61에서, 예 60의 그래픽 처리 방법은 압축된 동적 생성 그래픽 자원을 압축 해제하는 단계 및 압축 해제된 동적 생성 그래픽 자원에 기초하여 그래픽 프레임을 생성하는 단계를 선택적으로 포함할 수 있다.
예 62에서, 예 60의 그래픽 처리 방법은 압축된 동적 생성 그래픽 자원에 기초하여 중간 렌더 타깃을 생성하는 단계 및 중간 렌더 타킷에 기초하여 그래픽 프레임을 생성하는 단계를 선택적으로 포함할 수 있다.
예 63에서, 예 58 내지 예 62 중 임의의 예의 그래픽 처리 방법은 선택된 압축 절차와 상이한 제 2 압축 절차에 따라 제 2 동적 생성 그래픽 자원을 압축하는 단계를 선택적으로 포함할 수 있다.
예 64에서, 예 47 내지 예 63 중 임의의 예의 그래픽 처리 방법은 미리 생성된 그래픽 자원을 압축을 위한 후보로서 평가하는 단계를 선택적으로 포함할 수 있다.
예 65에서, 예 64의 그래픽 처리 방법은 미리 생성된 그래픽 자원의 하나 이상의 압축된 버전들에 대한 품질 메트릭들을 결정하는 단계를 선택적으로 포함할 수 있다.
예 66에서, 예 65의 그래픽 처리 방법은 미리 생성된 그래픽 자원의 하나 이상의 압축된 버전들에 대한 품질 메트릭들을 미리 생성된 그래픽 자원에 대한 품질 기준과 비교함으로써 미리 생성된 그래픽 자원을 압축할지 여부를 결정하는 단계를 선택적으로 포함할 수 있다.
예 67에서, 예 47 내지 예 66 중 임의의 예의 동적 생성 그래픽 자원은 텍스처를 선택적으로 포함할 수 있다.
예 68에서, 예 47 내지 예 67 중 임의의 예의 동적 생성 그래픽 자원은 선택적으로 3D 그래픽 컨텐츠에 대한 렌더링 파이프라인의 단계에서 생성될 수 있다.
예 69에서, 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 컴퓨팅 디바이스로 하여금 예 47 내지 예 68 중 임의의 예에 따른 그래픽 처리 방법을 수행하도록 하는 명령들의 세트를 포함하는 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체이다.
예 70은 예 47 내지 예 68 중 임의의 예에 따른 그래픽 처리 방법을 수행하기 위한 수단을 포함하는 장치이다.
예 71은 예 70에 따른 그래픽 처리 장치, 무선 주파수(RF) 송수신기 및 하나 이상의 RF 안테나들을 포함하는 시스템이다.
예 72는 디스플레이를 포함하는 예 71의 시스템이다.
예 73은 동적 생성 그래픽 자원의 하나 이상의 사용 특성들을 결정하기 위한 수단, 하나 이상의 사용 특성들에 기초하여 동적 생성 그래픽 자원을 압축할지 여부를 결정하기 위한 수단 및 동적 생성 그래픽 자원을 압축한다는 결정에 응답하여, 동적 생성 그래픽 자원에 대한 그래픽 품질 임계치에 기초하여 압축 절차를 선택하기 위한 수단을 포함하는 그래픽 처리 장치이다.
예 74에서, 예 73의 그래픽 처리 장치는 하나 이상의 사용 특성들에 기초하여 메모리 대역폭 소비 메트릭을 결정하기 위한 수단 및 메모리 대역폭 소비 메트릭에 기초하여 동적 생성 그래픽 자원을 압축할지 여부를 결정하기 위한 수단을 선택적으로 포함할 수 있다.
예 75에서, 예 73 내지 예 74 중 임의의 예의 그래픽 품질 임계치는 동적 생성 그래픽 자원에 대한 품질 저감의 허용 가능한 정도를 선택적으로 나타낼 수 있다.
예 76에서, 예 73 내지 예 75 중 임의의 예의 그래픽 처리 장치는 하나 이상의 사용 특성들 및 동적 생성 그래픽 자원에 대한 그래픽 품질 임계치에 기초하여 동적 생성 그래픽 자원을 압축할지 여부를 결정하기 위한 수단을 선택적으로 포함할 수 있다.
예 77에서, 예 73 내지 예76 중 임의의 예의 그래픽 처리 장치는 손실 압축 절차를 선택하기 위한 수단을 선택적으로 포함할 수 있다.
예 78에서, 예 77의 그래픽 처리 장치는 복수의 손실 압축 절차들 중에서 손실 압축 절차를 선택하기 위한 수단을 선택적으로 포함할 수 있다.
예 79에서, 예 78의 그래픽 처리 장치는 복수의 손실 압축 절차들 중에서, 대응하는 그래픽 품질 메트릭이 그래픽 품질 임계치보다 더 작지 않은 최대 압축의 손실 압축 절차를 선택하기 위한 수단을 선택적으로 포함할 수 있다.
예 80에서, 예 77 내지 예 79 중 임의의 예의 손실 압축 절차는 적응성 크기 조정 가능 텍스처 압축(ASTC) 압축 알고리즘을 선택적으로 포함할 수 있다.
예 81에서, 예 77 내지 예 79의 임의의 예의 손실 압축 절차는 블록 압축(BC) 압축 알고리즘을 선택적으로 포함할 수 있다.
예 82에서, 예 81의 BC 압축 알고리즘은 BC6 또는 BC7을 선택적으로 포함할 수 있다.
예 83에서, 예 73 내지 예 76 중 임의의 예의 그래픽 처리 장치는 무손실 압축 절차를 선택하기 위한 수단을 선택적으로 포함할 수 있다.
예 84에서, 예 73 내지 예 83 중 임의의 예의 그래픽 처리 장치는 선택된 압축 절차에 따라 동적 생성 그래픽 자원을 압축하기 위한 수단 및 압축된 동적 생성 그래픽 자원을 메모리 유닛 내에 저장하기 위한 수단을 선택적으로 포함할 수 있다.
예 85에서, 예 84의 그래픽 처리 장치는 압축된 텍스처 포맷으로 압축하는 쉐이더를 사용하여 동적 생성 그래픽 자원을 압축하기 위한 수단을 선택적으로 포함할 수 있다.
예 86에서, 예 84 내지 예 85 중 임의의 예의 그래픽 처리 장치는 메모리 유닛으로부터 압축된 동적 생성 그래픽 자원을 검색하기 위한 수단 및 압축된 동적 생성그래픽 자원에 기초하여 그래픽 프레임을 생성하기 위한 수단을 선택적으로 포함할 수 있다.
예 87에서, 예 86의 그래픽 처리 장치는 압축된 동적 생성 그래픽 자원을 압축 해제하기 위한 수단 및 압축 해제된 동적 생성 그래픽 자원에 기초하여 그래픽 프레임을 생성하기 위한 수단을 선택적으로 포함할 수 있다.
예 88에서, 예 86의 그래픽 처리 장치는 압축된 동적 생성 그래픽 자원에 기초하여 중간 렌더 타깃을 생성하기 위한 수단 및 중간 렌더 타깃에 기초하여 그래픽 프레임을 생성하기 위한 수단을 선택적으로 포함할 수 있다.
예 89에서, 예 84 내지 예 88 중 임의의 예의 그래픽 처리 장치는 선택된 압축 절차와 상이한 제 2 압축 절차에 따라 제 2 동적 생성 그래픽 자원을 압축하기 위한 수단을 선택적으로 포함할 수 있다.
예 90에서, 예 73 내지 예 89 중 임의의 예의 그래픽 처리 장치는 미리 생성된 그래픽 자원을 압축에 대한 후보로서 평가하기 위한 수단을 선택적으로 포함할 수 있다.
예 91에서, 예 90의 그래픽 처리 장치는 미리 생성된 그래픽 자원의 하나 이상의 압축된 버전들에 대한 품질 메트릭들을 결정하기 위한 수단을 선택적으로 포함할 수 있다.
예 92에서, 예 91의 그래픽 처리 장치는 미리 생성된 그래픽 자원의 하나 이상의 압축된 버전들의 품질 메트릭들을 미리 생성된 그래픽 자원에 대한 품질 기준과 비교함으로써 미리 생성된 그래픽 자원을 압축할지 여부를 결정하기 위한 수단을 선택적으로 포함할 수 있다.
예 93에서, 예 73 내지 예 92의 동적 생성 그래픽 자원은 텍스처를 선택적으로 포함할 수 있다.
예 94에서, 예 73 내지 예 93 중 임의의 예의 동적 생성 그래픽 자원은 3D 그래픽 컨텐츠를 위한 렌더링 파이프라인의 단계에서 선택적으로 생성될 수 있다.
예 95는 예 73 내지 예 94 중 임의의 예에 따른 그래픽 처리 장치, 무선 주파수(RF) 송수신기 및 하나 이상의 RF 안테나들을 포함하는 시스템이다.
예 96은 디스플레이를 포함하는 예 95의 시스템이다.
실시예들의 철저한 이해를 제공하기 위해 본원에서는 많은 구체적인 세목들이 진술되었다. 그러나, 실시예들은 이 구체적 세목들 없이도 실시예들이 실시될 수 있음이 당업자에 의해 이해될 것이다. 다른 경우들에서, 널리 공지되어 있는 동작들, 구성요소들 및 회로들은 실시예들을 모호하게 하지 않게 하도록 상세하게 설명되지 않았다. 본원에서 개시되는 특정한 구조 및 기능 세목들은 대표적인 사례일 수 있으며 반드시 실시예들의 범위를 제한하는 것이 아님이 인정될 수 있다.
일부 실시예들은 표현 "결합되는" 및 "접속되는"을 이들의 파생어들과 함께 사용하여 설명될 수 있다. 이 용어들은 서로에 대한 동의어로 의도되지 않는다. 예를 들어, 일부 실시예들은 둘 이상의 요소들이 서로 직접 물리적 또는 전기적으로 접촉되어 있는 상태에 있음을 나타내기 위해 용어들 "접속되는" 및/또는 "결합되는"을 사용하여 기술될 수 있다. 그러나 "결합되는"은 또한 둘 이상의 요소들이 서로 직접 접촉되어 있지 않지만 여전히 서로 상호 동작하거나 연동되는 것을 의미할 수 있다.
달리 구체적으로 진술되지 않는 한, "처리하는", "계산하는", "결정하는" 등과 같은 용어들은 컴퓨팅 시스템의 레지스터들 및/또는 메모리들 내에서 물리적 양들(예를 들어, 전자)으로 표현되는 데이터를 컴퓨팅 시스템의 메모리들, 레지스터들 또는 다른 그러한 정보 저장, 전송 또는 디스플레이 디바이스들 내의 물리량들로 유사하게 표현되는 다른 데이터로 조작 및/또는 변환하는 컴퓨터 또는 컴퓨팅 시스템 또는 유사한 전자 컴퓨팅 디바이스의 행위 및/또는 프로세스들을 칭하는 것이 인정될 수 있다. 실시예들은 이 상황으로 제한되지 않는다.
본원에서 기술되는 방법들은 기술된 순서로 또는 임의의 특정한 순서로 실행될 필요가 없음이 주목되어야 한다. 더욱이, 본원에서 식별된 방법들에 관하여 설명되는 다양한 활동들은 일련의 또는 동시의 방식으로 실행될 수 있다.
본원에서 특정한 실시예들이 설명되고 기술되었을지라도, 동일한 목적을 달성하도록 계산된 임의의 구성이 도시되어 있는 특정한 실시예들을 대체할 수 있음이 인정되어야 한다. 본 명세서는 다양한 실시예들의 임의의 그리고 모든 개작들 또는 변형들을 포괄하도록 의도된다. 상기 설명은 실례의 방식으로 행해졌고 제한하는 방식으로 행해지지 않았음이 이해되어야 한다. 상기 실시예들 및 본원에서 구체적으로 설명되지 않은 다른 실시예들의 결합들은 상기 설명을 검토하면 당업자에게는 명백할 것이다. 그러므로, 다양한 실시예들의 범위는 상기 구성들, 구조들 및 방법들이 사용되는 임의의 다른 응용예들을 포함한다.
본 명세서의 요약서는 독자가 기술적 개시내용의 성격을 신속하게 확인하는 것이 가능한 요약서를 요구하는 37 미국 연방 규정집(Code of Federal Regulations) § 1.72(b)에 준수하여 제공되는 점이 강조된다. 본 요약서는 이것이 청구항들의 범위 또는 의미를 해석 또는 제한하는 데 사용되지 않는다는 점을 포함하여 제출된다. 게다가, 상기 상세한 설명에서, 명세서를 간소화하기 위해 다양한 특징들이 단일 실시예 내에 함께 그룹화되어 있는 것이 확인될 수 있다. 본 명세서의 방법은 청구되는 실시예들이 각각의 청구항에서 명백하게 열거되는 것보다 더 많은 특징들을 요구하는 의도를 반영하는 것으로 해석되어서는 안 된다. 오히려, 다음의 청구항들은 발명의 특허대상이 개시된 단일 실시예들의 특징들 모두보다 더 적은 특징들에 있음을 반영한다. 그러므로, 다음의 청구항들은 이에 상세한 설명들 내에 통합되고, 여기서 각각의 청구항은 별개의 바람직한 실시예들로서 자체가 독립된다. 첨부된 청구항들에서, 용어들 "including" 및 "in which"는 각각의 용어들 "comprising" 및 "wherein"의 쉬운 영어(plain-English)의 등가의 표현들로서 각각 사용된다. 더욱이, 용어들 "제 1", "제 2" 및 "제 3" 등은 단지 라벨들로서 사용되고 자체의 물체들에 수치적 요건들을 부과하는 것으로 의도되지 않는다.
특허대상이 구조 특징들 및/또는 방법론적 행위들에 특정한 언어로 기술되었을지라도, 첨부된 청구항들에서 규정되는 특허 대상은 상술한 특정한 특징들 또는 행위들로 반드시 제한되는 것이 아님이 이해되어야 한다. 오히려, 상술한 특정한 특징들 및 행위들은 청구항들을 구현하는 예의 형태로서 개시된다.

Claims (25)

  1. 적어도 일부가 하드웨어로 이루어진 로직(logic)을 포함하되,
    상기 로직은,
    그래픽 프레임에 대한 생성 프로세스의 소정의 패스 동안 하나 이상의 사용 특성을 결정하고 -상기 하나 이상의 사용 특성은 동적 생성 그래픽 자원(dynamically-generated graphics resource)이 상기 그래픽 프레임에 대한 상기 생성 프로세스의 남은 프로세스 동안 얼마나 빈번하게 메모리 버스를 횡단할지를 나타냄-,
    상기 하나 이상의 사용 특성에 기초하여 상기 동적 생성 그래픽 자원을 압축할지 여부를 결정하고,
    상기 동적 생성 그래픽 자원의 압축 결정에 응답하여,
    상기 동적 생성 그래픽 자원에 대한 그래픽 품질 임계치에 기초하여 압축 절차를 선택하고,
    상기 선택된 압축 절차에 따라 상기 동적 생성 그래픽 자원을 압축하고,
    상기 압축된 동적 생성 그래픽 자원을 메모리 유닛 내에 저장하는
    장치.
  2. 제 1 항에 있어서,
    상기 로직은 상기 하나 이상의 사용 특성에 기초하여 메모리 대역폭 소비 메트릭(metric)을 결정하고 상기 메모리 대역폭 소비 메트릭에 기초하여 상기 동적 생성 그래픽 자원을 압축할지 여부를 결정하는
    장치.
  3. 제 1 항에 있어서,
    상기 그래픽 품질 임계치는 상기 동적 생성 그래픽 자원에 대한 품질 저감(quality reduction)의 허용 가능한 정도를 나타내는
    장치.
  4. 제 1 항에 있어서,
    상기 로직은 복수의 손실 압축 절차들 중에서 상기 압축 절차를 선택하는
    장치.
  5. 제 4 항에 있어서,
    상기 로직은 상기 복수의 손실 압축 절차들 중에서, 대응하는 그래픽 품질 메트릭이 상기 그래픽 품질 임계치보다 작지 않은 최대 압축의 손실 압축 절차를 선택하는
    장치.
  6. 삭제
  7. 제 1 항에 있어서,
    상기 로직은 상기 메모리 유닛으로부터 상기 압축된 동적 생성 그래픽 자원을 검색하고, 상기 압축된 동적 생성 그래픽 자원을 압축 해제(decompress)하고, 상기 압축 해제된 동적 생성 그래픽 자원에 기초하여 상기 그래픽 프레임을 생성하는
    장치.
  8. 제 1 항에 있어서,
    상기 로직은 상기 동적 생성 그래픽 자원에 대한 상기 그래픽 품질 임계치 및 상기 하나 이상의 사용 특성에 기초하여 상기 동적 생성 그래픽 자원을 압축할지 여부를 결정하는
    장치.
  9. 제 1 항에 있어서,
    디스플레이와,
    무선 주파수(radio frequency; RF) 송수신기와,
    하나 이상의 RF 안테나를 포함하는
    장치.
  10. 명령어의 세트를 포함하는 적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체로서,
    상기 명령어의 세트는 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 상기 컴퓨팅 디바이스로 하여금,
    그래픽 프레임에 대한 생성 프로세스의 소정의 패스 동안 하나 이상의 사용 특성을 결정하고 -상기 하나 이상의 사용 특성은 동적 생성 그래픽 자원이 상기 그래픽 프레임에 대한 상기 생성 프로세스의 남은 프로세스 동안 얼마나 빈번하게 메모리 버스를 횡단할지를 나타냄-,
    상기 하나 이상의 사용 특성에 기초하여 상기 동적 생성 그래픽 자원을 압축할지 여부를 결정하고,
    상기 동적 생성 그래픽 자원의 압축 결정에 응답하여,
    상기 동적 생성 그래픽 자원에 대한 그래픽 품질 임계치에 기초하여 압축 절차를 선택하고,
    상기 선택된 압축 절차에 따라 상기 동적 생성 그래픽 자원을 압축하고,
    상기 압축된 동적 생성 그래픽 자원을 메모리 유닛 내에 저장하도록 하는
    적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체.
  11. 제 10 항에 있어서,
    상기 컴퓨팅 디바이스에서 실행되는 것에 응답하여, 상기 컴퓨팅 디바이스로 하여금,
    상기 하나 이상의 사용 특성에 기초하여 메모리 대역폭 소비 메트릭을 결정하고,
    상기 메모리 대역폭 소비 메트릭에 기초하여 상기 동적 생성 그래픽 자원을 압축할지 여부를 결정하도록 하는 명령어를 포함하는
    적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체.
  12. 제 10 항에 있어서,
    상기 그래픽 품질 임계치는 상기 동적 생성 그래픽 자원에 대한 품질 저감의 허용 가능한 정도를 나타내는
    적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체.
  13. 제 10 항에 있어서,
    상기 컴퓨팅 디바이스에서 실행되는 것에 응답하여, 상기 컴퓨팅 디바이스로 하여금, 복수의 손실 압축 절차들 중에서 상기 압축 절차를 선택하도록 하는 명령어를 포함하는
    적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체.
  14. 제 13 항에 있어서,
    상기 컴퓨팅 디바이스에서 실행되는 것에 응답하여, 상기 컴퓨팅 디바이스로 하여금, 상기 복수의 손실 압축 절차들 중에서, 대응하는 그래픽 품질 메트릭이 상기 그래픽 품질 임계치보다 작지 않은 최대 압축의 손실 압축 절차를 선택하도록 하는 명령어를 포함하는
    적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체.
  15. 삭제
  16. 제 10 항에 있어서,
    상기 컴퓨팅 디바이스에서 실행되는 것에 응답하여, 상기 컴퓨팅 디바이스로 하여금,
    상기 메모리 유닛으로부터 상기 압축된 동적 생성 그래픽 자원을 검색하고,
    상기 압축된 동적 생성 그래픽 자원을 압축 해제하고,
    상기 압축 해제된 동적 생성 그래픽 자원에 기초하여 상기 그래픽 프레임을 생성하도록 하는 명령어를 포함하는
    적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체.
  17. 제 10 항에 있어서,
    상기 컴퓨팅 디바이스에서 실행되는 것에 응답하여, 상기 컴퓨팅 디바이스로 하여금, 상기 동적 생성 그래픽 자원에 대한 상기 그래픽 품질 임계치 및 상기 하나 이상의 사용 특성에 기초하여 상기 동적 생성 그래픽 자원을 압축할지 여부를 결정하도록 하는 명령어를 포함하는
    적어도 하나의 비일시적 컴퓨터 판독 가능 저장 매체.
  18. 그래픽 프레임에 대한 생성 프로세스의 소정의 패스 동안 하나 이상의 사용 특성을 결정하는 단계 -상기 하나 이상의 사용 특성은 동적 생성 그래픽 자원이 상기 그래픽 프레임에 대한 상기 생성 프로세스의 남은 프로세스 동안 얼마나 빈번하게 메모리 버스를 횡단할지를 나타냄- 와,
    프로세서 회로에 의해, 상기 하나 이상의 사용 특성에 기초하여 상기 동적 생성 그래픽 자원을 압축할지 여부를 결정하는 단계와,
    상기 동적 생성 그래픽 자원의 압축 결정에 응답하여,
    상기 동적 생성 그래픽 자원에 대한 그래픽 품질 임계치에 기초하여 압축 절차를 선택하고,
    상기 선택된 압축 절차에 따라 상기 동적 생성 그래픽 자원을 압축하고,
    상기 압축된 동적 생성 그래픽 자원을 메모리 유닛 내에 저장하는 단계를 포함하는
    방법.
  19. 제 18 항에 있어서,
    상기 하나 이상의 사용 특성에 기초하여 메모리 대역폭 소비 메트릭(metric)을 결정하는 단계와,
    상기 메모리 대역폭 소비 메트릭에 기초하여 상기 동적 생성 그래픽 자원을 압축할지 여부를 결정하는 단계를 포함하는
    방법.
  20. 제 18 항에 있어서,
    상기 그래픽 품질 임계치는 상기 동적 생성 그래픽 자원에 대한 품질 저감의 허용 가능한 정도를 나타내는
    방법.
  21. 제 18 항에 있어서,
    복수의 손실 압축 절차들 중에서 상기 압축 절차를 선택하는 단계를 포함하는
    방법.
  22. 제 21 항에 있어서,
    상기 복수의 손실 압축 절차들 중에서, 대응하는 그래픽 품질 메트릭이 상기 그래픽 품질 임계치보다 작지 않은 최대 압축의 손실 압축 절차를 선택하는 단계를 포함하는
    방법.
  23. 삭제
  24. 제 18 항에 있어서,
    상기 메모리 유닛으로부터 상기 압축된 동적 생성 그래픽 자원을 검색하는 단계와,
    상기 압축된 동적 생성 그래픽 자원을 압축 해제하는 단계와,
    상기 압축 해제된 동적 생성 그래픽 자원에 기초하여 상기 그래픽 프레임을 생성하는 단계를 포함하는
    방법.
  25. 제 18 항에 있어서,
    상기 동적 생성 그래픽 자원에 대한 상기 그래픽 품질 임계치 및 상기 하나 이상의 사용 특성에 기초하여 상기 동적 생성 그래픽 자원을 압축할지 여부를 결정하는 단계를 포함하는
    방법.
KR1020150089764A 2014-07-25 2015-06-24 동적 생성 그래픽 자원들에 대한 압축 기술들 KR101717915B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/341,467 2014-07-25
US14/341,467 US9524536B2 (en) 2014-07-25 2014-07-25 Compression techniques for dynamically-generated graphics resources

Publications (2)

Publication Number Publication Date
KR20160012903A KR20160012903A (ko) 2016-02-03
KR101717915B1 true KR101717915B1 (ko) 2017-03-20

Family

ID=55148684

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150089764A KR101717915B1 (ko) 2014-07-25 2015-06-24 동적 생성 그래픽 자원들에 대한 압축 기술들

Country Status (4)

Country Link
US (1) US9524536B2 (ko)
KR (1) KR101717915B1 (ko)
CN (1) CN105279730B (ko)
TW (1) TWI582720B (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10719959B2 (en) * 2016-01-14 2020-07-21 Samsung Electronics Co., Ltd. Mobile device and a method for texture memory optimization thereof
US10055810B2 (en) 2016-03-04 2018-08-21 Samsung Electronics Co., Ltd. Cache architecture for efficiently accessing texture data using buffers
CN107292808B (zh) * 2016-03-31 2021-01-05 阿里巴巴集团控股有限公司 图像处理方法、装置及图像协处理器
KR20180056313A (ko) 2016-11-18 2018-05-28 삼성전자주식회사 텍스처를 처리하는 방법 및 장치
JP2018151537A (ja) * 2017-03-14 2018-09-27 オムロン株式会社 画面作成装置および画面作成プログラム
US10484685B2 (en) * 2017-04-18 2019-11-19 Qualcomm Incorporated System and method for intelligent data/frame compression in a system on a chip
US10609418B2 (en) * 2017-04-18 2020-03-31 Qualcomm Incorporated System and method for intelligent data/frame compression in a system on a chip
CN106964154B (zh) * 2017-04-24 2020-12-29 深圳天珑无线科技有限公司 一种图像处理方法、装置及终端
US11432187B2 (en) * 2018-04-04 2022-08-30 Charter Communications Operating, Llc Dynamic use of header compression in a wireless network
CN108769715B (zh) * 2018-05-22 2022-05-13 深圳市腾讯网络信息技术有限公司 图形指令数据的处理方法及装置
CN109803144B (zh) * 2018-12-25 2021-05-18 北京凯视达科技股份有限公司 视频编解码方法、装置、***及电子设备
US10762668B2 (en) * 2018-12-28 2020-09-01 Intel Corporation Context-aware compression with quantization of hierarchical transform matrices
US11977525B2 (en) * 2021-03-04 2024-05-07 EMC IP Holding Company LLC Method to optimize ingest in dedupe systems by using compressibility hints
CN114327452A (zh) * 2021-12-14 2022-04-12 山东芯慧微电子科技有限公司 一种基于xml自动生成ip核gui的方法
US20230325097A1 (en) * 2022-04-12 2023-10-12 Dell Products L.P. Selective powering of storage drive components in a storage node based on system performance limits

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006293694A (ja) 2005-04-11 2006-10-26 Sony Computer Entertainment Inc 情報処理装置、コンピュータの制御方法及びプログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8244051B2 (en) 2006-03-15 2012-08-14 Microsoft Corporation Efficient encoding of alternative graphic sets
US8031937B2 (en) * 2007-04-04 2011-10-04 Telefonaktiebolaget Lm Ericsson (Publ) Frame buffer compression and decompression method for graphics rendering
US9129409B2 (en) * 2009-07-29 2015-09-08 Qualcomm Incorporated System and method of compressing video content
US8510518B2 (en) 2010-06-22 2013-08-13 Advanced Micro Devices, Inc. Bandwidth adaptive memory compression
US9378560B2 (en) 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US20130208786A1 (en) * 2012-02-15 2013-08-15 Wei Xiong Content Adaptive Video Processing
US8892684B2 (en) 2012-05-25 2014-11-18 Microsoft Corporation Dynamic selection of resources for compression in a content delivery network
US9899007B2 (en) 2012-12-28 2018-02-20 Think Silicon Sa Adaptive lossy framebuffer compression with controllable error rate
US9438917B2 (en) * 2013-04-18 2016-09-06 Futurewei Technologies, Inc. System and method for adaptive bandwidth management

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006293694A (ja) 2005-04-11 2006-10-26 Sony Computer Entertainment Inc 情報処理装置、コンピュータの制御方法及びプログラム

Also Published As

Publication number Publication date
US20160027145A1 (en) 2016-01-28
KR20160012903A (ko) 2016-02-03
TWI582720B (zh) 2017-05-11
TW201610909A (zh) 2016-03-16
CN105279730B (zh) 2019-08-20
CN105279730A (zh) 2016-01-27
US9524536B2 (en) 2016-12-20

Similar Documents

Publication Publication Date Title
KR101717915B1 (ko) 동적 생성 그래픽 자원들에 대한 압축 기술들
CN110072033B (zh) 使用选择性色彩变换的色彩压缩
KR101634134B1 (ko) 블록 압축 이미지들의 압축 해제를 위한 시스템, 방법, 및 컴퓨터 프로그램 제품
US20130265305A1 (en) Compressed Depth Cache
US10621691B2 (en) Subset based compression and decompression of graphics data
JP6182225B2 (ja) カラーバッファ圧縮
KR101713041B1 (ko) 일반화된 플레인 인코딩을 이용한 확률적 깊이 버퍼 압축
JP6745020B2 (ja) 方法、コンピュータプログラム、コンピュータ可読記録媒体および装置
TWI550552B (zh) 適應性深度偏移壓縮技術
KR101277354B1 (ko) 메모리 대역폭 및 저장소를 감소시키기 위한 이미지 데이터의 지각적 무손실 압축
JP6005292B2 (ja) ビデオ符号化及び復号のためのヒストグラム分割ベースのローカル適応フィルタ
JP6412530B2 (ja) ビデオ符号化及び復号のためのヒストグラム分割ベースのローカル適応フィルタ
JP6379408B2 (ja) ビデオ符号化及び復号のためのヒストグラム分割ベースのローカル適応フィルタ

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)