KR20070032387A - Legacy processing for pixel shader hardware - Google Patents

Legacy processing for pixel shader hardware Download PDF

Info

Publication number
KR20070032387A
KR20070032387A KR1020077003576A KR20077003576A KR20070032387A KR 20070032387 A KR20070032387 A KR 20070032387A KR 1020077003576 A KR1020077003576 A KR 1020077003576A KR 20077003576 A KR20077003576 A KR 20077003576A KR 20070032387 A KR20070032387 A KR 20070032387A
Authority
KR
South Korea
Prior art keywords
memory
signature
new
texture information
pixel shader
Prior art date
Application number
KR1020077003576A
Other languages
Korean (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 인텔 코포레이션
Priority to KR1020077003576A priority Critical patent/KR20070032387A/en
Publication of KR20070032387A publication Critical patent/KR20070032387A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects

Landscapes

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

Abstract

방법은 텍스처 정보를 수신하는 단계와 텍스처 정보에 대응하는 사전컴파일된 셰이더가 존재하는지를 판단하는 단계를 포함할 수 있다. 텍스처 정보에 대응하는 사전컴파일된 셰이더가 존재하지 않으면 텍스처 정보에 기초하여 새로운 셰이더가 컴파일될 수 있다. 텍스처 정보에 대응하는 사전컴파일된 셰이더가 존재하면 사전컴파일된 셰이더를 사용할 수 있다.

Figure 112007013742277-PCT00001

The method may include receiving texture information and determining whether a precompiled shader corresponding to the texture information exists. If no precompiled shader corresponding to the texture information exists, a new shader may be compiled based on the texture information. If there is a precompiled shader that corresponds to the texture information, you can use the precompiled shader.

Figure 112007013742277-PCT00001

Description

픽셀 셰이더 하드웨어용 레거시 프로세싱{LEGACY PROCESSING FOR PIXEL SHADER HARDWARE}Legacy processing for pixel shader hardware {LEGACY PROCESSING FOR PIXEL SHADER HARDWARE}

청구된 본 발명의 구현예는 일반적으로 그래픽 이미지 프로세싱에 관한 것일 수 있으며, 보다 구체적으로는, 레거시 텍스처 유닛(legacy texture unit)을 수반하는 그래픽 이미지 프로세싱에 관한 것일 수도 있다.Implementations of the claimed invention may generally relate to graphical image processing, and more particularly to graphical image processing involving a legacy texture unit.

그래픽 프로세싱에서, 텍스처는 이미지에서 기하 형태의 원색(예컨대, 삼각형)에 적용되거나 "매핑"되어 왔다. 과거에, 이러한 텍스처 매핑은 하드웨어 텍스처 유닛의 다양한 조합에 의해 결정되었던 이른바 "고정 함수(fixed function)"를 수반해 왔다. 예컨대, 고정 함수는 색 합산, 안개 추가, 점화법(stippling) 등의 용도의 추가 하드웨어 유닛을 구비하거나 구비하지 않으면서, 다양한 텍스처 환경을 구현하는 하나 이상의 텍스처 유닛을 수반할 수 있다. 이러한 방법으로, 다양한 고정 프로세싱 함수가 그래픽 하드웨어 내에 구성되었고, 그래픽 소프트웨어 애플리케이션은 이러한 고정 함수에 의존하였다.In graphics processing, textures have been applied or "mapped" to geometric primaries (eg, triangles) in an image. In the past, such texture mapping has involved so-called "fixed functions" that were determined by various combinations of hardware texture units. For example, the fixing function may involve one or more texture units that implement various texture environments, with or without additional hardware units for use in color summing, fog addition, stippling, and the like. In this way, various fixed processing functions have been built into the graphics hardware, and the graphics software application has relied on these fixed functions.

가장 최근에, 그래픽 하드웨어는 프로그램가능한 온-더-플라이(on-the-fly) 가 되어, 그 중에서도 특히, 이전의 프로그램가능하지 않은 그래픽 하드웨어에 의해 구현되었던 고정 함수를 구현한다. 이러한 프로그램가능한 하드웨어는 레거시 고정 함수를 구성하는 텍스처 유닛(예컨대, 이제부터 "레거시" 텍스처 유닛으로 지칭됨)을 에뮬레이팅하거나 (이와 달리 텍스처 유닛의 기능을 구현할 수 있다). 그래픽 프로세서는 새로운 고정 함수(예컨대, 픽셀 셰이더(pixel shader))를 그들이 필요로 하는 만큼 컴파일할 수 있다. 그러나, 그래픽 소프트웨어 애플리케이션은 레거시 고정 함수에 대응하는 레거시 애플리케이션 프로그래밍 인터페이스(API:application programming interface)도 사용할 수 있다. 이러한 소프트웨어 애플리케이션은 비교적 종종 텍스처 환경도 변화시켜, 각각의 변화를 겪는 고정 함수(예컨대, 픽셀 셰이더)의 재연산을 포싱할 수 있다.Most recently, graphics hardware has become programmable on-the-fly, in particular implementing the fixed functions implemented by previous non-programmable graphics hardware. Such programmable hardware can emulate a texture unit (eg, referred to herein as a " legacy " texture unit) constituting a legacy fixed function (or otherwise implement the functionality of the texture unit). The graphics processor can compile new fixed functions (e.g. pixel shaders) as they need. However, graphics software applications may also use legacy application programming interfaces (APIs) corresponding to legacy fixed functions. Such software applications can also change the texture environment relatively often, forcing recomputation of fixed functions (eg, pixel shaders) that undergo each change.

본 명세서의 일부를 구성하고 이에 포함되는 첨부 도면은 본 발명의 이론과 일치하는 하나 이상의 구현예를 도시하며, 기술과 함께 이러한 구현예를 설명한다. 도면은 반드시 실제 크기대로 도시되는 것은 아니며, 대신에 본 발명의 이론을 설명하는 데에 중점을 둔다.The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate one or more embodiments consistent with the theory of the invention and, together with the description, describe such embodiments. The drawings are not necessarily drawn to scale, with emphasis instead being placed upon illustrating the theory of the invention.

도 1은 예시적인 시스템을 도시한다.1 illustrates an example system.

도 2는 그래픽 데이터의 프로세싱을 도시하는 흐름도이다.2 is a flowchart illustrating processing of graphical data.

후속하는 상세한 설명은 첨부하는 도면을 참조한다. 서로 다른 도면에서 동일한 참조 번호는 동일하거나 유사한 구성요소를 식별하는 데 사용될 수 있다. 설명을 위한 것이며 비한정적인 다음 기술에서, 청구된 본 발명의 다양한 측면을 이해하기 위해 특정 구조, 아키텍처, 인터페이스, 기술 등과 같은 특정 세부사항이 설명된다. 그러나, 당업자는 청구된 본 발명의 다양한 측면이 이들 측정 세부사항으로부터 벗어나는 다른 예에서 실시될 수 있다는 본 발명의 이점을 알 것이다. 어떤 경우에는, 잘 알려진 장치, 회로 및 방법에 대한 기술을 생략하여, 본 발명의 기술이 불필요하게 상세해짐으로써 불명료해지지 않도록 한다.The following detailed description refers to the accompanying drawings. The same reference numbers in different drawings may be used to identify the same or similar components. In the following description, which is for purposes of illustration and not limitation, specific details are set forth such as specific structures, architectures, interfaces, techniques, etc., in order to understand various aspects of the claimed subject matter. However, those skilled in the art will appreciate the advantages of the present invention that the various aspects of the claimed invention may be practiced in other examples that depart from these measurement details. In some cases, descriptions of well-known devices, circuits, and methods are omitted, so that the techniques of the present invention are unnecessarily detailed and not obscured.

도 1은 예시적인 시스템(100)을 도시한다. 시스템(100)은 프로세서(110), 그래픽 프로세서(120), 그래픽 메모리(130), 프로그램가능한 하드웨어(140) 및 프레임 버퍼(150)를 포함할 수 있다. 일부 구현예에서, 하나 이상의 구성요소(120 내지 150)는 데이터 버스를 통해 프로세서(110)에 접속된 물리적으로 별개인 그래픽 카드 내에 포함될 수 있다. 일부 구현예에서, 구성요소(120 내지 150)는 구성요소(110)와 함께 공통 회로 보드(예컨대, 마더보드(motherboard), 도터 카드(duaghter card) 등) 상에 배치될 수 있다. 일부 구현예에서, 하나 이상의 구성요소(120 내지 150)는 장치의 어느 한 부분(예컨대, 코어)의 일부일 수 있고, 프로세서(110)는 동일한 장치의 다른 부분(예컨대, 다른 코어)에 포함될 수 있다.1 illustrates an example system 100. System 100 may include a processor 110, graphics processor 120, graphics memory 130, programmable hardware 140, and frame buffer 150. In some implementations, one or more components 120-150 may be included in a physically separate graphics card connected to the processor 110 via a data bus. In some implementations, components 120-150 may be disposed on a common circuit board (eg, motherboard, daughter card, etc.) with component 110. In some implementations, one or more components 120-150 can be part of any portion (eg, core) of the device, and processor 110 can be included in another portion (eg, other core) of the same device. .

프로세서(110)는 범용 프로세서, 전용 프로세서, 및/또는 전용으로 구성된 로직을 포함할 수 있다. 프로세서(110)는 데이터 버스를 통해 그래픽 프로세 서(120)에 그래픽 데이터(예컨대, 상태 벡터)를 분배하도록 배치될 수 있다. 프로세서(110)는 렌더링(rendering), 게임, 그래픽 생성 또는 다른 유형의 그래픽 관련 프로그램과 같은 프로그램의 제어하에서 그래픽 데이터를 전달할 수 있다. 일부 구현예에서, 프로세서(110)는 레거시 그래픽 API와 같은 애플리케이션 프로그래밍 인터페이스(API:application programming interface)를 이용하여 그래픽 정보를 전달할 수 있다. 이 그래픽 정보는 예컨대, 텍스처 환경, 기하학적 데이터 등을 포함할 수 있다.The processor 110 may include general purpose processors, dedicated processors, and / or dedicated logic. Processor 110 may be arranged to distribute graphics data (eg, a state vector) to graphics processor 120 via a data bus. The processor 110 may deliver graphics data under the control of a program, such as rendering, games, graphics generation, or other types of graphics related programs. In some implementations, the processor 110 may communicate graphical information using an application programming interface (API), such as a legacy graphical API. This graphical information may include, for example, texture environments, geometric data, and the like.

그래픽 프로세서(120)는 범용 프로세서, 전용 프로세서, 및/또는 전용으로 구성된 로직을 포함할 수 있다. 그래픽 프로세서(120)는 프로세서(110)로부터 그래픽 데이터를 수신하고, 이 그래픽 데이터를 프로그램가능한 하드웨어(140)에 의해 실행될 프로그램(예컨대, 픽셀 셰이더(pixel shader))으로 변환하도록 배치될 수 있다. 일부 경우에, 그래픽 프로세서(120)는 주로 프로세서(110)로부터 수신된 그래픽 데이터를 사용하여 프로그램을 컴파일할 수 있다.The graphics processor 120 may include general purpose processors, dedicated processors, and / or dedicated logic. The graphics processor 120 may be arranged to receive graphics data from the processor 110 and convert the graphics data into a program (eg, a pixel shader) to be executed by the programmable hardware 140. In some cases, graphics processor 120 may compile a program primarily using graphics data received from processor 110.

일부 경우에, 그래픽 프로세서(120)는 수신된 그래픽 정보를 사용하여, 그래픽 메모리(130)에 저장된 사전컴파일된 프로그램(예컨대, 픽셀 셰이더)을 검색하고 재사용할 수 있다. 이러한 경우에, 그래픽 프로세서(120)는 수신된 그래픽 데이터로부터 서명 또는 다른 인덱스를 생성하여, 메모리(130)에서 이러한 사전컴파일된 프로그램을 빨리 찾도록 돕는다. 새로운 프로그램 생성 또는 이미 생성된 프로그램 사용에 관련된 그래픽 프로세서(120)의 작동은 이하에 더 설명될 것이다.In some cases, graphics processor 120 may use the received graphic information to retrieve and reuse a precompiled program (eg, pixel shader) stored in graphics memory 130. In this case, graphics processor 120 generates a signature or other index from the received graphic data to help quickly find such a precompiled program in memory 130. The operation of the graphics processor 120 related to creating a new program or using an already created program will be further described below.

그래픽 메모리(130)는 그래픽 데이터를 저장하는 저장 장치를 포함할 수 있 다. 그래픽 메모리(130)는 DRAM, DDR RAM 등과 같은 RAM 장치를 포함할 수 있다. 그래픽 프로세서에 접속되는 것으로 도시되었지만, 일부 구현예에서, 그래픽 메모리(130)는 하나 이상의 프로세서(110) 및 프로그램가능한 하드웨어(140)(에/에 의해 적어도 직접 기록가능/판독가능하게) 접속될 수 있다.The graphic memory 130 may include a storage device for storing graphic data. The graphics memory 130 may include a RAM device such as DRAM, DDR RAM, or the like. Although shown as being connected to a graphics processor, in some implementations, graphics memory 130 may be connected to (at least directly writeable / readable by) at least one processor 110 and programmable hardware 140. have.

그래픽 메모리(130)는 프로세서(110) 및 그래픽 프로세서(120)로부터 그래픽 데이터 및/또는 프로그램을 수신하고 저장할 수 있다. 그래픽 데이터를 저장하는 것 외에, 그래픽 메모리(130)는 이러한 그래픽 데이터 및/또는 프로그램과 관련된 인덱스 및/또는 서명 리스트도 저장하여, 특정 정보(예컨대, 특정 픽셀 셰이더 프로그램)의 존재 여부를 신속하게 체크하는 것을 가능하게 한다.The graphics memory 130 may receive and store graphics data and / or programs from the processor 110 and the graphics processor 120. In addition to storing graphics data, graphics memory 130 also stores indexes and / or signature lists associated with such graphics data and / or programs to quickly check for the presence of specific information (eg, specific pixel shader programs). Makes it possible to do

프로그램가능한 하드웨어(140)는 수신된 프로그램(예컨대, 픽셀 셰이더)에 기초하여 그래픽 데이터에서 소정의 그래픽 렌더링 동작을 수행하도록 배치될 수 있다. 이러한 동작은 래스터화 그래픽 데이터(rasterized graphical data)에서 수행될 수 있고, 텍스처링, 색 합산, 안개 추가, 점화법 등의 일부 조합을 포함할 수 있다. 프로그램가능한 하드웨어(140)는 예컨대, 레거시 고정 함수를 실행하기 위해 그래픽 프로세서(120)로부터 이러한 프로그램을 수신할 수 있다. 일부 구현예에서, 프로그램가능한 하드웨어(140)는 메모리(130) 내에 프로그램 어드레스를 수신할 수 있고, 메모리(130)로부터 직접 이 프로그램을 판독할 수 있다.Programmable hardware 140 may be arranged to perform certain graphic rendering operations on the graphic data based on the received program (eg, pixel shader). This operation may be performed on rasterized graphical data and may include some combination of texturing, color summing, fog addition, ignition, and the like. Programmable hardware 140 may receive such a program from graphics processor 120, for example, to execute a legacy fixed function. In some implementations, programmable hardware 140 can receive a program address in memory 130 and read this program directly from memory 130.

프레임 버퍼(150)는 프로그램가능한 하드웨어(140)로부터 처리된 데이터를 수신하고 (필요하다면) 디스플레이하기 전에 그 데이터를 버퍼링하도록 배치될 수 있다. 프레임 버퍼(150)는 그래픽 프로세서(120)의 제어하에서 가능하게, 디스플 레이 또는 디스플레이 인터페이스로 데이터를 출력할 수도 있다. 관련된 디스플레이(도시 생략)는 텔레비전, 모니터, 프로젝터, 또는 비디오 및/또는 그래픽과 같은 그래픽 정보를 디스플레이하기에 적합한 다른 장치를 포함할 수 있다. 이러한 디스플레이는 CRT(cathode ray tube), LCD(liquid crystal display), 플라스마 및/또는 프로젝션형 기술을 포함하는 다수의 디스플레이용 기술을 이용할 수 있다.Frame buffer 150 may be arranged to receive processed data from programmable hardware 140 and to buffer the data before displaying it (if necessary). The frame buffer 150 may output data to a display or display interface, possibly under the control of the graphic processor 120. Associated displays (not shown) may include televisions, monitors, projectors, or other devices suitable for displaying graphical information such as video and / or graphics. Such displays may utilize a number of display technologies, including cathode ray tubes (CRTs), liquid crystal displays (LCDs), plasma and / or projection technologies.

도 2는 그래픽 데이터의 프로세싱을 도시하는 흐름도(200)이다. 프로세스(200)는 쉽게 설명하기 위해 시스템(100)에 관하여 설명될 수 있지만, 청구된 발명이 반드시 이러한 점으로 제한되는 것은 아니다. 일부 구현예에서, 프로세스(200)는 현재의 텍스처 환경의 일부 양상이 변하는 경우에만 수행될 수 있다. 일부 구현예에서, 프로세스(200)는 레거시 API가 사용되고, 현재의 텍스처링 방식의 일부 양상이 변하는 경우에만 수행될 수 있다.2 is a flow chart 200 illustrating the processing of graphical data. Process 200 may be described with respect to system 100 for ease of explanation, but the claimed invention is not necessarily limited in this respect. In some implementations, process 200 may only be performed if some aspect of the current texture environment changes. In some implementations, process 200 can only be performed when legacy APIs are used and some aspects of current texturing schemes change.

프로세싱은 그래픽 프로세서(120)가 프로세서(110)로부터 그래픽 데이터(일부 구현예에서는 상태 벡터)를 수신하는 것으로 시작할 수 있다. 그래픽 프로세서(120)는 수신된 상태 벡터에 대한 서명을 생성할 수 있다[실행 210]. 일부 구현예에서, 이 서명은 예컨대, 텍스처 환경(들), 안개, 색 합산 정보 등을 포함하는 상태 벡터의 단축 및/또는 압축된 버전일 수 있다. 이러한 압축된 상태 벡터 서명은 상태 벡터에 대해 텍스처 당 수십 개의 바이트 대신에 텍스처 유닛 당 몇 개의 바이트만 포함할 수 있다. 일부 구현예에서, 서명은 해시(hash), 체크섬(checksum) 또는 주어진 그래픽 데이터 부분에 대해 비교적 빠르게 생성하는 다른 알려진 식별 방법일 수 있다. 이러한 해싱은 상태 벡터 또는 압축된 상태 벡터 버전에서 그래픽 프로세서(120)에 의해 수행될 수 있다.Processing may begin with graphics processor 120 receiving graphics data (state vector in some implementations) from processor 110. Graphics processor 120 may generate a signature for the received state vector (execution 210). In some implementations, this signature can be a shortened and / or compressed version of a state vector including, for example, texture environment (s), fog, color summation information, and the like. Such a compressed state vector signature may contain only a few bytes per texture unit instead of tens of bytes per texture for the state vector. In some implementations, the signature can be a hash, checksum or other known identification method that generates relatively quickly for a given piece of graphical data. This hashing may be performed by graphics processor 120 in a state vector or compressed state vector version.

프로세싱은 그래픽 프로세서(120)가 실행(210)에서 생성된 서명과 일치하는 기존의 서명에 대한 메모리(130)를 체킹하는 것으로 계속될 수 있다[실행 220]. 메모리(130) 내에 기존의 서명이 존재한다는 것은 수신된 상태 벡터에 대응하는 사전컴파일된 프로그램(예컨대, 픽셀 셰이더)이 메모리(130)에서 이용가능하다는 것을 나타낼 수 있다.Processing may continue with graphics processor 120 checking memory 130 for an existing signature that matches the signature generated at execution 210 (execution 220). The presence of an existing signature in memory 130 may indicate that a precompiled program (eg, pixel shader) corresponding to the received state vector is available in memory 130.

어떠한 서명 일치도 (및 따라서 어떠한 사전컴파일된 셰이더도) 발견되지 않는 경우에[실행 230], 그래픽 프로세서(120)는 수신된 상태 벡터에 대응하는 픽셀 셰이더 프로그램을 컴파일할 수 있다[실행 240]. 이러한 새로운 픽셀 셰이더는 주어진 그래픽 애플리케이션에서 이전에 발생하지 않았던 레거시 고정 함수에 대응할 수 있다.If no signature match (and thus no precompiled shader) is found [execution 230], graphics processor 120 may compile a pixel shader program corresponding to the received state vector [execution 240]. This new pixel shader can correspond to legacy fixed functions that have not previously occurred in a given graphics application.

이와 같이, 그래픽 프로세서(120)는 이후에 재사용 가능하도록 그래픽 메모리(130)에 새로운 픽셀 셰이더를 저장할 수 있다[실행 250]. 실행(250)에서, 그래픽 프로세서는 실행(210)에서 생성된 관련 서명도 저장할 수 있으므로, 새로운 픽셀 셰이더는 이후의 실행(220)에서 발견될 수 있다.As such, graphics processor 120 may store the new pixel shader in graphics memory 130 for later reuse (execution 250). At run 250, the graphics processor may also store the associated signature generated at run 210, so that a new pixel shader may be found at a later run 220.

프로세싱은 그래픽 프로세서(120)가 다른 프로세싱을 위해 픽셀 셰이더를 프로그램가능한 하드웨어(140)로 리턴하는 것으로 종료할 수 있다[실행 260]. 일부 구현예(예컨대, 실행(250)이 이미 수행된 경우)에서, 프로세서(120)는 메모리(130) 내의 셰이더 어드레스를 프로그램가능한 하드웨어(140)로 전달할 수 있다. 이어서 프로그램가능한 하드웨어(140)는 적절한 시기에 그 어드레스에서 프로그램을 실행 할 수 있다. 일부 구현예에서, 프로세서(120)는 픽셀 셰이더 프로그램을 프로그램가능한 하드웨어(140)에 직접 전달하여, 실행(250 및 260)이 동시에 수행되는 것을 가능하게 할 수도 있다.Processing may end with graphics processor 120 returning the pixel shader to programmable hardware 140 for further processing (execution 260). In some implementations (eg, if execution 250 has already been performed), processor 120 can pass the shader address in memory 130 to programmable hardware 140. Programmable hardware 140 may then execute the program at that address at a suitable time. In some implementations, the processor 120 may deliver the pixel shader program directly to the programmable hardware 140 to enable the executions 250 and 260 to be performed simultaneously.

실행(220)으로 돌아가면, 일치하는 서명 (및 적절한 사전컴파일된 셰이더)이 메모리(130)에서 발견되는 경우에[실행 230], 그래픽 프로세서(120)는 다른 프로세싱을 위해 사전컴파일된 픽셀 셰이더를 프로그램가능한 하드웨어(140)로 리턴할 수 있다[실행 260]. 이러한 사전컴파일된 픽셀 셰이더는 주어진 그래픽 애플리케이션에서 이전에 발생하였던 레거시 고정 함수에 대응할 수 있고, 재사용될 수 있다. 이러한 픽셀 셰이더의 재사용은 텍스처 환경의 모든 변화마다 이전에 직면하였던 픽셀 셰이더를 재컴파일하는 리소스 사용을 방지할 수 있다.Returning to execution 220, if a matching signature (and an appropriate precompiled shader) is found in memory 130 [execution 230], graphics processor 120 may execute the precompiled pixel shader for other processing. Return to programmable hardware 140 (execution 260). Such precompiled pixel shaders may correspond to legacy fixed functions that previously occurred in a given graphics application and may be reused. This reuse of pixel shaders can prevent the use of resources to recompile the pixel shaders previously encountered for every change in the texture environment.

하나 이상의 구현예에 대한 이상의 기술은 예시 및 설명을 제공하지만, 본 발명의 범주를 개시된 바로 그 형태로 제한하려는 것은 아니다. 이상의 교시로 보아 변경 및 수정이 가능하고, 이는 본 발명의 다양한 구현예를 실시함으로써 달성될 수 있다.The above description of one or more embodiments provides illustrations and descriptions, but is not intended to limit the scope of the invention to the precise forms disclosed. Modifications and variations are possible in light of the above teachings, which may be accomplished by practicing various embodiments of the invention.

예컨대, 본 명세서에 설명된 셰이더 재사용 방식은 주로 레거시 API에 관하여 설명되었지만, 이러한 방식은 불필요한 재컴파일을 방지하기 위해 임의의 개수의 그래픽 API 및 이들의 조합으로도 사용될 수 있다.For example, the shader reuse schemes described herein have been described primarily with respect to legacy APIs, but these schemes can also be used with any number of graphical APIs and combinations thereof to prevent unnecessary recompilation.

또한, 도 2의 실행이 도시된 순서대로 구현될 필요는 없으며, 반드시 모든 실행이 수행될 필요가 있는 것도 아니다. 또한, 다른 실행에 의존하지 않는 이들 실행은 다른 실행과 병렬식으로 수행될 수 있다. 또한, 이 도면에서 실행 중 적어 도 일부는 머신-판독가능한 기록 매체에서 실행되는 인스트럭션, 또는 인스트럭션 그룹으로서 구현될 수 있다.In addition, the execution of FIG. 2 need not be implemented in the order shown, nor do all necessarily need to be performed. Also, those runs that do not depend on other runs can be performed in parallel with the other runs. Further, at least some of the executions in this figure may be implemented as instructions or groups of instructions executed on a machine-readable recording medium.

본 애플리케이션의 기술에서 사용된 어떠한 구성요소, 실행 또는 인스트럭션도 그 자체로서 명백하게 설명되지 않는 한, 본 발명에 대해 중요하거나 필수적인 것으로 해석되어서는 안 된다. 또한, 본 명세서에서 사용된 관사 "하나의"는 하나 이상의 항목을 포함하는 것이다. 본 발명의 사상 및 이론을 실질적으로 벗어나지 않으면서 청구된 발명의 상술한 구현예(들)를 변경 및 수정할 수 있다. 이러한 모든 변경 및 수정은 본 개시내용의 범주 내에 포함되며 후속하는 특허청구범위에 의해 보호된다.Any component, implementation or instruction used in the description of the present application should not be construed as important or essential to the invention unless explicitly described as such. Also, as used herein, the article “a” includes one or more items. Modifications and variations may be made in the above-described embodiment (s) of the claimed invention without departing substantially from the spirit and theory of the invention. All such changes and modifications are intended to be included within the scope of this disclosure and protected by the following claims.

Claims (18)

텍스처 정보(texture information)를 수신하는 단계와,Receiving texture information; 상기 텍스처 정보에 대응하는 사전컴파일된 셰이더(shader)가 존재하는지를 판단하는 단계와,Determining whether a precompiled shader corresponding to the texture information exists; 상기 텍스처 정보에 대응하는 상기 사전컴파일된 셰이더가 존재하지 않으면 상기 텍스처 정보에 기초하여 새로운 셰이더를 컴파일하는 단계와,Compiling a new shader based on the texture information if the precompiled shader corresponding to the texture information does not exist; 상기 텍스처 정보에 대응하는 상기 사전컴파일된 셰이더가 존재하면 상기 사전컴파일된 셰이더를 사용하는 단계를 포함하는Using the precompiled shader if the precompiled shader corresponding to the texture information exists. 방법.Way. 제 1 항에 있어서,The method of claim 1, 상기 판단하는 단계는,The determining step, 상기 텍스처 정보에 관련된 서명(signature)을 생성하는 단계와,Generating a signature related to the texture information; 상기 서명이 메모리에 이미 존재하는지를 체크하는 단계를 포함하는Checking whether the signature already exists in memory; 방법.Way. 제 2 항에 있어서,The method of claim 2, 상기 서명이 상기 메모리에 아직 존재하지 않는다고 판단하면 상기 체크하는 단계는 상기 서명 및 상기 새로운 셰이더를 저장하는 단계를 더 포함하는If it is determined that the signature does not yet exist in the memory, the checking further comprises storing the signature and the new shader. 방법.Way. 제 2 항에 있어서,The method of claim 2, 상기 생성하는 단계는 상기 테스처 정보를 압축하여 상기 서명을 생성하는 단계를 포함하는The generating may include compressing the test information to generate the signature. 방법.Way. 제 1 항에 있어서,The method of claim 1, 상기 텍스처 정보는 애플리케이션 프로그래밍 인터페이스(API:applicatioon programming interface)에 포함되는The texture information is included in an application programming interface (API). 방법.Way. 텍스처링 프로그램을 저장하는 메모리와,Memory for storing texturing programs, 텍스처링 프로그램을 실행하는 프로그램가능한 하드웨어와,Programmable hardware to execute texturing programs, 텍스처 정보를 수신하고, 상기 텍스처 정보에 대응하는 텍스처링 프로그램에 대한 메모리를 체크하며, 상기 메모리에서 상기 텍스처 정보에 대응하는 텍스처링 프로그램이 발견되면 상기 프로그램가능한 하드웨어를 상기 텍스처 정보에 대응하는 상기 텍스처 프로그램으로 지시하는 프로세서를 포함하는Receive texture information, check a memory for a texturing program corresponding to the texture information, and if a texturing program corresponding to the texture information is found in the memory, transfer the programmable hardware to the texture program corresponding to the texture information. Including a processor to indicate 시스템.system. 제 6 항에 있어서,The method of claim 6, 상기 텍스처 정보에 대응하는 상기 텍스처링 프로그램이 상기 메모리에서 발견되지 않으면, 상기 프로세서는 상기 텍스처 정보를 새로운 텍스처링 프로그램으로 컴파일하도록 구성되는If the texturing program corresponding to the texture information is not found in the memory, the processor is configured to compile the texture information into a new texturing program. 시스템.system. 제 7 항에 있어서,The method of claim 7, wherein 상기 프로세서는 상기 메모리에 상기 새로운 텍스처링 프로그램을 저장하고, 상기 프로그램가능한 하드웨어를 상기 새로운 텍스처링 프로그램으로 지시하도록 또한 구성되는The processor is further configured to store the new texturing program in the memory and direct the programmable hardware to the new texturing program. 시스템.system. 제 8 항에 있어서,The method of claim 8, 상기 프로세서는 상기 새로운 텍스처링 프로그램에 대응하는 서명을 생성하고, 상기 서명을 상기 메모리에 저장하도록 또한 구성되는The processor is further configured to generate a signature corresponding to the new texturing program and to store the signature in the memory. 시스템.system. 제 6 항에 있어서,The method of claim 6, 상기 프로세서는 상기 텍스처 정보로부터 서명을 생성하고, 상기 서명을 사용하여 상기 텍스처 정보에 대응하는 상기 텍스처링 프로그램이 대한 상기 메모리를 체크하도록 구성되는The processor is configured to generate a signature from the texture information and use the signature to check the memory for the texturing program corresponding to the texture information. 시스템.system. 제 6 항에 있어서,The method of claim 6, API 내의 텍스처 정보를 상기 프로세서로 전달하는 다른 프로세서를 더 포함하는It further includes another processor for passing texture information in the API to the processor 시스템.system. 인스트럭션을 포함하는 머신-액세스가능 기록 매체에 있어서,A machine-accessible recording medium comprising instructions, comprising: 실행될 때, 상기 인스트럭션은 머신으로 하여금,When executed, the instruction causes the machine to: 수신된 그래픽 API로부터 서명을 생성하게 하고,Generate a signature from the received graphics API, 상기 서명에 기초하여 메모리가 상기 그래픽 API에 대응하는 픽셀 셰이더 프로그램을 포함하는지를 판단하게 하며,Determine whether the memory includes a pixel shader program corresponding to the graphics API based on the signature, 상기 메모리가 상기 픽셀 셰이더 프로그램을 포함하면, 프로그램가능한 하드웨어가 상기 그래픽 API에 대응하는 상기 픽셀 셰이더 프로그램을 실행하도록 지시하게 하고,If the memory includes the pixel shader program, direct programmable hardware to execute the pixel shader program corresponding to the graphics API, 상기 메모리가 상기 그래픽 API에 대응하는 상기 픽셀 셰이더 프로그램을 포함하지 않으면, 상기 그래픽 API에 기초하여 새로운 픽셀 셰이더 프로그램을 컴파일하게 하는If the memory does not include the pixel shader program corresponding to the graphics API, causing a new pixel shader program to be compiled based on the graphics API 머신-액세스가능 기록 매체.Machine-accessible recording medium. 제 12 항에 있어서,The method of claim 12, 실행될 때, 상기 머신으로 하여금,When running, causes the machine to 상기 메모리에 상기 새로운 픽셀 셰이더 프로그램을 저장하게 하는 인스트럭션을 더 포함하는And instructions for storing the new pixel shader program in the memory. 머신-액세스가능 기록 매체.Machine-accessible recording medium. 제 12 항에 있어서,The method of claim 12, 실행될 때, 상기 머신으로 하여금,When running, causes the machine to 상기 메모리가 상기 그래픽 API에 대응하는 상기 픽셀 셰이더 프로그램을 포함하지 않으면 상기 프로그램가능한 하드웨어가 상기 새로운 픽셀 셰이더 프로그램을 실행하도록 지시하게 하는 인스트럭션을 더 포함하는And instructing the programmable hardware to execute the new pixel shader program if the memory does not include the pixel shader program corresponding to the graphics API. 머신-액세스가능 기록 매체.Machine-accessible recording medium. 새로운 텍스처 환경을 수용하는 단계와,To accommodate the new texture environment, 상기 새로운 텍스처 환경에 대응하는 새로운 서명을 생성하는 단계와,Generating a new signature corresponding to the new texture environment; 상기 새로운 서명에 대응하는 저장된 서명에 대한 메모리를 체크하는 단계와,Checking a memory for a stored signature corresponding to the new signature; 상기 메모리가 상기 저장된 서명을 포함하면 상기 저장된 서명에 대응하는 저장된 픽셀 셰이더로 하드웨어를 프로그래밍하는 단계를 포함하는Programming the hardware with a stored pixel shader corresponding to the stored signature if the memory includes the stored signature. 방법.Way. 제 15 항에 있어서,The method of claim 15, 상기 메모리가 상기 저장된 서명을 포함하지 않으면 상기 새로운 텍스처 환 경에 대응하는 새로운 픽셀 셰이더를 생성하는 단계를 더 포함하는Generating a new pixel shader corresponding to the new texture environment if the memory does not include the stored signature. 방법.Way. 제 16 항에 있어서,The method of claim 16, 상기 메모리에 상기 새로운 픽셀 셰이더와 상기 새로운 서명을 저장하는 단계를 더 포함하는Storing the new pixel shader and the new signature in the memory. 방법.Way. 제 16 항에 있어서,The method of claim 16, 상기 새로운 픽셀 셰이더로 상기 하드웨어를 프로그래밍하는 단계를 더 포함하는Programming the hardware with the new pixel shader. 방법.Way.
KR1020077003576A 2004-07-15 2005-07-08 Legacy processing for pixel shader hardware KR20070032387A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020077003576A KR20070032387A (en) 2004-07-15 2005-07-08 Legacy processing for pixel shader hardware

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/892,535 2004-07-15
KR1020077003576A KR20070032387A (en) 2004-07-15 2005-07-08 Legacy processing for pixel shader hardware

Publications (1)

Publication Number Publication Date
KR20070032387A true KR20070032387A (en) 2007-03-21

Family

ID=43656375

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077003576A KR20070032387A (en) 2004-07-15 2005-07-08 Legacy processing for pixel shader hardware

Country Status (1)

Country Link
KR (1) KR20070032387A (en)

Similar Documents

Publication Publication Date Title
JP4546526B2 (en) Legacy processing for pixel shader hardware
US20200410629A1 (en) Systems and methods for using an opengl api with a vulkan graphics driver
TWI272537B (en) Method and apparatus for compressing and decompressing instructions in a computer system
US8379022B2 (en) Fragment shader for a hybrid raytracing system and method of operation
US9275491B2 (en) GPU work creation and stateless graphics in OPENGL
US7548244B2 (en) Interactive debugging and monitoring of shader programs executing on a graphics processor
US9245371B2 (en) Global stores and atomic operations
US20180232846A1 (en) Dynamic shader instruction nullification for graphics processing
US20150348224A1 (en) Graphics Pipeline State Object And Model
CN108701022B (en) Unified assertion in shader for graphics processing unit
US20200020067A1 (en) Concurrent binning and rendering
US20160086340A1 (en) Rendering apparatus and method
CN113342703B (en) Rendering effect real-time debugging method and device, development equipment and storage medium
KR20230073222A (en) Depth buffer pre-pass
US20230290034A1 (en) Fast incremental shared constants
CN109074625B (en) Prefixes for each shader of graphics processing
KR20070032387A (en) Legacy processing for pixel shader hardware
US7924290B2 (en) Method and system for processing texture samples with programmable offset positions
US7987065B1 (en) Automatic quality testing of multimedia rendering by software drivers
US20240046543A1 (en) Runtime mechanism to optimize shader execution flow
CN117008924A (en) Compiling processing method and device and communication equipment
US20170053429A1 (en) Methods for programmable a primitive setup in a 3d graphics pipeline and apparatuses using the same
Kim et al. Development of a Frame Buffer Driver for Embedded Linux Graphic System

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
J201 Request for trial against refusal decision
E801 Decision on dismissal of amendment
B601 Maintenance of original decision after re-examination before a trial
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20081126

Effective date: 20100212