KR102561042B1 - Data processing systems - Google Patents

Data processing systems Download PDF

Info

Publication number
KR102561042B1
KR102561042B1 KR1020180023413A KR20180023413A KR102561042B1 KR 102561042 B1 KR102561042 B1 KR 102561042B1 KR 1020180023413 A KR1020180023413 A KR 1020180023413A KR 20180023413 A KR20180023413 A KR 20180023413A KR 102561042 B1 KR102561042 B1 KR 102561042B1
Authority
KR
South Korea
Prior art keywords
data
input surface
stage
input
display
Prior art date
Application number
KR1020180023413A
Other languages
Korean (ko)
Other versions
KR20180100486A (en
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 KR20180100486A publication Critical patent/KR20180100486A/en
Application granted granted Critical
Publication of KR102561042B1 publication Critical patent/KR102561042B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • 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
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/017Head mounted
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/0093Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00 with means for monitoring data relating to the user, e.g. head-tracking, eye-tracking
    • 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • 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/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/012Head tracking input arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/18Image warping, e.g. rearranging pixels individually
    • 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
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/0101Head-up displays characterised by optical features
    • G02B2027/0112Head-up displays characterised by optical features comprising device for genereting colour display
    • G02B2027/0116Head-up displays characterised by optical features comprising device for genereting colour display comprising devices for correcting chromatic aberration
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/0101Head-up displays characterised by optical features
    • G02B2027/014Head-up displays characterised by optical features comprising information/image processing systems
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/0179Display position adjusting means not related to the information to be displayed
    • G02B2027/0187Display position adjusting means not related to the information to be displayed slaved to motion of at least a part of the body of the user, e.g. head, eye
    • 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/04Changes in size, position or resolution of an image
    • G09G2340/0464Positioning
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2354/00Aspects of interface with display user
    • 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/391Resolution modifying circuits, e.g. variable screen formats
    • 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/395Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Optics & Photonics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computer Graphics (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

데이터 처리 시스템에서의 디스플레이 컨트롤러(93)는 디스플레이 패널(94)로의 제공을 위하여 그래픽 프로세서(GPU)(91)에 의해 생성되는 렌더링된 프레임(92)의 시간 워프(time warp) 처리를 수행하도록 동작 가능한 시간 워프 모듈(변환 스테이지)(100)을 포함한다. 시간 워프 모듈(변환 스테이지)(100)은 디스플레이(94)에서의 디스플레이를 위한 출력 변환된 표면으로서 입력 표면의 적합하게 "시간 워프된" 변환된 버전을 제공하기 위하여 수신된 시야 방위(view orientation) 데이터에 기초하여 디스플레이 컨트롤러(93)에 의해 판독된 입력 표면(surface)(92)을 변환하도록 동작한다.The display controller 93 in the data processing system operates to perform time warp processing of the rendered frame 92 generated by the graphics processor (GPU) 91 for presentation to the display panel 94. A possible time warp module (transformation stage) 100 is included. Time warp module (transformation stage) 100 uses the received view orientation to provide a suitable "time warped" transformed version of the input surface as an output transformed surface for display on display 94. It operates to transform the input surface 92 read by the display controller 93 based on the data.

Description

데이터 처리 시스템{DATA PROCESSING SYSTEMS}Data processing system {DATA PROCESSING SYSTEMS}

본 발명은 데이터 처리 시스템에 관한 것으로, 더욱 상세하게는 디스플레이에 이미지를 디스플레이하는 데이터 처리 시스템의 동작에 관한 것이다.The present invention relates to data processing systems and, more particularly, to the operation of data processing systems for displaying images on a display.

도 1은 중앙 처리 유닛(central processing unit(CPU))(7)을 포함하는 호스트 프로세서, 그래픽 처리 유닛(graphics processing unit(GPU))(2), 비디오 코덱(1), 디스플레이 컨트롤러(5) 및 메모리 컨트롤러(8)를 포함하는 예시적인 데이터 처리 시스템을 도시한다. 도 1에 도시된 바와 같이, 이러한 유닛들은 상호 연결부(9)를 통해 통신하고 오프 칩(off-chip) 메모리(3)에 액세스한다. 이 시스템에서, GPU(2), 비디오 코덱(1) 및/또는 CPU(7)는 디스플레이될 프레임(이미지)을 생성하고, 그 다음 디스플레이 컨트롤러(5)는 디스플레이를 위하여 디스플레이(4)에 프레임을 제공한다.1 shows a host processor including a central processing unit (CPU) 7, a graphics processing unit (GPU) 2, a video codec 1, a display controller 5 and An exemplary data processing system including a memory controller 8 is shown. As shown in FIG. 1 , these units communicate via an interconnection 9 and access an off-chip memory 3 . In this system, the GPU 2, the video codec 1 and/or the CPU 7 create frames (images) to be displayed, and then the display controller 5 sends the frames to the display 4 for display. to provide.

이 시스템의 사용에 있어서, 호스트 프로세서(CPU)(7)에서 실행되는 게임과 같은 애플리케이션(10)은, 예를 들어, 디스플레이(4)에서의 프레임의 디스플레이를 필요로 할 것이다. 이를 하기 위하여, 애플리케이션(10)은 적합한 커맨드와 데이터를 CPU(7)에서 실행되는 그래픽 처리 유닛(2)을 위한 드라이버(11)에 제출할 것이다. 그 다음, 드라이버(11)는 그래픽 처리 유닛(2)이 디스플레이를 위하여 적합한 프레임을 렌더링하고, 이러한 프레임을, 예를 들어, 메인 메모리(3)에서의, 적합한 프레임 버퍼에 저장하게 하도록 적합한 커맨드와 데이터를 생성할 것이다. 그 다음, 디스플레이 컨트롤러(5)는 이러한 프레임을 디스플레이를 위하여 버퍼로 읽어들일 것이고, 그 다음에 이는 그로부터 독출되어 디스플레이(4)의 디스플레이 패널에 디스플레이된다.In use of this system, an application 10 such as a game running on the host processor (CPU) 7 will require display of frames on the display 4, for example. To do this, the application 10 will submit appropriate commands and data to the driver 11 for the graphics processing unit 2 running on the CPU 7 . The driver 11 then uses suitable commands and commands to cause the graphics processing unit 2 to render suitable frames for display and to store these frames in suitable frame buffers, for example in main memory 3 . will generate data. The display controller 5 will then read these frames into a buffer for display, which is then read out therefrom and displayed on the display panel of the display 4.

도 9는 이것을 예시하며, 호스트(90)로부터 수신된 커맨드와 데이터에 응답하여 메모리에 저장하는 렌더링된 프레임(92)을 생성하는 GPU(91)를 도시한다. 도 9에 도시된 바와 같이, 렌더링된 프레임(92)은 그 다음 이어서 디스플레이 컨트롤러(5)에 의해 판독되고 디스플레이를 위하여 디스플레이 패널(94)에 제공된다.9 illustrates this, showing GPU 91 generating rendered frames 92 which it stores in memory in response to commands and data received from host 90 . As shown in Fig. 9, the rendered frame 92 is then subsequently read by the display controller 5 and provided to the display panel 94 for display.

도 1에 예시된 것과 같은 데이터 처리 시스템의 사용의 일례는 가상 현실(virtual reality(VR)) 헤드 마운트 디스플레이(head mounted display(HMD)) 시스템을 제공하는 것이다. (이 경우에, 디스플레이(4)는 동일한 종류의 헤드 마운트 디스플레이일 것이다.)One example of the use of a data processing system as illustrated in FIG. 1 is to provide a virtual reality (VR) head mounted display (HMD) system. (In this case, display 4 would be a head mounted display of the same type.)

헤드 마운트 가상 현실 디스플레이 동작에서, 각각의 눈에 디스플레이될 적합한 이미지가, 가상 현실 디스플레이를 필요로 하는 (예를 들어, CPU(7)에서 실행되는) 게임과 같은 애플리케이션으로부터의 적합한 커맨드와 데이터에 응답하여, 그래픽 처리 유닛(2)에 의해 렌더링될 것이다. GPU(2)는, 예를 들어, 초당 30 프레임과 같은, 디스플레이의 리프레시 레이트(refresh rate)와 일치하는 레이트로 디스플레이되도록 이미지를 렌더링할 것이다.In head-mounted virtual reality display operation, appropriate images to be displayed in each eye respond to appropriate commands and data from applications such as games (e.g., running on CPU 7) that require the virtual reality display. and will be rendered by the graphics processing unit 2. The GPU 2 will render the image for display at a rate that matches the refresh rate of the display, such as 30 frames per second, for example.

이러한 방식에서, 시스템은 또한 사용자의 머리/시선(gaze)의 움직임을 트래킹하도록 동작할 것이다(이른바 머리 포즈 트래킹). 그 다음, 이러한 머리 방위(orientation)(포즈) 데이터는 이미지가 현재 머리 위치(시야 방향(view direction))를 위하여 사용자에게 실제로 어떻게 디스플레이되어야 하는지를 판단하는데 사용되고, 시야(view)의 사용자의 현재 방향에 기초하여 적합한 이미지가 디스플레이될 수 있도록 이미지(프레임)는 이에 따라 렌더링된다(예를 들어, 머리 방위 데이터에 기초하여 카메라(뷰포인트) 방위를 설정함으로써).In this way, the system will also work to track the movement of the user's head/gaze (so-called head pose tracking). This head orientation (pose) data is then used to determine how the image should actually be displayed to the user for the current head position (view direction), relative to the user's current direction of view. The image (frame) is rendered accordingly (eg, by setting the camera (viewpoint) orientation based on the head orientation data) so that an appropriate image based thereon can be displayed.

VR 시스템에서 디스플레이될 프레임을 렌더링하는 초기에는 머리 방위(포즈)를 간단하게 결정할 수 있지만, 렌더링 처리에서의 지연(latency) 때문에, 프레임의 렌더링 시작에서의 머리 방위(포즈)의 감지와 프레임이 실제로 디스플레이되는(디스플레이 패널에 스캐닝되는) 시간 사이에 사용자의 머리 방위(포즈)가 변경될 수 있다.In the VR system, the head orientation (pose) can be determined simply at the beginning of rendering the frame to be displayed, but because of the latency in the rendering process, the detection of the head orientation (pose) at the start of rendering of the frame and the frame actually The orientation (pose) of the user's head may be changed between times of display (scanning on the display panel).

이를 허용하기 위하여, "시간 워프(time warp)"로 알려진 프로세스가 가상 현실 헤드 마운트 디스플레이 시스템에 대하여 제안되었다. 이 프로세스에서, 디스플레이될 프레임은 프레임의 렌더링 시작에서 감지된 머리 방위 데이터에 기초하여 렌더링되지만, 프레임이 실제로 디스플레이되기 전에, 추가 머리 방위(포즈) 데이터가 감지되고, 그 다음, 그 업데이트된 머리 포즈 센서 데이터가 업데이트된 머리 방위(포즈) 데이터를 고려하는 원본 프레임의 "업데이트된" 버전을 렌더링하는데 사용된다. 그 다음, 프레임의 "업데이트된" 버전이 디스플레이된다. 이것은 디스플레이에 디스플레이된 이미지가 사용자의 가장 최근의 머리 방위와 더욱 밀접하게 일치하게 한다.To allow for this, a process known as “time warp” has been proposed for virtual reality head mounted display systems. In this process, a frame to be displayed is rendered based on head orientation data detected at the start of rendering of the frame, but before the frame is actually displayed, additional head orientation (pose) data is detected, and then the head pose is updated. The sensor data is used to render an "updated" version of the original frame that takes into account the updated head orientation (pose) data. An "updated" version of the frame is then displayed. This allows the image displayed on the display to more closely match the user's most recent head orientation.

이 처리를 하기 위하여, 초기의 "애플리케이션" 프레임은 메모리 내의 적합한 버퍼로 렌더링되지만, 그 다음, 사용자에게 디스플레이될 프레임을 제공하기 위하여 가장 최근의 머리 방위를 고려하는 초기에 렌더링된 프레임의 버전을 렌더링하도록, 초기의 애플리케이션 프레임을 메모리에서 취하여 가장 최근의 머리 방위(포즈)를 이용하는 제2의 렌더링 프로세스가 있다. 이것은 통상적으로 머리 방위(포즈) 데이터에 기초하여 초기 프레임에 대한 일부 형태의 변환(transformation)을 수행하는 것을 포함한다. 실제로 디스플레이되는 이렇게 "시간 워프" 렌더링된 프레임은 그 다음에 디스플레이 컨트롤러에 의한 디스플레이를 위하여 독출되는 메모리 내의 추가 버퍼 또는 버퍼들에 기록된다.To do this, an initial "application" frame is rendered into an appropriate buffer in memory, but then a version of the initially rendered frame that takes into account the most recent head orientation is rendered to present the frame to be displayed to the user. To do this, there is a second rendering process that takes the initial application frame from memory and uses the most recent head orientation (pose). This typically involves performing some form of transformation on the initial frame based on head orientation (pose) data. This "time warp" rendered frame that is actually displayed is then written to an additional buffer or buffers in memory that is read out for display by the display controller.

이러한 양 렌더링 동작은, CPU(7)로부터의 적합한 제어 하에서, 통상적으로 그래픽 처리 유닛(2)에 의해 수행된다. 따라서, 이 처리를 위하여, 그래픽 처리 유닛(2)은 2개의 상이한 렌더링 태스크(task)를 수행할 필요가 있을 것이며, 그 하나는 애플리케이션에 의해 요구되고 명령되는 바에 따라 "애플리케이션" 프레임을 렌더링하기 위한 것이고, 다른 하나는 그 다음에 디스플레이를 위하여 디스플레이 컨트롤러(5)에 의한 독출을 위해 메모리 내의 버퍼로 최장 최근의 머리 방위 데이터에 기초하여 적합하게 이러한 렌더링된 프레임을 "시간 워프" 렌더링하기 위한 것이다.Both of these rendering operations are normally performed by the graphics processing unit 2, under suitable control from the CPU 7. Thus, for this process, graphics processing unit 2 will need to perform two different rendering tasks, one for rendering the "application" frame as requested and commanded by the application. and another to then "time warp" render these rendered frames as appropriate based on the most recent head orientation data into a buffer in memory for reading by the display controller 5 for display.

도 2 및 3은 "시간 워프" 프로세스를 예시한다.2 and 3 illustrate the “time warp” process.

도 2는 시청자가 똑바로 앞으로 있을 때의 예시적인 프레임(20)의 디스플레이와, 사용자의 시야각(viewing angle)이 변화할 때의 그 프레임(21)의 필요한 "시간 워프" 투영을 도시한다. 이 도면으로부터, 그 프레임(21)에 대하여 프레임(20)의 수정된 버전이 디스플레이되어야 하는 것을 알 수 있다.Figure 2 shows the display of an exemplary frame 20 when the viewer is straight ahead, and the necessary "time warp" projection of that frame 21 when the user's viewing angle changes. From this figure it can be seen that for that frame 21 a modified version of frame 20 should be displayed.

도 3은 대응하여 디스플레이를 위한 "시간 워프된(time warped)" 프레임(32)을 제공하기 위한 애플리케이션 프레임(30)의 시간 워프 렌더링(31)을 도시한다. 도 3에 도시된 바와 같이, 랜더링된 주어진 애플리케이션 프레임(30)은 새로운 애플리케이션 프레임이 렌더링되는 것을 기다리는 동안 연속하는 간격(interval)으로 그 애플리케이션 프레임(30)의 적합한 "시간 워프된" 버전(32)을 디스플레이하는 목적으로 2개의 시간 워프 프로세스(31)를 받을 수 있다. 도 3은 또한 머리 위치에 기초하여 사용자에게 프레임을 적합하게 디스플레이하기 위하여 애플리케이션 프레임(30)에 적용되어야 하는 적합한 "시간 워프" 수정을 판단하는데 사용되는 머리 위치(포즈) 데이터의 통상의 샘플링(33)을 도시한다.3 shows a time warped rendering 31 of an application frame 30 to correspondingly provide a “time warped” frame 32 for display. As shown in FIG. 3, a given application frame 30 that has been rendered is sent a suitable "time-warped" version 32 of that application frame 30 at successive intervals while waiting for a new application frame to be rendered. It can receive two time warp processes 31 for the purpose of displaying . Figure 3 also shows a typical sampling 33 of head position (pose) data used to determine the appropriate "time warp" modifications that should be applied to the application frame 30 in order to properly display the frame to the user based on the head position. ) is shown.

출원인은 데이터 처리 시스템에서 가상 현실 디스플레이를 위하여 "시간 워프" 렌더링을 수행하기 위한 개선된 방식에 대한 여지가 있다고 믿는다.Applicants believe that there is room for improved ways to perform “time warp” rendering for virtual reality displays in data processing systems.

본 발명의 제1 양태에 따르면, 데이터 처리 시스템을 위한 디스플레이 컨트롤러가 제공되며, 디스플레이 컨트롤러는, 입력 표면의 데이터를 저장하도록 동작가능한 로컬 입력 버퍼;According to a first aspect of the present invention there is provided a display controller for a data processing system comprising: a local input buffer operable to store data of an input surface;

입력 표면의 데이터를 메모리로부터 상기 로컬 입력 버퍼로 페치하도록 동작 가능한 입력 스테이지;an input stage operable to fetch data of an input surface from memory into the local input buffer;

디스플레이로의 디스플레이를 위하여 출력 표면을 제공하도록 동작 가능한 출력 스테이지; 및an output stage operable to provide an output surface for display on a display; and

상기 입력 표면의 출력 변환된 버전을 제공하기 위해 데이터가 필요한 입력 표면의 데이터 영역을 식별하고, 상기 입력 스테이지가 상기 입력 표면의 식별된 데이터 영역을 상기 메모리로부터 상기 로컬 입력 버퍼로 페치하도록 하고, 상기 입력 표면의 상기 출력 변환된 버전을 출력 변환된 표면으로서 제공하기 위해 수신된 시야 방위(view orientation) 데이터에 기초하여 상기 입력 표면의 데이터를 변환하기 위해 상기 로컬 입력 버퍼로부터의 입력 표면 데이터를 처리하고, 디스플레이로의 디스플레이를 위한 출력 표면으로서 제공하기 위하여 상기 출력 변환된 표면을 상기 출력 스테이지에 제공하도록 동작 가능한 변환 스테이지를 포함한다.identify data regions of the input surface for which data is needed to provide an output transformed version of the input surface, cause the input stage to fetch the identified data regions of the input surface from the memory into the local input buffer, and processing input surface data from the local input buffer to transform data of the input surface based on received view orientation data to provide the output transformed version of the input surface as an output transformed surface; , a conversion stage operable to provide the output transformed surface to the output stage for presentation as an output surface for display to a display.

본 발명의 제2 양태에 따르면, 디스플레이 처리 시스템에서 디스플레이 컨트롤러를 동작시키는 방법이 제공되고, 디스플레이 컨트롤러는, 상기 디스플레이 컨트롤러는, 입력 표면의 데이터를 저장하도록 동작가능한 로컬 입력 버퍼, 입력 표면의 데이터를 메모리로부터 상기 로컬 입력 버퍼로 페치하도록 동작 가능한 입력 스테이지, 수신된 시야 방위(view orientation) 데이터에 기초하여 입력 표면(surface)을 변환하여 상기 입력 표면의 변환된 버전을 출력 변환된 표면으로서 제공하도록 동작 가능한 변환 스테이지를 포함하고, According to a second aspect of the present invention there is provided a method of operating a display controller in a display processing system comprising: a local input buffer operable to store data of an input surface; An input stage operable to fetch from memory into the local input buffer, transform an input surface based on received view orientation data and provide a transformed version of the input surface as an output transformed surface. Include possible transformation stages,

방법은,Way,

삭제delete

상기 디스플레이 컨트롤러의 상기 변환 스테이지가, 상기 입력 표면의 출력 변환된 버전을 제공하기 위해 데이터가 필요하게 되는 상기 입력 표면의 데이터 영역을 식별하고, 상기 입력 표면의 식별된 데이터 영역을 메모리로부터 상기 로컬 입력 버퍼로 페치하고, 상기 입력 표면의 상기 출력 변환된 버전을 출력 변환된 표면으로서 제공하기 위해 수신된 시야 방위 데이터에 기초하여 상기 입력 표면의 데이터를 변환하기 위해 상기 로컬 입력 버퍼로부터의 입력 표면 데이터를 처리하는 단계; 및The conversion stage of the display controller identifies data regions of the input surface for which data is needed to provide an output transformed version of the input surface, and transfers the identified data regions of the input surface from memory to the local input. Input surface data from the local input buffer to fetch into a buffer and transform the data of the input surface based on received viewing orientation data to provide the output transformed version of the input surface as the output transformed surface. processing; and

상기 디스플레이 컨트롤러가, 디스플레이를 위하여 디스플레이로 상기 출력 변환된 표면을 제공하는 단계를 포함한다.providing, by the display controller, the output converted surface to a display for display.

본 발명은 디스플레이를 위한 출력 표면을 디스플레이에 제공하도록 동작 가능한 디스플레이 컨트롤러에 관한 것이다. 종래의 디스플레이 컨트롤러에서와 같이, 본 발명의 디스플레이 컨트롤러는 적어도 하나의 입력 표면(예를 들어, 프레임)을 읽어들이도록 동작 가능한 입력 스테이지와, 디스플레이를 위한 출력 표면(프레임)을 디스플레이 제공하도록 동작 가능한 출력 스테이지를 포함한다. 그러나, 종래의 디스플레이 컨트롤러와는 대조적으로, 본 발명의 디스플레이 컨트롤러는, 수신된 시야 방위 데이터(예를 들어, 그리고 바람직하게는, 머리 위치(포즈) (트래킹) 정보)에 기초하여 입력 표면을 변환하여, 디스플레이를 위한 출력 표면으로서 입력 표면의 변환된 버전을 제공하도록 동작 가능한 변환 스테이지를 더 포함한다.The present invention relates to a display controller operable to provide a display with an output surface for display. As in conventional display controllers, the display controller of the present invention has an input stage operable to read at least one input surface (e.g., a frame), and an input stage operable to provide an output surface (a frame) for display. Include an output stage. However, in contrast to conventional display controllers, the display controller of the present invention transforms the input surface based on received viewing orientation data (e.g., and preferably, head position (pose) (tracking) information). and a transformation stage operable to provide a transformed version of the input surface as an output surface for display.

아래에서 더 논의되는 바와 같이, 변환 스테이지는 본 발명의 디스플레이 컨트롤러가, 예를 들어, 디스플레이를 위하여 "시간 워프된" 프레임을 제공하기 위한 그래픽 처리 유닛에 의하여, 수행될 필요가 있는 이러한 동작 대신에, 입력 표면 자체에 시간 워프 렌더링에 필요한 변환 프로세스를 수행할 수 있다는 것을 의미한다.As discussed further below, the transform stage is an alternative to those operations that need to be performed by the display controller of the present invention, e.g., by a graphics processing unit to provide a “time warped” frame for display. , which means that the input surface itself can perform the transformation process required for temporal warp rendering.

특히, 출원인은, 디스플레이를 위하여 프레임을 처리하기 전에 데이터 처리 시스템의 다른 곳에서(예를 들어, 그래픽 처리 유닛에서) 처리를 먼저 수행하여야 하는 대신에, 디스플레이를 위한 프레임을 제공하기 위하여 디스플레이 처리 동작의 일부로서 디스플레이 컨트롤러에서 디스플레이될 프레임의 시간 워프 변환을 수행하는 것이 가능하다는 것을 인식하였다.In particular, Applicant believes that display processing operations are performed to provide a frame for display, instead of having to first perform processing elsewhere in the data processing system (e.g., in a graphics processing unit) before processing the frame for display. It has been recognized that it is possible to perform a temporal warp transformation of the frame to be displayed in the display controller as part of the

시간 워프된 프레임이 디스플레이되고 있는 동안에 디스플레이 컨트롤러에서 시간 워프 변환 프로세스를 수행하는 것은 다수의 이점을 제공한다. 예를 들어, 이는 애플리케이션 프레임의 "시간 워프" 처리가 GPU에서 수행되어야 하고 디스플레이 컨트롤러에 의해 판독되는 메모리로 기록되어야 하는 것을 방지한다. 이것은 메모리 대역폭, 처리 리소스, 전력 등의 측면에서 상당한 절약을 제공할 수 있다.Performing the time warp conversion process at the display controller while the time warped frame is being displayed provides a number of advantages. For example, this prevents the "time warp" processing of application frames from having to be performed on the GPU and written to memory to be read by the display controller. This can provide significant savings in terms of memory bandwidth, processing resources, and power.

또한, 이는 그래픽 처리 유닛이 디스플레이를 위한 애플리케이션 프레임의 시간 워프 렌더링을 수행하는 필요를 제거하여, 이에 의해, 예를 들어, 그래픽 처리 유닛이 2개의 렌더링 프로세스를 수행(하나는 애플리케이션 프레임을 렌더링하고 다른 하나는 이러한 애플리케이션 프레임의 시간 워프 렌더링을 수행)하게 하는 필요를 방지하고, 이러한 2개의 렌더링 프로세스 사이에서 스위칭하는 필요를 방지한다. 또한, 그래픽 프로세서는 애플리케이션 프레임을 렌더링하기 위하여 독점적으로 사용될 수 있어, 이에 의해 그래픽 프로세서 리소스를 "시간 워프" 동작으로 우회시키는 필요를 제거한다.It also eliminates the need for the graphics processing unit to perform temporal warp rendering of application frames for display, whereby, for example, the graphics processing unit performs two rendering processes (one renders the application frame and the other renders the application frame). One avoids the need to do a temporal warp rendering of these application frames) and avoids the need to switch between these two rendering processes. Additionally, the graphics processor can be used exclusively for rendering application frames, thereby eliminating the need to divert graphics processor resources to a “time warp” operation.

또한, 본 발명은 시간 워프 처리를 위한 변환이 사용자에 대한 프레임의 디스플레이와 더욱 밀접하게 동기화될 수 있어, 사용자에 대한 디스플레이가 사용자의 현재 머리 위치와 매우 밀접하게 정렬될 수 있다.In addition, the present invention allows the transformation for time warp processing to be more closely synchronized with the display of frames to the user, so that the display to the user can be very closely aligned with the user's current head position.

또한, 본 발명은, 디스플레이 스트림이 디스플레이를 위하여 헤드셋에 제공되고 있는 동안에, 가상 현실 헤드셋에서 디스플레이되는 애플리케이션 프레임의 시간 워프 렌더링이, 사실상 실시간으로, 수행되게 할 수 있고, 이에 따라, 예를 들어, 임의의 변화가 이루어질 수 있기 전에 다음 프레임이 디스플레이되는 것을 대기하여야 하는 대신에, 사용자의 머리 움직임에 기초하는 디스플레이된 프레임에 대한 조정이 더 정밀한 해상도로, 예를 들어, 라인별 기반으로, 적용되게 할 수 있다.Further, the present invention allows temporal warp rendering of application frames displayed in a virtual reality headset to be performed, in substantially real time, while the display stream is being provided to the headset for display, thereby, for example: Instead of having to wait for the next frame to be displayed before any changes can be made, adjustments to the displayed frame based on the user's head movement are applied at a finer resolution, eg on a line-by-line basis. can do.

이 모두는 기존의 방식에 비하여 사용자에게 향상된 디스플레이를 제공하는 것을 가능하게 한다.All of this makes it possible to provide an improved display to the user compared to conventional approaches.

변환 스테이지가 변환하는 입력 표면은 임의의 적합하고 원하는 이러한 표면일 수 있다. 바람직하게는, 입력 표면은 디스플레이 컨트롤러가 연관되는 디스플레이에 디스플레이되도록 의도된 입력 표면이다. 바람직한 일 실시예에서, 입력 표면은 디스플레이를 위한 이미지, 예를 들어, 프레임이다.The input surface to which the transformation stage transforms may be any suitable and desired such surface. Preferably, the input surface is an input surface intended to be displayed on a display to which the display controller is associated. In one preferred embodiment, the input surface is an image for display, eg a frame.

바람직한 일 실시예에서, 변환 스테이지가 변환하는 입력 표면은, 게임과 같은 애플리케이션을 위한 디스플레이를 위하여 생성되지만, 초기에 렌더링된 후에 결정된 시야 방위에 기초하여 디스플레이될(예를 들어, 그리고 바람직하게는, "시간 워프" 처리를 받아야 하는) 프레임을 포함한다.In a preferred embodiment, the input surface that the transform stage transforms is created for display for an application such as a game, but initially rendered and then displayed based on the determined viewing orientation (e.g., and preferably, contains frames that must undergo "time warp" processing.

입력 표면(및 각각의 입력 표면)은 각각이 적합한 데이터(예를 들어, 컬러 값 세트)가 저장되는 데이터 요소(샘플링 위치)(예를 들어, 픽셀)의 어레이를 포함할 것이다.The input surface (and each input surface) will contain an array of data elements (sampling locations) (eg pixels), each of which stores suitable data (eg a set of color values).

입력 표면 또는 표면들은 원하는 바에 따라 생성될 수 있다.The input surface or surfaces can be created as desired.

입력 표면(들)은 바람직하게는 디스플레이 컨트롤러가 일부가 되는 데이터 처리 시스템의 그래픽 처리 유닛(그래픽 프로세서)에 의해 생성(렌더링)되지만, 이는, 더하여 또는 대신에, 원한다면, CPU 또는 비디오 프로세서와 같은 전체 데이터 처리 시스템의 다른 컴포넌트 또는 컴포넌트들에 의해 생성되거나 제공될 수 있다.The input surface(s) are preferably created (rendered) by a graphics processing unit (graphics processor) of the data processing system of which the display controller is a part, but which, in addition or instead, is an integral part, such as a CPU or video processor, if desired. It may be created or provided by another component or components of the data processing system.

생성된 입력 표면은, 위에서 논의된 바와 같이, 바람직하게는, 디스플레이 컨트롤러에 의한 처리를 위하여 디스플레이 컨트롤러의 입력 스테이지에 의해 그 다음에 판독되는 메모리 내의, 예를 들어, 프레임 버퍼에 저장된다.The generated input surface is preferably stored, as discussed above, in a memory, for example a frame buffer, which is then read by an input stage of the display controller for processing by the display controller.

입력 표면이 저장되는 메모리는 임의의 적합한 메모리를 포함할 수 있고 임의의 적합하고 원하는 방식으로 구성될 수 있다. 예를 들어, 디스플레이 컨트롤러와 함께 있는 온칩(on-chip) 메모리이거나 또는 외부 메모리일 수 있다. 바람직한 일 실시예에서, 이는 전체 데이터 처리 시스템의 메인 메모리와 같은 외부 메모리이다. 이는 이 목적으로 전용인 메모리일 수 있거나 또는 이는 다른 데이터에 대하여도 사용될 수 있는 메모리의 일부일 수 있다. 바람직한 일 실시예에서, 적어도 하나의 입력 표면이 프레임 버퍼(예를 들어, "눈(eye)" 버퍼)에 저장된다(그리고 그로부터 판독된다).The memory in which the input surface is stored may include any suitable memory and may be configured in any suitable and desired manner. For example, it may be an on-chip memory with the display controller or an external memory. In a preferred embodiment, this is an external memory, such as the main memory of the entire data processing system. It can be a memory dedicated for this purpose or it can be a part of memory that can also be used for other data. In one preferred embodiment, at least one input surface is stored in (and read from) a frame buffer (eg, an “eye” buffer).

디스플레이 컨트롤러의 입력 스테이지는 데이터가 저장되는 메모리로부터 입력 표면의 데이터를 판독하도록 동작 가능한 임의의 적합한 이러한 스테이지를 포함할 수 있다. 바람직한 일 실시예에서, 입력 스테이지는 바람직하게는 입력 표면이 저장되는 메모리로부터 입력 표면의 데이터를 판독하도록 구성된(동작 가능한) 다이렉트 메모리 액세스(Direct Memory Access (DMA)) 판독 컨트롤러를 포함하는 메모리 판독 서브시스템을 포함한다.The input stage of the display controller may include any suitable such stage operable to read data of the input surface from a memory where the data is stored. In one preferred embodiment, the input stage preferably includes a memory read sub comprising a Direct Memory Access (DMA) read controller configured (operable) to read data of the input surface from a memory in which the input surface is stored. contains the system

특히 바람직한 일 실시예에서, 입력 스테이지는 디스플레이 컨트롤러에 의해 처리될 입력 표면의 데이터를 메모리로부터 디스플레이 컨트롤러의 로컬 버퍼 또는 버퍼들에 페치(fetch)하도록 동작 가능하다(따라서, 바람직하게는 디스플레이 컨트롤러는 디스플레이 컨트롤러에 의해 처리될 입력 표면 또는 표면들의 데이터를 저장하도록 동작 가능한 하나 이상의 로컬 버퍼를 포함한다). 그 다음, 변환 스테이지는 바람직하게는 로컬 버퍼 또는 버퍼들로부터 입력 표면을 처리한다.In one particularly preferred embodiment, the input stage is operable to fetch data of the input surface to be processed by the display controller from memory to a local buffer or buffers of the display controller (thus preferably the display controller is and one or more local buffers operable to store data of the input surface or surfaces to be processed by the controller). The conversion stage then preferably processes the input surface from the local buffer or buffers.

따라서, 특히 바람직한 일 실시예에서, 변환 스테이지는 처리될 입력 스테이지의 데이터가 변환 스테이지에 의한 처리를 위하여 로딩되는 연관된 입력 버퍼 또는 버퍼들을 가진다.Thus, in one particularly preferred embodiment, the conversion stage has an associated input buffer or buffers into which the data of the input stage to be processed is loaded for processing by the conversion stage.

대응하여, 특히 바람직한 일 실시예에서, 본 발명은 처리될 입력 표면의 데이터를 메모리로부터 디스플레이 컨트롤러의 로컬(입력) 버퍼 또는 버퍼들로 로딩하는 디스플레이 컨트롤러의 입력 스테이지와, 그 다음, 수신된 시야 방위 데이터에 기초하여 로컬(입력) 버퍼 또는 버퍼로부터의 입력 표면 데이터를 처리하여 출력 변환된 표면을 제공하는 변환 스테이지를 포함한다.Correspondingly, in one particularly preferred embodiment, the present invention provides an input stage of the display controller which loads the data of the input surface to be processed from memory into the display controller's local (input) buffer or buffers, and then the received viewing orientation. and a transform stage that processes the local (input) buffer or input surface data from the buffer based on the data to provide an output transformed surface.

입력 표면 데이터가 내부로 페치되는 디스플레이 컨트롤러의 로컬(입력) 버퍼 또는 버퍼들은 디스플레이 컨트롤러의 임의의 적합하고 원하는 로컬 버퍼 메모리 또는 디스플레이 컨트롤러가 액세스 가능한 임의의 적합하고 원하는 로컬 버퍼 메모리일 수 있다. 아래에서 더 논의되는 바와 같이, 로컬 버퍼 또는 버퍼들은 바람직하게는 입력 표면의 데이터 요소(샘플링(데이터) 위치)의 하나 이상의, 바람직하게는 복수의 블록을 저장할 수 있다(그리고 저장하도록 동작 가능하다).The display controller's local (input) buffer or buffers into which input surface data is fetched may be any suitable and desired local buffer memory of the display controller or any suitable and desired local buffer memory accessible to the display controller. As discussed further below, the local buffer or buffers are preferably capable of storing (and operable to store) one or more, preferably a plurality of blocks of data elements (sampling (data) locations) of the input surface. .

로컬 버퍼 또는 버퍼들은 특별히 본 발명의 목적을 위하여 제공될 수 있거나, 또는, 디스플레이 컨트롤러의 각각의 레이어 파이프라인 또는 파이프라인들의 버퍼 또는 버퍼들과 같이, 다른 목적을 위하여 디스플레이 컨트롤러에 이미 존재하거나 디스플레이 컨트롤러를 위하여 이미 존재하는 버퍼 또는 버퍼들일 수 있다.A local buffer or buffers may be provided specifically for the purposes of the present invention, or may already exist in a display controller or display controller for another purpose, such as a buffer or buffers in each layer pipeline or pipelines of a display controller. may be a buffer or buffers that already exist for

따라서, 바람직한 일 실시예에서, 디스플레이 컨트롤러는 하나 이상의, 바람직하게는 복수의, 입력 레이어(표면) 처리 파이프라인을 포함하고, 이러한 입력 레이어 파이프라인의 하나 이상은 변환 스테이지에 의해 변환될 입력 표면을 위한 데이터를 저장하는데 사용되고, 변환 스테이지는 적합한 입력 레이어 파이프라인 또는 파이프라인들의 버퍼 또는 버퍼들로부터 필요로 하는 입력 표면 데이터를 판독하도록 동작 가능하다.Thus, in one preferred embodiment, the display controller comprises one or more, preferably multiple, input layer (surface) processing pipelines, one or more of these input layer pipelines defining the input surface to be transformed by the transform stage. The conversion stage is operable to read the required input surface data from a suitable input layer pipeline or buffer or buffers of pipelines.

또한, 바람직하게는, 전체 동작은 먼저 입력 표면을 렌더링하는 것(예를 들어, 그래픽 처리 유닛에 의해)과, 그 다음 입력 스테이지에 의해 판독되는 메모리에 입력 표면을 저장하는 것을 포함한다.Also preferably, the overall operation includes first rendering the input surface (eg, by a graphics processing unit) and then storing the input surface in memory to be read by the input stage.

변환 스테이지는 수신된 시야 방위 데이터에 기초하여 입력 표면을 변환하도록 동작한다.The transform stage is operative to transform the input surface based on the received viewing orientation data.

시야 방위 데이터는 시야 방위(시야 방향)을 나타내는 임의의 적합하고 원하는 데이터일 수 있다. 바람직한 일 실시예에서, 시야 방위 데이터는 입력 표면이 마치 그로부터 보이는 것처럼 디스플레이되는(변환될 입력 표면이 그에 관하여 디스플레이되는) 원하는 시야 방위(시야 방향)을 표현하고 나타낸다.The field of view orientation data may be any suitable and desired data representing a field of view orientation (field direction). In a preferred embodiment, the viewing orientation data expresses and indicates a desired viewing orientation (viewing direction) from which the input surface is displayed as if viewed from (the input surface to be transformed is displayed with respect to).

특히 바람직한 일 실시예에서, 시야 방위 데이터는 입력 표면이 기준(예를 들어, 사전 정의된) 시야 위치("앞으로 곧 바른(straight ahead)") 시야 위치일 수 있지만 그럴 필요는 없다))에 상대적으로 디스플레이될 시야 위치의 방위를 나타낸다In one particularly preferred embodiment, the viewing orientation data is relative to the input surface to a reference (eg, predefined) viewing location (which may but need not be a “straight ahead” viewing location). Indicates the orientation of the viewing position to be displayed as

기준 시야 위치는 바람직하게는 입력 표면이 관련되어 생성된(렌더링된) 시야 위치(방향(방위))이다.The reference viewing position is preferably the generated (rendered) viewing position (direction (orientation)) with respect to the input surface.

따라서, 바람직한 일 실시예에서, 시야 방위 데이터는 입력 표면이 관련되어 생성된(렌더링된) 시야 위치(방향)에 상대적으로 입력 표면이 디스플레이될 시야 위치의 방위를 나타낸다.Thus, in one preferred embodiment, the viewing orientation data indicates the orientation of the viewing position at which the input surface will be displayed relative to the generated (rendered) viewing position (orientation) to which the input surface is associated.

시야 방위 데이터는 바람직하게는 기준 시야 위치에 상대적으로 입력 표면이 디스플레이되는 시야 위치의 회전을 나타낸다. 시야 위치 회전은 3개의 (오일러(Euler)) 각도의 형태 또는 사원수(quaternion)와 같이, 원하는 바에 따라 제공될 수 있다.The viewing orientation data preferably represents a rotation of the viewing position at which the input surface is displayed relative to a reference viewing position. View position rotation can be provided as desired, such as in the form of three (Euler) angles or as a quaternion.

따라서, 특히 바람직한 이러한 실시예에서, 시야 방위 데이터는 기준(예를 들어, 미리 정의된) 시야 위치에 상대적으로 입력 표면이 디스플레이될 시야 위치의 방위를 나타내는 하나 이상의(그리고 바람직하게는 3개의) 각도(오일러 각도)를 포함한다.Thus, in this particularly preferred embodiment, the viewing orientation data is one or more (and preferably three) angles representing the orientation of the viewing location at which the input surface will be displayed relative to a reference (eg predefined) viewing location. (Euler angles).

시야 방위 데이터는 임의의 적합하고 원하는 방식으로 사용 중인 디스플레이 컨트롤러에 제공된다. 바람직하게는, 이는 출력 변환된 표면의 디스플레이를 필요로 하는 애플리케이션에 의해 적합하게 제공된다.View orientation data is provided to the display controller in use in any suitable and desired manner. Preferably, this is suitably provided by applications requiring the display of output converted surfaces.

시야 방위 데이터는 바람직하게는, 예를 들어, 선택된 레이트로, 그리고 바람직하게는 미리 정의된 레이트로, 디스플레이 컨트롤러의 변환 스테이지에 주기적으로 제공되고, 그 다음, 변환 스테이지는 자신의 변환 동작을 제어하기 위하여, 적합한 바에 따라, 제공된 시야 방위 데이터를 이용한다. 바람직한 일 실시예에서, 업데이트된 시야 방위 데이터는 800 Hz와 같이 수 백 헤르츠 정도의 레이트로 변환 스테이지에 제공된다.The viewing orientation data is preferably provided periodically, eg at a selected rate, and preferably at a predefined rate, to a translation stage of the display controller, which then controls its translation operation. For this purpose, use the provided field of view orientation data, as appropriate. In a preferred embodiment, updated view orientation data is provided to the translation stage at a rate of several hundred hertz, such as 800 Hz.

입력 표면으로부터 출력 변환된 표면을 생성할 때 변환 스테이지에 의해 사용되는 시야 방위 데이터는 임의의 적합하고 원하는 방식으로 변환 스테이지에 제공될 수 있다(그에 의해 수신될 수 있다). 시야 방위 데이터는 바람직하게는 입력 표면으로부터 출력 변환된 표면을 생성할 때 변환 스테이지에 의해 판독되어 사용될 수 있는 디스플레이 컨트롤러의 적합한 로컬 저장소(예를 들어, 레지스터 또는 레지스터들)로 기록된다.View orientation data used by the conversion stage in generating the output transformed surface from the input surface may be provided to (and received by) the conversion stage in any suitable and desired manner. The viewing orientation data is preferably written to a suitable local storage (eg register or registers) of the display controller where it can be read and used by the conversion stage when generating the output transformed surface from the input surface.

바람직한 일 실시예에서, 시야 방위 데이터는, 예를 들어, 그리고 바람직하게는, 디스플레이 컨트롤러가 디스플레이를 위하여 이미지를 제공하고 있는 가상 현실 디스플레이 헤드셋의 적합한 머리 위치(머리 포즈 트래킹) 센서로부터 감지된 머리 위치 데이터(머리 포즈 트래킹 데이터)를 포함한다.In a preferred embodiment, the viewing orientation data is, for example, and preferably, the head position sensed from a suitable head position (head pose tracking) sensor of the virtual reality display headset for which the display controller is providing the image for display. It contains data (head pose tracking data).

예를 들어, 샘플링된 시야 방위(예를 들어, 머리 위치(포즈)) 데이터는 바람직하게는 임의의 적합한 방식으로 그리고 적합한 레이트(예를 들어, 연관된 헤드 마운트 디스플레이에 의해 샘플링되는 레이트와 동일한 레이트)로 디스플레이 컨트롤러의 변환 스테이지에 제공된다. 그 다음, 변환 스테이지는, 자신의 변환 동작을 제어하기 위하여, 적합한 바에 따라, 제공된 머리 포즈 트래킹(시야 방위) 정보를 사용할 수 있다.For example, the sampled viewing orientation (eg, head position (pose)) data is preferably in any suitable manner and at a suitable rate (eg, at the same rate as being sampled by the associated head mounted display). to the conversion stage of the display controller. The transform stage may then use the provided head pose tracking (view orientation) information, as appropriate, to control its transform operation.

따라서, 바람직하게는, 시야 방위 데이터는, 예를 들어, 그리고 바람직하게는, 디스플레이 컨트롤러가 결합된(그리고 디스플레이를 위한 출력 변환된 표면을 제공하고 있는) 가상 현실 헤드셋에 의해 주기적으로 결정되는 적합하게 샘플링된 머리 포즈 트래킹 데이터를 포함한다.Thus, preferably, the viewing orientation data is suitably determined periodically, for example, and preferably by a virtual reality headset to which the display controller is coupled (and providing an output transformed surface for display). Contains sampled head pose tracking data.

디스플레이 컨트롤러는 헤드셋(헤드 마운트 디스플레이) 자체로 통합될 수 있거나, 아니면 유선이나 무선 연결을 통해 헤드셋에 결합될 수 있다.The display controller may be integrated into the headset (head mounted display) itself or coupled to the headset via a wired or wireless connection.

따라서, 특히 바람직한 일 실시예에서, 본 발명의 방법은, 변환 스테이지에 의한 사용을 위하여 (예를 들어, 그리고 바람직하게는, 디스플레이 컨트롤러가 디스플레이를 위한 출력 변환된 표면을 제공하고 있는 헤드 마운트 디스플레이의 적합한 센서를 이용하여) 시야 방위 데이터(예를 들어, 머리 위치 데이터)를 주기적으로 샘플링하는 단계와, 샘플링된 시야 방위 데이터를 디스플레이 컨트롤러로(디스플레이 컨트롤러의 변환 스테이지로) 제공하는 단계를 포함하고(그리고 디스플레이 컨트롤러 및/또는 데이터 처리 시스템은 이러한 단계들을 수행하도록 적합하게 구성된다), 그 다음 변환 스테이지는 입력 표면의 변환된 버전을 출력 변환된 표면으로서 제공하기 위하여 입력 표면을 변환할 때 제공된 샘플링된 시야 방위 데이터를 이용한다.Thus, in one particularly preferred embodiment, the method of the present invention is adapted for use by a conversion stage (e.g., and preferably, of a head mounted display in which the display controller is providing an output converted surface for the display). (using a suitable sensor) periodically sampling eye orientation data (e.g., head position data) and providing the sampled eye orientation data to a display controller (to a conversion stage of the display controller); and the display controller and/or data processing system are suitably configured to perform these steps), then the conversion stage converts the input surface to provide a transformed version of the input surface as the output transformed surface. It uses field of view orientation data.

변환 스테이지는, 바람직하게는, 각각의 프레임의 시작에서 그리고/또는 주어진 출력 변환된 표면의 일부 개수의 라인이 생성된 후와 같이, 적합한 간격으로 새로운 시야 방위 데이터(머리 트래킹 데이터)에 기초하여 자신의 변환 동작을 업데이트하도록 구성된다. 바람직하게는, 변환 스테이지는 가장 최근에 제공된 시야 방위(머리 트래킹) 정보에 기초하여 주기적으로, 그리고 바람직하게는, 변환된 출력 표면의 특정의, 바람직하게는 선택된, 개수의 라인이 생성될 때마다, 자신의 동작을 업데이트한다. 이것은 출력 변환된 표면에서의 각각의 새로운 라인에 대하여 수행되거나, 또는, 예를 들어, 출력 변환된 표면의 몇 개의 라인마다, 예를 들어, 2개 또는 4개의 라인마다, 수행될 수 있다.The transform stage preferably bases itself on new view orientation data (head tracking data) at suitable intervals, such as at the beginning of each frame and/or after some number of lines of a given output transformed surface have been generated. It is configured to update the conversion operation of Preferably, the transformation stage is performed periodically based on the most recently provided viewing orientation (head tracking) information, and preferably each time a particular, preferably selected, number of lines of the transformed output surface are generated. , update its behavior. This can be done for each new line in the power transformed surface, or it can be done every few lines, eg 2 or 4 lines, in the power transformed surface.

변환 스테이지는 임의의 적합하고 원하는 방식으로 수신된 시야 방위 데이터에 기초하여 입력 표면을 변환하도록 동작할 수 있다. 바람직한 일 실시예에서, 변환 스테이지는, 사실상, 시야 방위 데이터에 기초하여 입력 표면에 변환을 적용하도록 동작한다.The transform stage is operable to transform the input surface based on the received viewing orientation data in any suitable and desired manner. In one preferred embodiment, the transform stage is operative to apply a transform to the input surface based, in effect, on the viewing orientation data.

변환 스테이지가 (사실상) 시야 방위 데이터에 기초하여 입력 표면에 적용하는 변환은 임의의 적합하고 원하는 변환일 수 있다. 바람직한 일 실시예에서, 변환은 (예를 들어, 입력 표면이 관련하여 생성된(렌더링된) 시야 방위(시야 방향)에 비교하여) 마치 수신된 시야 방위 데이터에 의해 표시된(나타낸) 시야 방위(시야 방향)으로부터 보이는 것처럼 입력 표면의 표현을 제공하기 위하여 입력 표면을 변환하도록 하는 것이다.The transform that the transform stage applies to the input surface based on (substantially) the viewing orientation data can be any suitable and desired transform. In a preferred embodiment, the transformation is performed as if (e.g. compared to the generated (rendered) viewing orientation (viewing direction) with respect to the input surface) the viewing orientation (indicated) by the received viewing orientation data. direction) to transform the input surface to provide a representation of the input surface as viewed from

특히 바람직한 일 실시예에서, 변환 스테이지는 시야 방위 데이터에 기초하여 입력 표면의 투영, 예를 들어, 그리고 바람직하게는, 시야 방위 데이터에 의해 표시되는 바와 같은 현재 시야 방위에 기초하고 그리고 그에 대응하는 투영을 생성하도록 동작한다.In one particularly preferred embodiment, the translation stage is configured to project a projection of the input surface based on the viewing orientation data, eg, and preferably, a projection based on and corresponding to a current viewing orientation as indicated by the viewing orientation data. works to generate

시야 방위 데이터에 기초한 변환은, 예를 들어, x/y 시프트, 스케일링 및 회전 중 하나 이상, 그리고 바람직하게는 그 전부를 포함할 수 있고, 그리고 바람직하게는 포함한다. 원한다면, 더 복잡한 변환이 사용될 수 있다.Transformations based on view orientation data can, and preferably include, for example, one or more of, and preferably all of, an x/y shift, scaling, and rotation. If desired, more complex transformations may be used.

바람직한 일 실시예에서, 시야 방위 데이터에 기초한 변환은 시야 방위 데이터에 기초하는 입력 표면의 평면 회전을 (단독으로) 포함한다.In one preferred embodiment, the transformation based on the viewing orientation data includes (alone) a plane rotation of the input surface based on the viewing orientation data.

특히 바람직한 일 실시예에서, 변환 스테이지는, 시야 방위뿐만 아니라, 하나 이상의 다른 인자에 기초하여(이를 고려하여) 입력 표면을 변환한다.In one particularly preferred embodiment, the transform stage transforms the input surface based on (and taking into account) the viewing orientation as well as one or more other factors.

특히 바람직한 이러한 실시예에서, 변환 스테이지가 입력 표면에 적용하는 변환은 또한 사용자가 시청할 디스플레이되는 출력 변환된 표면이 통과하는 렌즈 또는 렌즈들에 의해 발생할 임의의 왜곡, 예를 들어, 배럴 왜곡을 고려한다(이에 기초한다).In this particularly preferred embodiment, the transform that the transform stage applies to the input surface also takes into account any distortion, eg, barrel distortion, caused by a lens or lenses through which the displayed output transformed surface to be viewed by the user passes. (Based on this).

본 출원인은 이 점에서 가상 현실 헤드셋에 의해 디스플레이되는 출력 프레임이 통상적으로 렌즈를 통해 시청되며, 이 렌즈는 일반적으로 시청되는 프레임에 배럴 왜곡과 같은 기하학적 왜곡을 가한다는 것을 인식하였다. 따라서, 렌즈가 발생시킬 (기하학적) 왜곡을 보상하도록 디스플레이되는 표면(프레임)을 "사전 보정(pre-distort)"할 수 있는 것이 바람직하다.Applicant has recognized at this point that the output frame displayed by the virtual reality headset is typically viewed through a lens, which lens typically imparts a geometric distortion, such as barrel distortion, to the viewed frame. It is therefore desirable to be able to “pre-distort” the displayed surface (frame) to compensate for the (geometric) distortion that the lens will produce.

따라서, 특히 바람직한 일 실시예에서, 변환 스테이지는 시청될 변환된 출력 표면이 통과하는 렌즈 또는 렌즈들로부터 (예상되는) (기하학적) 왜곡을 고려하고, 그 (예상되는) 렌즈의 (기하학적) 왜곡을 보상(고려)하기 위하여 입력 표면으로부터 출력 변환된 표면을 생성하도록 동작 가능하다.Thus, in one particularly preferred embodiment, the transformation stage takes into account the (expected) (geometric) distortion from the lens or lenses through which the transformed output surface to be viewed passes, and the (expected) (geometric) distortion of that lens. It is operable to generate an output transformed surface from an input surface for compensation (consideration).

따라서, 특히 바람직한 일 실시예에서, 변환 스테이지는 특정의, 바람직하게는 선택된, 바람직하게는 미리 정의된, 렌즈의 (기하학적) 왜곡(렌즈 왜곡은 사용자가 시청할 출력 변환된 표면이 통과하는 렌즈에 의해 발생될 기하학적 왜곡에 기초하여야 하고 그에 대응하여야 하며, 바람직하게는 그에 기초하고 그에 대응한다)에 기초하여 입력 표면으로부터 출력 변환된 표면을 생성하도록 동작 가능하다.Thus, in one particularly preferred embodiment, the transformation stage is configured to have a specific, preferably selected, preferably predefined, (geometric) distortion of the lens (the lens distortion is caused by the lens through which the output transformed surface to be viewed by the user passes). It is operable to generate an output transformed surface from an input surface based on, and preferably based on, and corresponding to, the geometric distortion to be generated.

바람직한 일 실시예에서, 변환 스테이지가 출력 변환된 표면을 생성하기 위하여 입력 표면에 적용하는 변환은 이에 더하여 또는 이 대신에 (그리고 바람직하게는 이에 더하여) 디스플레이된 출력 변환된 표면의 시야 경로에서 색수차(왜곡)를 고려한다(그리고 이를 보정하도록 하려고 동작 가능하다).In a preferred embodiment, the transform that the transform stage applies to the input surface to create the output transformed surface is, in addition or instead (and preferably in addition to) the chromatic aberration ( distortion) (and is operable to try to correct for it).

본 출원인은 이 점에서 시청될 가상 현실 헤드셋에 의해 디스플레이되는 출력 프레임이 통과하는 렌즈는 또한 시청되는 프레임에 색수차를 유입시킬 수 있다는 것을 다시 인식하였다. 따라서, 렌즈가 발생시킬 임의의 색수차를 보상하도록 디스플레이되는 표면(프레임)을 "사전 보정"할 수 있는 것이 바람직하다.Applicant has recognized at this point again that the lens through which the output frame displayed by the virtual reality headset to be viewed may also introduce chromatic aberrations into the frame being viewed. Accordingly, it is desirable to be able to "pre-calibrate" the displayed surface (frame) to compensate for any chromatic aberrations that the lens will introduce.

따라서, 특히 바람직한 일 실시예에서, 변환 스테이지는 (예를 들어, 시청될 변환된 출력 표면이 통과하는 렌즈 또는 렌즈들로부터) (예상되는) 출력 변환된 표면의 시야 경로에서의 색수차를 고려하고, 그 (예상되는) 색수차를 보상(고려)하기 위하여 입력 표면으로부터 출력 변환된 표면을 생성하도록 동작 가능하다.Thus, in one particularly preferred embodiment, the conversion stage takes into account the chromatic aberration in the viewing path of the (expected) output transformed surface (e.g. from the lens or lenses through which the transformed output surface to be viewed is passing); It is operable to generate an output transformed surface from an input surface to compensate for (account for) that (expected) chromatic aberration.

따라서, 특히 바람직한 일 실시예에서, 변환 스테이지는 특정의, 바람직하게는 선택된, 바람직하게는 미리 정의된, 색수차(색수차는 사용자가 시청할 출력 변환된 표면이 통과하는 렌즈에 의해 발생될 색수차에 기초하여야 하고 그에 대응하여야 하며, 바람직하게는 그에 기초하고 그에 대응한다)에 기초하여 입력 표면으로부터 출력 변환된 표면을 생성하도록 동작 가능하다.Thus, in one particularly preferred embodiment, the transformation stage is configured to have a specific, preferably selected, preferably predefined, chromatic aberration (the chromatic aberration should be based on the chromatic aberration that the output transformed surface to be viewed by the user would be produced by the lens through which it passes). and must correspond thereto, preferably based thereon and corresponding thereto) to generate an output transformed surface from an input surface.

특히 바람직한 일 실시예에서, 색수차 보정은 입력 표면의 상이한 컬러 평면에 대하여 개별적으로 결정된다. 특히 바람직한 일 실시예에서, 개별 색수차 보정은 입력 표면의 각각의 컬러 평면에 대하여 결정된다. 따라서, 이 경우에, 변환 스테이지에 의해 결정되고 입력 표면에 적용되는 각각의 적색, 녹색 및 청색(예를 들어) 색수차 보정이 있을 것이다.In one particularly preferred embodiment, chromatic aberration correction is determined separately for the different color planes of the input surface. In one particularly preferred embodiment, individual chromatic aberration corrections are determined for each color plane of the input surface. Thus, in this case there will be respective red, green and blue (eg) chromatic aberration corrections determined by the translation stage and applied to the input surface.

본 출원인은 이 점에서 시청될 출력 변환된 표면이 통과하는 시야 경로에 의해 유입되는 임의의 색수차가 논의가 되고 있는 컬러에 따라 바뀔 것이라는 것을 인식하였다. 따라서, 모든 컬러 평면에 대하여 단일의 공통된 색수차 보정을 적용하는 대신에(원한다면 이것이 수행될 수 있지만), 각각의 컬러 평면에 대하여 개별적으로 개별 색수차 보정을 결정하는 것이 유익하다.Applicant has recognized at this point that any chromatic aberration introduced by the viewing path through which the output converted surface to be viewed will change depending on the color in question. Thus, instead of applying a single, common chromatic aberration correction to all color planes (although this can be done if desired), it is beneficial to determine individual chromatic aberration corrections individually for each color plane.

특히 바람직한 일 실시예에서, 입력 표면과 출력 변환된 표면이 또한 알파(투명도) 데이터(알파(투명도 평면))을 포함하는 경우에, 컬러 평면 중 하나(바람직하게는, 녹색 컬러 평면)에 대하여 결정된 색수차 보정은 또한 알파(투명도) 평면(값)에 적용된다(그리고 그에 대하여 사용된다).In a particularly preferred embodiment, if the input surface and the output transformed surface also contain alpha (transparency) data (alpha (transparency plane)), the determined for one of the color planes (preferably the green color plane) Chromatic aberration correction is also applied to (and used against) the alpha (transparency) plane (value).

변환 스테이지는 임의의 적합하고 원하는 방식으로 입력 표면으로부터 출력 변환된 표면을 생성할 수 있다.The transform stage can produce an output transformed surface from an input surface in any suitable and desired manner.

변환 스테이지가 생성하는 출력 변환된 표면은 디스플레이를 위한 프레임(예를 들어, 이미지)일 것이고, 따라서 이에 따라 대응하여 각각의 컬러 데이터가 정의되는(그리고 제공되는) 데이터 요소(샘플링 위치)(예를 들어, 픽셀)의 어레이를 포함할 것이다.The output transformed surface that the transform stage produces will be a frame (eg image) for display, and thus a corresponding data element (sampling position) on which each color data is defined (and provided) (eg e.g. pixels).

특히 바람직한 일 실시예에서, 변환 스테이지는, 출력 변환된 표면에서의 데이터 요소(샘플링)(예를 들어, 픽셀) 위치에 대하여, 변환된 출력 표면에서의 그 데이터 요소(샘플링 위치)를 위한 데이터가 취해져야만 하는 입력 표면에서의 대응하는 위치(좌표)를 결정하도록 동작한다. 다른 말로 하면, 변환 스테이지는 바람직하게는 변환 스테이지가 입력 표면에 적용하는 변환에 의해 출력 변환된 표면에서의 그 데이터 요소(샘플링 위치)로 이동될 입력 표면에서의 위치를 결정한다.In one particularly preferred embodiment, the transform stage is such that, relative to a data element (sampling) (e.g. pixel) position in the output transformed surface, the data for that data element (sampling position) in the transformed output surface is It acts to determine the corresponding position (coordinate) on the input surface that should be taken. In other words, the transform stage preferably determines the position on the input surface to be moved to that data element (sampling position) on the output transformed surface by the transform that the transform stage applies to the input surface.

이것은 바람직하게는 (디스플레이를 위하여) 생성하는 것이 바람직한 출력 변환된 표면에서의 복수의 그리고 바람직하게는 각각의 데이터 요소(샘플링 위치)에 대하여 수행된다.This is preferably done for a plurality and preferably for each data element (sampling position) in the output transformed surface it is desired to generate (for display).

변환 스테이지는 임의의 적합하고 원하는 방식으로 어느 입력 표면 위치가 주어진 변환된 출력 표면 데이터 요소(샘플링)(예를 들어, 픽셀) 위치에 대하여 샘플링되어야 하는지 결정할 수 있다.The transform stage may determine which input surface locations should be sampled for a given transformed output surface data element (sampling) (eg, pixel) location in any suitable and desired manner.

특히 바람직한 일 실시예에서, 변환 스테이지는, 출력 변환된 표면 데이터 요소(샘플링) 위치 x, y에 대하여, 변환된 출력 표면에서의 그 데이터 요소(샘플링 위치)에 대한 데이터가 다음 사항 중 하나 이상, 바람직하게는 전부에 기초하여 취해져야 할(취해 질) 대응하는 입력 표면 위치를 결정한다: 변환 동작이 입력 표면에 적용되도록 구성되는 렌즈 왜곡 보정; 변환 동작이 입력 표면에 적용되도록 구성되는 시야 방위 변환; 및 변환 동작이 입력 표면에 적용되도록 구성되는 색수차 보정.In a particularly preferred embodiment, the transform stage is such that, for an output transformed surface data element (sampling) position x, y, the data for that data element (sampling position) in the transformed output surface is one or more of the following: Preferably determine the corresponding input surface position to be taken (to be taken) based on all: lens distortion correction configured such that a transform operation is applied to the input surface; a view orientation transform configured such that the transform operation is applied to the input surface; and chromatic aberration correction configured such that a transformation operation is applied to the input surface.

특히 바람직한 일 실시예에서, 변환 스테이지는, 출력 변환된 표면 샘플링 위치 x, y에 대하여, 변환 동작이 고려하도록 구성되는 렌즈 왜곡에 기초하여 대응하는 입력 표면 위치(좌표) (x', y')를 결정하고, 그 다음, 적어도 시야 방위 데이터에 기초하여 그 결정된 입력 표면 위치(좌표) (x', y')를 수정한다(즉, 필요한 머리 트래킹(시야 방향) 변환을 적용하기 위하여).In a particularly preferred embodiment, the transform stage outputs, for each transformed surface sampling position x, y, the corresponding input surface position (coordinate) (x', y') based on the lens distortion the transform operation is configured to take into account. , and then modify the determined input surface position (coordinate) (x', y') based on at least the view orientation data (ie, to apply the necessary head tracking (view direction) transform).

더욱 바람직하게는, 결정된 입력 표면 위치(좌표)는 또한 (색수차 보정을 적용하기 위하여) 출력 변환된 표면을 시청할 때 색수차를 고려하도록 수정된다. 이것은 바람직하게는 시야 방위 데이터에 기초하여 결정된 입력 표면 위치를 수정하기 전에 수행된다.More preferably, the determined input surface positions (coordinates) are also modified to account for chromatic aberrations when viewing the output transformed surface (to apply chromatic aberration correction). This is preferably done prior to modifying the input surface location determined based on the viewing orientation data.

대응하여, 특히 바람직한 일 실시예에서, 변환 스테이지는, 변환 스테이지로부터 출력될 출력 변환된 표면에서의 샘플링 위치(좌표)에 대하여, 정의된 렌즈 왜곡에 기초하여 그 출력 변환된 표면 샘플링 위치(좌표)에 대한 대응하는 입력 표면 위치(좌표)를 결정하도록 동작 가능한 좌표 보간기(interpolator) 스테이지; 자신의 디스플레이에서 출력 변환된 표면을 시청할 때 색수차를 처리하기 위하여 입력 표면 위치(좌표)를 수정하도록 동작 가능한 색수차 보정 스테이지; 및 수신된 시야 방위 데이터(예를 들어, 출력 표면을 시청할 시청자의 현재 머리 위치를 나타냄)에 기초하여 입력 표면 위치(좌표)를 수정하도록 동작 가능한 시야 방위 변환 스테이지를 포함한다.Correspondingly, in one particularly preferred embodiment, the conversion stage outputs, relative to the sampling position (coordinates) on the output transformed surface to be output from the conversion stage, the output transformed surface sampling position (coordinates) based on the defined lens distortion. a coordinate interpolator stage operable to determine a corresponding input surface position (coordinate) for ; a chromatic aberration correction stage operable to correct input surface positions (coordinates) to account for chromatic aberration when viewing the output transformed surface on its display; and a viewing orientation conversion stage operable to modify the input surface location (coordinates) based on the received viewing orientation data (eg, indicating a current head position of a viewer who will view the output surface).

출력 변환된 표면에서의 주어진 샘플링 위치(픽셀)에 대하여 사용되어야 하는 입력 표면에서의 위치(들)(좌표)를 결정함으로써 출력 변환된 표면을 제공하기 위하여 입력 표면을 변환하는 이러한 방식은 본질적으로 신규하고 유익하며, 디스플레이 장치를 위한 디스플레이에서의 사용만을 위한 것이 아닐 수 있다는 것으로 여겨진다. 예를 들어, 전체 데이터 처리 시스템(시스템 온 칩)에 포함될 수 있고 단지 디스플레이 컨트롤러 내에만 반드시 있지 않은 독립형 모델로서 이러한 변환 스테이지를 제공하는 것이 가능할 수 있다.This way of transforming an input surface to give an output transformed surface by determining the position(s) (coordinates) on the input surface that should be used for a given sampling location (pixel) on the output transformed surface is essentially novel. and beneficial, and may not be intended solely for use in a display for a display device. For example, it may be possible to provide this conversion stage as a stand-alone model that can be included in the entire data processing system (system on chip) and not necessarily just within the display controller.

따라서, 본 발명의 추가적인 양태에 따르면, 수신된 시야 방위 데이터에 기초하여 출력 변환된 표면을 제공하기 위하여 입력 표면을 변환하기 위한 장치가 제공되고, 장치는,Accordingly, according to a further aspect of the present invention there is provided an apparatus for transforming an input surface to provide an output transformed surface based on received viewing orientation data, the apparatus comprising:

장치로부터 출력될 출력 변환된 표면에서의 데이터 요소 위치에 대하여, 정의된 렌즈 왜곡에 기초하여 입력 표면에서의 대응하는 데이터 위치를 결정하도록 동작 가능한 좌표 보간기 스테이지;a coordinate interpolator stage operable to determine, for data element positions on an output transformed surface to be output from the device, a corresponding data position on the input surface based on the defined lens distortion;

적어도 하나의 수정된 입력 표면 위치를 제공하기 위하여 출력 변환된 표면을 시청할 때, 색수차를 처리하도록 좌표 보간기 스테이지에 의해 결정된 입력 표면 위치를 수정하도록 동작 가능한 색수차 보정 스테이지; 및a chromatic aberration correction stage operable to correct the input surface location determined by the coordinate interpolator stage to account for the chromatic aberration when viewing the output transformed surface to provide at least one corrected input surface location; and

출력 변환된 표면의 데이터 요소에 대하여 사용하는 데이터를 제공하기 위하여 샘플링되는 출력 입력 표면 위치를 제공하기 위하여 수신된 시야 방위 데이터에 기초하여 색수차 보정 스테이지에 의해 결정된 적어도 하나의 수정된 입력 표면 위치를 더 수정하도록 동작 가능한 시야 방위 변환 스테이지further comprising at least one corrected input surface position determined by the chromatic aberration correction stage based on the received viewing orientation data to provide an output input surface position that is sampled to provide data used for data elements of the output transformed surface; A field of vision orientation conversion stage operable to correct

를 포함한다.includes

대응하여, 본 발명의 추가적인 양태에 따르면, 수신된 시야 방위 데이터에 기초하여 출력 변환된 표면을 제공하기 위하여 입력 표면을 변환하는 방법이 제공되고, 방법은,Correspondingly, according to a further aspect of the present invention, there is provided a method of transforming an input surface to provide an output transformed surface based on received viewing orientation data, the method comprising:

출력될 출력 변환된 표면에서의 데이터 요소 위치에 대하여, 정의된 렌즈 왜곡에 기초하여 입력 표면에서의 대응하는 위치를 결정하는 단계;for data element positions on the output transformed surface to be output, determining a corresponding position on the input surface based on the defined lens distortion;

적어도 하나의 수정된 입력 표면 위치를 제공하기 위하여 출력 변환된 표면을 시청할 때, 색수차를 처리하도록 결정된 입력 표면 위치를 수정하는 단계; 및when viewing the output transformed surface to provide at least one corrected input surface position, modifying the determined input surface position to account for chromatic aberration; and

출력 변환된 표면의 데이터 요소에 대하여 사용하는 데이터를 제공하기 위하여 샘플링되는 입력 표면에서의 출력 위치를 제공하기 위하여 수신된 시야 방위 데이터에 기초하여 적어도 하나의 수정된 입력 표면 위치를 더 수정하는 단계further modifying the at least one corrected input surface location based on the received viewing orientation data to provide an output location on the input surface that is sampled to provide data used for data elements of the output transformed surface;

를 포함한다.includes

당해 기술 분야에서의 통상의 기술자에 의해 이해되는 바와 같이, 본 발명의 이러한 양태들은, 적합한 바에 따라, 본 명세서에 설명된 본 발명의 바람직하고 선택적인 특징들의 임의의 하나 이상 또는 전부를 포함할 수 있고, 바람직하게는 포함한다.As will be appreciated by those skilled in the art, these aspects of the invention may include any one or more or all of the preferred and optional features of the invention described herein, as appropriate. Yes, and preferably includes.

위에서 논의된 바와 같이, 바람직한 일 실시예에서, 색수차 보정 스테이지는 각각의 상이한 컬러 평면에 대하여 개별 색수차를 결정하도록 동작 가능하다. 따라서, 특히 바람직한 일 실시예에서, (위에서 논의된 바와 같이) 프로세스는, 예를 들어, 그리고 바람직하게는, 렌즈 왜곡에 기초하여 생성되고 있는 출력 변환된 표면 데이터 요소(샘플링 위치)에 대하여 초기 입력 표면 위치를 결정하도록 동작 가능하지만, 색수차 보정 스테이지는 바람직하게는, 복수의(예를 들어, 그리고 바람직하게는 각각의 컬러 평면에 하나씩 3개) 수정된 입력 표면 위치(좌표)(각각 해당하는 색수차를 설명한다)를 결정한다.As discussed above, in one preferred embodiment, the chromatic aberration correction stage is operable to determine individual chromatic aberrations for each different color plane. Thus, in one particularly preferred embodiment, the process (as discussed above) performs an initial input to the output transformed surface data element (sampling position) that is being generated, for example, and preferably based on the lens distortion. Although operable to determine the surface position, the chromatic aberration correction stage preferably comprises a plurality (eg, and preferably three, one in each color plane) corrected input surface positions (coordinates) (each corresponding chromatic aberration). explain) is determined.

이러한 방식에서, 시야 방위에 기초한 입력 표면 위치의 후속 수정은, 이에 따라, 생성된 각각의 입력 표면 위치에(예를 들어, 각각의 상이한 컬러 평면 입력 표면 위치에) 적용되어야 하고, 바람직하게는 적용된다.In this way, the subsequent modification of the input surface location based on the viewing orientation must, therefore, be applied to each input surface location generated (e.g. to each different color plane input surface location), and preferably applied do.

따라서, 이 경우에, 주어진 출력 변환된 표면 샘플링 위치에 대하여 입력 표면에서 샘플링되는 복수의(예를 들어, 3개의) 위치, 예를 들어, 그리고 바람직하게는, 출력 변환된 표면에 대하여 생성될 각각의 상이한 컬러 평면(컬러 값)에 대하여 하나의 입력 표면 위치가 있을 것이다(그리고, 바람직하게는 있다).Thus, in this case, for a given output transformed surface sampling location, a plurality (eg, three) locations sampled on the input surface, for example, and preferably, each to be generated for the output transformed surface. There will be (and preferably is) one input surface location for a different color plane (color value) of .

데이터가 출력 변환된 표면에서의 데이터 요소(샘플링 위치)에 대하여 사용될 입력 표면에서의 위치 또는 위치들이 결정되면, 특히 바람직한 일 실시예에서, 입력 표면은 결정된 위치 또는 위치들에서 샘플링되어, 출력 변환된 표면에서의 데이터 요소(샘플링 위치)에 대하여 사용될 데이터 값을 제공한다.Once a location or locations on the input surface where data is to be used for data elements (sampling locations) in the output transformed surface are determined, in one particularly preferred embodiment, the input surface is sampled at the determined location or locations, so that the output transformed surface is Provides data values to be used for data points (sampling locations) on the surface.

입력 표면은 이러한 점에서 임의의 적합하고 원하는 방식으로 샘플링될 수 있다.The input surface may be sampled in any suitable and desired manner in this regard.

특히 바람직한 일 실시예에서, 변환 스테이지는 그 입력 표면 위치를 둘러싸는 복수의(예를 들어, 4개의) 입력 표면 샘플링 위치의 세트에 대하여 정의된 데이터 값으로부터, 결정된 대응하는 입력 표면 위치에 대한 데이터 값을 보간함으로써, 출력 변환된 표면에서의 데이터 요소(샘플링 위치)에 대한 데이터 값을 결정하도록 동작 가능하다.In one particularly preferred embodiment, the translation stage provides data for a corresponding input surface location determined from data values defined for a set of multiple (eg four) input surface sampling locations surrounding that input surface location. By interpolating values, it is operable to determine data values for data elements (sampling positions) in the output transformed surface.

이에 따라, 특히 바람직한 일 실시예에서, 변환 스테이지는 출력 변환된 표면 데이터 요소(샘플링) 위치(좌표)에 대하여 사용될 입력 표면 위치(좌표)에 대한 데이터를 제공하도록 입력 표면에서의 정의된 샘플링 위치로부터의 데이터를 보간하도록 동작 가능하다.Thus, in one particularly preferred embodiment, the conversion stage is configured from a defined sampling position on the input surface to provide data about the input surface position (coordinate) to be used for the output transformed surface data element (sampling) position (coordinate). It is operable to interpolate the data of

따라서, 특히 바람직한 일 실시예에서, 변환 스테이지는 출력 변환된 표면에서의 데이터 요소(샘플링 위치)에 대한 사용을 위하여 보간된 샘플링 위치 값을 제공하도록 복수의 입력 표면 샘플링 위치 값을 보간하도록 동작 가능한 보간 스테이지를 포함한다.Accordingly, in one particularly preferred embodiment, a transform stage is an interpolator operable to interpolate a plurality of input surface sampling position values to provide interpolated sampling position values for use with data elements (sampling positions) in the output transformed surface. contains the stage

입력 표면 샘플링 위치 데이터의 보간은 임의의 적합하고 원하는 방식으로 수행될 수 있다. 바람직한 일 실시예에서, 쌍일차(bilinear) 보간이 사용되지만, 원한다면, 다른 방식이 사용될 수 있다.Interpolation of the input surface sampling position data may be performed in any suitable and desired manner. In one preferred embodiment, bilinear interpolation is used, but other schemes may be used if desired.

이러한 방식에서, 상이한 입력 표면 위치(좌표)가 (색수차를 고려하여) 상이한 컬러 평면에 대하여 결정되는 경우에, 바람직한 일 실시예에서, 개별 데이터 세트가 이에 따라 각각의 컬러 표면에 대하여 그 컬러 표면에 대한 입력 표면 위치에 기초하여 출력 변환된 표면 데이터 요소(샘플링 위치)에 대하여 보간된다. 따라서, 예를 들어, 출력 변환된 표면 데이터 요소(샘플링 위치)에 대한 RGB 컬러 데이터 세트는 바람직하게는 하나의("적색") 입력 표면 위치(좌표)로부터 결정된 적색 값과, 다른 하나의("녹색") 입력 표면 위치(좌표)로부터 결정된 녹색 값과, 제3의("청색") 입력 표면 위치(좌표)로부터 결정된 청색 값을 포함할 것이다.In this way, if different input surface positions (coordinates) are determined for different color planes (taking into account chromatic aberrations), in a preferred embodiment, a separate data set is thus generated for each color surface corresponding to that color surface. Based on the input surface position for the output transformed surface data element (sampling position) is interpolated. Thus, for example, an RGB color data set for an output transformed surface data element (sampling position) preferably has a red value determined from one ("red") input surface position (coordinate), and another ("red") will contain a green value determined from the input surface location (coordinates) of "green", and a blue value determined from the third ("blue") input surface location (coordinates).

그 다음, 이렇게 개별적으로 결정된 컬러 평면(예를 들어, 적색, 녹색 및 청색) 값은 바람직하게는 함께 사용되어 논의가 되고 있는 출력 변환된 표면 데이터 요소(샘플링 위치)에 대한 컬러 데이터를 제공한다.These individually determined color plane (eg red, green and blue) values are then preferably used together to provide color data for the output transformed surface data element (sampling position) in question.

알파(투명도) 값이 또한 결정되는 경우에, 위에서 논의된 바와 같이, 그것은 바람직하게는 녹색 컬러 값을 결정하는데 사용되는 입력 표면 위치(좌표)로부터 결정된다.If the alpha (transparency) value is also determined, as discussed above, it is preferably determined from the input surface location (coordinates) used to determine the green color value.

특히 바람직한 일 실시예서, 변환 스테이지가 입력 표면에서 하나 이상의 샘플링 위치(예를 들어, 픽셀)을 입력으로서 판독하고 출력 변환된 표면의 출력 샘플링 위치(예를 들어, 픽셀)를 생성하기 위하여 이러한 샘플링 위치를 이용함으로써 동작한다는 것이 위에서로부터 이해될 것이다. 다른 말로 하면, 변환 스테이지는 바람직하게는 입력 표면에서의 샘플링 위치(예를 들어, 픽셀)를 위한 데이터 값으로부터 출력 변환된 표면에서의 해당하는 샘플링 위치(예를 들어, 픽셀)를 위한 데이터 값을 생성함으로써 출력 변환된 표면을 생성하도록 동작한다.In one particularly preferred embodiment, the transform stage reads as input one or more sampling locations (eg pixels) from the input surface and produces output sampling locations (eg pixels) of the output transformed surface such sampling locations. It will be appreciated from above that it works by using In other words, the transform stage preferably outputs data values for corresponding sampling positions (eg pixels) on the transformed surface from data values for sampling positions (eg pixels) on the input surface. By generating, the output operates to create a transformed surface.

(당해 기술 분야에서의 통상의 기술자에 의해 이해되는 바와 같이, 입력 표면에서의(그리고 출력 변환된 표면에서의) 정의된 샘플링(데이터) 위치(데이터 요소)는 디스플레이의 픽셀에 대응할 수 있지만(그리고 바람직하게는 대응하지만), 그것은 반드시 그럴 필요는 없다. 예를 들어, 입력 표면 및/또는 출력 변환된 표면이 일부 형태의 다운 샘플링(downsampling)을 받는 경우에, 픽셀을 디스플레이하기 위하여 표면 샘플링(데이터) 위치의 일대일 매핑이 있는 것이 아니라, 디스플레이의 각각의 픽셀에 대응하는 입력 표면 및/또는 출력 변환된 표면에서의 복수의 데이터(샘플링) 위치(데이터 요소)의 세트가 있을 것이다.)(As understood by those of skill in the art, defined sampling (data) locations (data elements) at the input surface (and at the output transformed surface) may correspond to pixels on the display (and (preferably corresponding), but it need not be. For example, if the input surface and/or the output transformed surface are subjected to some form of downsampling, the surface is sampled (data ) there will not be a one-to-one mapping of positions, but rather sets of multiple data (sampling) positions (data elements) on the input surface and/or output transformed surface corresponding to each pixel of the display.)

따라서, 바람직한 일 실시예에서, 변환 스테이지는, 출력 변환된 표면에 대하여 필요한 하나의 샘플링 위치(데이터 요소)에 대하여, 바람직하게는 복수의 샘플링 위치(데이터 요소)에 대하여, 그리고 바람직하게는 각각의 샘플링 위치(데이터 요소)에 대하여 동작하여, 그 출력 변환된 표면 샘플링 위치에 대하여, 그 출력 변환된 표면 샘플링 위치를 생성하는데 사용될 하나 이상의 입력 표면 샘플링 위치(그리고 바람직하게는 복수의 입력 표면 샘플링 위치의 세트)를 결정하고, 그 다음, 출력 변환된 표면 샘플링 위치(데이터 요소)를 생성하기 위하여 이러한 결정된 입력 표면 샘플링 위치 또는 위치들을 사용한다.Thus, in one preferred embodiment, the transform stage is configured for each sampling position (data element), preferably for a plurality of sampling positions (data element), and preferably for each required sampling position (data element) for the output transformed surface. Operates on a sampling location (data element) and, relative to that output transformed surface sampling location, one or more input surface sampling locations (and preferably a plurality of input surface sampling locations) to be used to generate that output transformed surface sampling location. set), and then use these determined input surface sampling locations or locations to generate output transformed surface sampling locations (data elements).

이러한 방식으로 출력 변환된 표면에서 각각의 샘플링 위치(데이터 요소)를 생성하는 것은 샘플링 위치별(데이터 요소별) 기반으로 출력 변환된 표면을 생성하는 것을 가능하게 한다(예를 들어, 그리고 바람직하게는, 출력 샘플링 위치(데이터 요소)의 시퀀스 또는 스트림으로서). 이것이 효율적으로 출력 변환된 표면이 디스플레이 컨트롤러와 디스플레이 컨트롤러의 디스플레이 처리 파이프라인이 일반적으로 디스플레이를 위한 표면을 핸들링할 방식과 일치하는 방식으로 동작되게 하기 때문에(즉, 예를 들어 샘플링 위치(픽셀)의 블록에 대조적으로, 샘플링 위치(데이터 요소)(예를 들어, 픽셀)의 시퀀스 또는 스트림으로서), 이것은 유익하다.Generating each sampling location (data element) from the output transformed surface in this way makes it possible to generate the output transformed surface on a sampling location (by data element) basis (e.g., and preferably , as a sequence or stream of output sampling locations (data elements). Because this effectively ensures that the output-transformed surface behaves in a way consistent with the way the display controller and its display processing pipeline would normally handle a surface for display (i.e. the sampling location (pixels) of In contrast to a block, as a sequence or stream of sampling locations (data elements) (eg pixels), this is advantageous.

사실, 본 발명의 이러한 실시예들의 특별한 이점은, 이들이 출력 변환된 표면의 샘플링 위치의 스트림으로서의 그 표면의 생성을 가능하게 하고, 이에 의해 출력 변환된 표면이 디스플레이되고 있는 동안에 "실시간"으로, 디스플레이 처리 파이프라인의 일부로서 디스플레이 컨트롤러에서 시간 워프 렌더링을 수행하는 능력을 가능하게 한다는 것이다.In fact, a particular advantage of these embodiments of the present invention is that they enable the creation of a power transformed surface as a stream of sampling locations of that surface, whereby the power transformed surface is being displayed, in "real time", display It enables the ability to perform temporal warp rendering on the display controller as part of the processing pipeline.

따라서, 특히 바람직한 일 실시예에서, 변환 스테이지는 샘플링 위치별(예를 들어, 픽셀별) 기반으로 출력 변환된 표면을 생성하도록 동작한다.Thus, in one particularly preferred embodiment, the transform stage is operative to generate an output transformed surface on a sampling location-by-sampling (eg, pixel-by-pixel) basis.

따라서, 바람직한 일 실시예에서, 변환 스테이지는 출력 변환된 표면에서의 샘플링 위치(데이터 요소)에 대하여, 출력 변환된 표면 샘플링 위치를 생성하기 위하여 사용될 입력 표면에서의 샘플링 위치 또는 위치들(데이터 요소 또는 요소들)을 결정하고, 그 다음, 출력 변환된 표면 샘플링 위치를 생성하기 위하여 이러한 입력 표면 샘플링 위치 또는 위치들을 사용하고, 그 다음, 다음의(또는 제2의) 출력 변환된 표면 샘플링 위치(데이터 요소)에 대하여, 다음의(제2의) 출력 변환된 표면 샘플링 위치를 생성하는데 사용될 입력 표면에서의 샘플링 위치 또는 위치들을 결정하고, 그 다음, 출력 변환된 표면 샘플링 위치를 생성하기 위하여 이러한 결정된 입력 표면 샘플링 위치 또는 위치들을 사용하며, 계속 유사하게 동작한다.Thus, in one preferred embodiment, the transform stage, relative to the sampling position (data element) in the output transformed surface, the sampling position or positions (data element or elements), then use this input surface sampling location or locations to create an output transformed surface sampling location, and then use the next (or second) output transformed surface sampling location (data element), determine the sampling location or locations on the input surface to be used to generate the next (second) output transformed surface sampling location, and then determine this determined input to generate the output transformed surface sampling location. It uses a surface sampling location or locations and continues to operate similarly.

따라서, 특히 바람직한 일 실시예에서, 변환 스테이지의 출력은 출력 변환된 표면 샘플링 위치(샘플링 위치 값)의 스트림이다.Thus, in one particularly preferred embodiment, the output of the transform stage is a stream of output transformed surface sampling positions (sampling position values).

변환 스테이지는 바람직하게는, 디스플레이로 출력 변환된 표면을 제공하기 위한 적합한 포맷이기 때문에, 라인별(래스터 라인(raster line)별) 기반으로 입력 표면으로부터 출력 변환된 표면을 생성한다. 따라서, 변환 스테이지는 바람직하게는 출력 변환된 표면의 샘플링 위치(데이터 요소)의 로우(row)의 시퀀스로서 출력 변환된 표면을 생성하고, 각각의 로우는 출력 변환된 표면에 대한 폭과 출력 변환된 표면의 하나의 샘플링 위치의 수직 높이에 걸친 원하는 개수의 샘플링 위치에 대응하는 길이를 가진다.The transform stage preferably creates the output transformed surface from the input surface on a line-by-line (raster line-by-raster) basis, as it is in a suitable format for providing the output transformed surface to the display. Accordingly, the transform stage preferably produces the output transformed surface as a sequence of rows of sampling locations (data elements) of the output transformed surface, each row having a width for the output transformed surface and an output transformed surface It has a length corresponding to the desired number of sampling locations across the vertical height of one sampling location on the surface.

본 출원인은 이 점에서 변환 스테이지가 예를 들어 출력 변환된 표면의 로우 시퀀스로서, 예를 들어, 수평 로우 시퀀스로서 그 표면을 생성하는 경우일 수 있지만, 예를 들어, 변환 스테이지에 의해 보상될, 예를 들어, 배럴 왜곡 때문에, 출력 변환된 표면의 주어진 로우가 입력 표면에서의 대응하는 수평 로우로부터의 입력 표면 샘플링 위치를 단독으로 사용할 경우일 수 있고, 사실은 통상적으로 그렇지는 않을 것이다. 오히려, 출력 변환된 표면의 로우는 통상적으로 입력 표면을 가로질러 연장하는 곡선으로부터 취해진 샘플링 위치로부터 형성될 것이다.Applicant points out in this respect that it may be the case that the transform stage generates the surface as a row sequence of output transformed surfaces, for example as a horizontal sequence of rows, for example, but to be compensated for by the transform stage, for example. For example, because of barrel distortion, it may be the case that a given row of output transformed surfaces solely uses the input surface sampling location from the corresponding horizontal row in the input surface, in fact this usually will not be the case. Rather, rows of the output transformed surface will typically be formed from sampling locations taken from a curve extending across the input surface.

이를 고려하고, 그 다음에 변환된 출력 표면의 로우에 대한 샘플링 위치의 인접한 시퀀스로서 출력 변환된 표면을 생성할 수 있는 것을 가능하게 하기 위하여, 특히 바람직한 일 실시예에서, 변환 스테이지는, 현재 생성되고 있는 변환된 출력 표면의 로우를 생성하기 위하여 데이터가 필요할 입력 표면의 영역(그리고 바람직하게는 해당하는 2차원 블록(영역))을 식별하고, 대응하는 출력 변환된 표면 샘플링 위치 또는 위치들이 생성되어야 할 때 변환 스테이지에 의한 사용을 위하여 이용 가능하게 되도록 디스플레이 컨트롤러의 입력 스테이지가 디스플레이 컨트롤러의 입력 버퍼 또는 버퍼들, 예를 들어 로컬 버퍼 또는 버퍼들로 필요한 입력 표면 영역(블록)을 로딩하게 하도록 동작 가능하다.To take this into account, and then to be able to generate an output transformed surface as a contiguous sequence of sampling positions for a row of transformed output surfaces, in one particularly preferred embodiment, a transformation stage is currently created and Identify the regions (and preferably corresponding two-dimensional blocks (areas)) of the input surface from which data will be needed to generate rows of transformed output surfaces that are located, and the corresponding output transformed surface sampling location or locations from which to be created. is operable to cause the input stage of the display controller to load the required input surface area (block) into the input buffer or buffers of the display controller, for example a local buffer or buffers, to be available for use by the conversion stage when .

이 점에서 로딩된 입력 표면의 블록(영역)은 입력 표면의 임의의 적합하고 원하는 블록(영역)일 수 있다. 각각의 블록은 바람직하게는 입력 표면의 정의된 샘플링(데이터) 위치(데이터 요소)의 (2차원) 어레이를 포함하고, 각각의 축 방향으로 복수의 샘플링 위치(데이터 요소)만큼 연장한다. 블록은 바람직하게는 직사각형이고, 바람직하게는 정사각형이다. 블록은, 예를 들어, 각각 입력 표면의 4×4, 8×8 또는 16×16 샘플링 위치(데이터 요소)를 포함할 수 있다.The block (region) of the input surface loaded in this respect may be any suitable and desired block (region) of the input surface. Each block preferably contains a (two-dimensional) array of defined sampling (data) locations (data elements) of the input surface, extending in each axial direction by a plurality of sampling locations (data elements). The blocks are preferably rectangular and preferably square. A block may contain, for example, 4x4, 8x8 or 16x16 sampling locations (data elements) of the input surface, respectively.

특히 바람직한 일 실시예에서, 이것은, 변환 스테이지가, 데이터가 출력 변환된 표면 샘플링 위치를 생성하는데 필요할 입력 표면의 블록(영역)을 식별하기 위하여 출력 변환된 표면 샘플링 위치(데이터 요소)에 대하여 샘플링될 입력 표면 위치의 정수 부분을 이용하고, 그 다음, 디스플레이 컨트롤러의 입력 스테이지가 출력 변환된 표면 샘플링 위치를 생성하기 위하여 변환 스테이지가 원하는 입력 표면 샘플링 위치를 읽을 디스플레이 컨트롤러의 로컬 버퍼로 입력 표면의 적합한 블록을 페치하게 하기 위하여 디스플레이 컨트롤러의 입력 스테이지로 그 블록 위치(예를 들어, 정수 값)를 나타내는 것에 의해 수행된다.In one particularly preferred embodiment, this means that the transform stage will sample the output transformed surface sampling locations (data elements) to identify blocks (areas) of the input surface from which data will be needed to generate the output transformed surface sampling locations. It uses the integer part of the input surface position, and then the appropriate block of the input surface into the display controller's local buffer from which the conversion stage reads the desired input surface sampling position to create an output transformed surface sampling position. This is done by indicating the block position (e.g. an integer value) to the input stage of the display controller to cause the fetch.

바람직한 일 실시예에서, 동작, 예를 들어, 입력 스테이지는, 먼저 필요한 입력 표면 블록이 로컬 버퍼에 이미 존재하고 있는지 결정하고, 그 다음에, 입력 표면 블록이 로컬 버퍼에 이미 존재하고 있지 않다고 결정된 경우에, 그 입력 표면 블록을 메모리로부터 로컬 버퍼로 단지 페치하도록만 구성된다. 대응하여, 바람직한 일 실시예에서, 새로운 입력 표면 블록이 로컬 버퍼로 페치되어야 할 때, 로컬 버퍼에 이미 저장된 입력 표면 블록은, 필요한 경우에, 바람직하게는 가장 최근에 사용된 교체 프로세스와 같은 적합한 블록 교체 메커니즘을 이용하여, 퇴거된다(새로운 블록으로 교체된다).In one preferred embodiment, the operation, eg the input stage, first determines if the required input surface block already exists in the local buffer, and then if it is determined that the input surface block does not already exist in the local buffer. , it is configured only to fetch its input surface block from memory into a local buffer. Correspondingly, in one preferred embodiment, when a new input surface block is to be fetched into the local buffer, the input surface block already stored in the local buffer is, if necessary, preferably a suitable block, such as the most recently used replacement process. It is evicted (replaced by a new block) using the replacement mechanism.

변환 스테이지에 의해 생성된 출력 변환된 표면은 임의의 적합하고 원하는 방식으로 디스플레이에 디스플레이를 위한 출력 표면으로서 제공하기 위한 디스플레이를 위한 출력 표면으로서 출력 스테이지에 제공될 수 있다.The output transformed surface produced by the conversion stage may be provided to the output stage as an output surface for a display to present as an output surface for display to a display in any suitable and desired manner.

바람직한 일 실시예에서, 변환 스테이지의 출력(예를 들어, 출력 변환된 표면 샘플링 위치(데이터 요소)의 스트림)은 처리를 위하여 디스플레이 처리 파이프라인의 나머지에 적합하게 출력된다. 예를 들어, 그리고 바람직하게는, 디스플레이 이전에 임의의 원하는 추가 처리를 위하여 디스플레이 컨트롤러의 추가 처리 스테이지, 예를 들어, 그리고 바람직하게는 합성(composition) 스테이지에 제공될 수 있고, 바람직한 실시예에서는 제공된다.In a preferred embodiment, the output of the transform stage (eg, a stream of output transformed surface sampling locations (data elements)) is output suitable for the rest of the display processing pipeline for processing. For example, and preferably, a further processing stage of the display controller, for example, and preferably a composition stage, for any desired further processing prior to display, and in a preferred embodiment provided do.

따라서, 바람직한 일 실시예에서, 출력 변환된 표면을 디스플레이를 위한 출력 표면으로서 제공하기 위하여 출력 스테이지에 제공하는 것은, 디스플레이 컨트롤러의 추가 처리 스테이지로 출력 변환된 표면을 제공하는 것과, 그 다음, 디스플레이로 디스플레이를 위한 출력 표면으로서 제공하도록 출력 스테이지로(또는, 예를 들어, 추가 처리 스테이지로) 이렇게 처리된 출력 변환된 표면을 제공하는 것을 포함한다. 출력 변환된 표면은, 원한다면, 출력 스테이지에 제공되기 전에 복수의 처리 스테이지에 제공될 수 있다.Thus, in one preferred embodiment, providing the output transformed surface to an output stage to serve as an output surface for a display is equivalent to providing the output transformed surface to a further processing stage of the display controller and then to the display. and providing the thus processed output transformed surface to an output stage (or, for example, to a further processing stage) to provide as an output surface for display. The output transformed surface may, if desired, be provided to a plurality of processing stages prior to being provided to the output stage.

특히 바람직한 일 실시예에서, 변환 스테이지의 출력(예를 들어, 변환 스테이지에 의해 생성된 출력 변환된 표면을 위한 샘플링 위치)은, 변환 스테이지로부터 변환 스테이지 및 디스플레이 컨트롤러의 후속 스테이지(예를 들어, 출력 스테이지 및/또는 출력 스테이지 이전의 하나 이상의 처리 스테이지) 사이의 버퍼, 예를 들어 지연 은폐(latency hiding) 버퍼 역할을 하는 적합한 버퍼(예를 들어, FIFO와 같은 지연 은폐 버퍼)로 출력된다.In one particularly preferred embodiment, the output of the translation stage (e.g., the sampling position for the output transformed surface produced by the translation stage) is transferred from the translation stage to the subsequent stage of the display controller (e.g., the output A buffer between stages and/or one or more processing stages prior to the output stage), eg a suitable buffer (eg a delay hiding buffer such as a FIFO) serving as a latency hiding buffer.

본 발명의 디스플레이 컨트롤러의 출력 스테이지는, 예를 들어, 디스플레이를 위한 출력 표면이 디스플레이에 디스플레이되게 하기 위하여, 디스플레이로 디스플레이를 위한 출력 표면을 제공하도록 동작 가능한 임의의 적합한 출력 스테이지일 수 있다. 출력 스테이지는 바람직하게는 디스플레이될 출력 표면에 필요한 디스플레이 처리 동작을 수행하는 처리 파이프라인을 포함한다. 출력 스테이지는 바람직하게는, 디스플레이를 위하여, 적합한 타이밍 제어 기능(예를 들어, 이는 적합한 수평 및 수직 블랭킹 기간을 가지면서 디스플레이에 픽셀 데이터를 전송하도록 구성된다)을 포함한다.The output stage of the display controller of the present invention may be any suitable output stage operable to provide an output surface for display to a display, for example, to cause the output surface for display to be displayed on the display. The output stage preferably includes a processing pipeline that performs the necessary display processing operations on the output surface to be displayed. The output stage preferably includes, for display, suitable timing control functions (eg it is configured to transmit pixel data to the display with suitable horizontal and vertical blanking periods).

변환 스테이지(그리고 이의 각각의 스테이지, 예를 들어, 좌표 보간기 스테이지, 색수차 보정 스테이지 및 시야 방위 변환 스테이지)는 임의의 적합하고 원하는 방식으로 구현될 수 있다. 예를 들어, 이들은 원하는 방식으로 동작하도록 프로그래밍될 수 있는 적합한 프로그래머블(programmable) 처리 회로를 이용하여 제공될 수 있다. 이들은 이 점에서 모두 상이한 동작을 수행하도록 각각 프로그래밍되는 동일한 프로그래머블 처리 회로에 의해 구현될 수 있거나, 또는 임의의 원하는 방식으로 동작하도록 각각 프로그래밍 가능한 개별 프로그래머블 스테이지가 있을 수 있다.The transformation stage (and each stage thereof, eg, coordinate interpolator stage, chromatic aberration correction stage, and field orientation transformation stage) may be implemented in any suitable and desired manner. For example, they may be provided using suitable programmable processing circuitry that can be programmed to operate in a desired manner. They may all be implemented in this respect by the same programmable processing circuit, each programmed to perform a different operation, or there may be separate programmable stages each programmable to operate in any desired manner.

그러나, 특히 바람직한 일 실시예에서, 변환 스테이지(그리고 이의 각각의 개별 스테이지)는 프로그래머블 처리 회로를 이용하여 제공되지 않고, 이 대신에, 필요한 처리 동작을 수행하도록 구성된 고정 기능(fixed function) 스테이지(고정 기능 처리 회로)로서 제공된다. 따라서, 특히 바람직한 일 실시예에서, 변환 스테이지(그리고 이의 해당하는 개별 스테이지들의 각각)는 필요한 동작을 수행할 수 있도록 구성되는(그리고 필요한 동작을 수행하기 위한 프로그래머블 처리 회로를 통해 소프트웨어 프로그램을 (실행하는 것이 아니라) 실행하지 않는) 고정 기능 하드웨어 유닛(회로)의 형태로 제공된다.However, in one particularly preferred embodiment, the conversion stages (and each individual stage thereof) are not provided using programmable processing circuitry, but instead fixed function stages (fixed function) configured to perform the necessary processing operations. function processing circuit). Thus, in one particularly preferred embodiment, the conversion stage (and each of its corresponding individual stages) is configured to perform the necessary operations (and executes (via a programmable processing circuit) a software program to perform the required operations). It is provided in the form of fixed function hardware units (circuits) that do not execute).

본 출원인은 이 점에서 입력 표면의 변환(예를 들어, 다양한 입력 표면 위치 결정)을 수행하도록 동작 가능한 고정 기능 회로를 제공하는 것이, 예를 들어 사용 중에 가변 딜레이 및 지연이 있을 수 있는 프로그래머블 회로를 이용하여 적합한 프로그램을 실행하는 것에 의해 동작이 구현되는 방식에 대조적으로, 변환 스테이지가 알려지고 신뢰성 있는(예를 들어, 고정된) 레이트로 자신의 동작을 수행할 수 있게 할 것이라는 것을 인식하였다. 따라서, 이것은 디스플레이 컨트롤러에서(디스플레이 컨트롤러의 디스플레이 처리 파이프라인에서) 본 발명의 동작을 실시간으로 수행하는 것을 추가로 가능하게 한다.Applicant believes in this respect that providing a fixed function circuit operable to perform transformations of the input surface (eg determining various input surface positions) is a programmable circuit that may have variable delays and delays in use, for example. It has been recognized that, in contrast to the manner in which operations are implemented by running a suitable program using an appropriate program, a translation stage will enable it to perform its operations at a known and reliable (eg, fixed) rate. Thus, this further enables real-time performance of the operations of the present invention at the display controller (in the display processing pipeline of the display controller).

특히 바람직한 일 실시예에서, 고정 기능 회로가 변환 스테이지의 동작을 수행하는데 사용되는 경우에, 그 고정 기능 회로는 사용 중에 제한된 구성 가능성(configurability)을 갖도록 마련된다. 특히, 바람직하게는, 고정 기능 회로의 동작에서의 일부 변동 및 고정 기능 회로의 동작의 구성을 가능하게 하기 위하여, 회로가 수행하는 동작에 대하여 하나 이상의 제어 파라미터를 변경하는 것이 가능하다. 따라서, 바람직한 일 실시예에서, 변환 스테이지의 동작은 고정 기능 처리 회로를 이용하여 구현되지만, 이는 사용 중에 그 회로를 위하여 하나 이상의 특정 제어 파라미터, 바람직하게는 선택된 제어 파라미터를 설정함으로써 구성 가능하다.In one particularly preferred embodiment, where the fixed function circuit is used to perform the operation of the conversion stage, the fixed function circuit is arranged to have limited configurability during use. Particularly advantageously, it is possible to change one or more control parameters relative to the operation performed by the circuit in order to allow some variation in the operation of the fixed function circuit and configuration of the operation of the fixed function circuit. Thus, in one preferred embodiment, the operation of the translation stage is implemented using a fixed function processing circuit, but is configurable by setting one or more specific control parameters, preferably selected control parameters, for the circuit during use.

예를 들어, 변환 스테이지가, 예를 들어, 변환 스테이지의 한 스테이지가, 잠재적인 렌즈의 (기하학적) 왜곡을 보상하기 위하여 입력 표면을 변환하도록 동작 가능한 경우에, 회로는 일반적인 "렌즈 왜곡" 보상 프로세스를 수행하도록 구성될 수 있지만, 수행되는 프로세스의 정확한 파라미터는 사용 중에 설정될 수 있는 하나 이상의 제어 파라미터를 이용하여 설정된다. 예를 들어, 렌즈 왜곡은 렌즈 왜곡을 근사화하는 기준점을 갖는 2D 그리드를 이용하여 제어되고 표현될 수 있다.For example, where a translation stage is operable to transform an input surface to compensate for potential lens (geometric) distortion, for example one stage of the translation stage, the circuitry may be used in a general "lens distortion" compensation process. However, the exact parameters of the process being performed are set using one or more control parameters that can be set during use. For example, lens distortion can be controlled and expressed using a 2D grid with fiducial points approximating the lens distortion.

유사하게, 변환 스테이지가, 예를 들어, 변환 스테이지의 한 스테이지가, 잠재적인 색수차를 보상(보정)하기 위하여 입력 표면을 변환하도록 동작 가능한 경우에, 회로는 일반적인 "색수차" 보상(보정) 프로세스를 수행하도록 구성될 수 있지만, 수행되는 프로세스의 정확한 파라미터는 사용 중에 설정될 수 있는 하나 이상의 제어 파라미터를 이용하여 설정된다.Similarly, if the conversion stages are operable to transform the input surface to compensate for (correct) potential chromatic aberrations, for example one stage of the conversion stages, the circuit may perform the normal "chromatic aberration" compensation (correction) process. However, the exact parameters of the process being performed are set using one or more control parameters that can be set during use.

동일하게, 변환 스테이지가, 예를 들어, 변환 스테이지의 한 스테이지가, 수신된 시야 방위에 기초하여 입력 표면을 변환하도록 동작 가능한 경우에, 회로는 일반적인 "시야 방위" 변환 프로세스를 수행하도록 구성될 수 있지만, 수행되는 프로세스의 정확한 파라미터는 사용 중에 설정될 수 있는 하나 이상의 제어 파라미터(예를 들어, 오일러 각도 또는 사원수(quaternion))를 이용하여 설정된다.Equally, where the transform stage is operable to transform the input surface based on the received viewing orientation, for example one stage of the transforming stage, the circuitry may be configured to perform a general “viewing orientation” conversion process. However, the exact parameters of the process being performed are set using one or more control parameters (eg Euler angles or quaternions) that can be set in use.

이러한 방식들에서, 변환 스테이지를 위한 제어 파라미터는 원하는 바에 따라 설정될 수 있다. 예를 들어, 디스플레이 컨트롤러가 단지 특정의 주어진 가상 현실 헤드 마운트 디스플레이와 함께 동작하도록 구성되는 경우에(예를 들어, 고정된 가상 현실 헤드 마운트 디스플레이 시스템의 일부로서 제공되는 경우에), 변환 스테이지를 위한 제어 파라미터는 초기 설정 프로세스의 일부로서 그리고 사용 중에 변경되지 않도록 설정될 수 있다(즉, 변환 스테이지는, 단순히, 논의가 되고 있는 디스플레이를 위한 적합한 동작, 예를 들어, 렌즈 왜곡 보정 등을 수행하도록 사전 구성될 수 있다).In these approaches, the control parameters for the conversion stage can be set as desired. For example, if the display controller is only configured to operate with a particular given virtual reality head-mounted display (eg, provided as part of a fixed virtual reality head-mounted display system), the translation stage for The control parameters can be set as part of the initial setup process and not to change during use (i.e., the translation stage is simply preset to perform the appropriate operation for the display in question, e.g., lens distortion correction, etc. can be configured).

바람직한 일 실시예에서, 변환 스테이지를 위한 제어 파라미터는, 예를 들어, 그리고 바람직하게는, 디스플레이를 위한 디스플레이 컨트롤러로 입력 표면을 제공하는 애플리케이션에 의해 그리고/또는 디스플레이 컨트롤러를 위한 드라이버에 의해 사용 중에 설정될 수 있고, 바람직하게는 설정된다.In a preferred embodiment, the control parameters for the translation stage are set on-the-fly, for example, and preferably by an application providing an input surface to a display controller for the display and/or by a driver for the display controller. It can be, and is preferably set.

그 다음, 이는, 예를 들어, 디스플레이 컨트롤러가 상이한 헤드셋과 함께 사용될 수 있게 하고, 이를 위하여, 예를 들어, 렌즈 왜곡 보정 등이, 디스플레이 컨트롤러가 함께 사용되고 있는(디스플레이 컨트롤러가 연결된) 현재 헤드 마운트 디스플레이에 기초하여, 예를 들어, 드라이버에 의해, 사용 중에 설정될 수 있게 한다.This then allows, for example, the display controller to be used with different headsets, for which, for example, lens distortion correction, etc., the current head-mounted display with which the display controller is being used (to which the display controller is connected) based on , for example by a driver, to be set during use.

변환 스테이지에 의해 적용될 수 있는 색수차 보정과 같은 임의의 다른 동작이 유사하게 구성될 수 있다(즉, "고정된" 동작을 위하여 사전 구성(사전 저장)되거나, 또는 예를 들어 그리고 바람직하게는 디스플레이 컨트롤러를 위한 상이한 사용 상황을 고려하도록, 예를 들어, 드라이버에 의해, 사용 중에 설정 가능할 수 있다).Any other operations such as chromatic aberration correction that may be applied by the translation stage may be similarly configured (i.e. pre-configured (pre-stored) for "fixed" operation, or for example and preferably a display controller may be configurable during use, for example by a driver, to account for different usage situations for

위에서 논의된 입력 스테이지, 출력 스테이지 및 변환 스테이지뿐만 아니라, 본 발명의 디스플레이 컨트롤러는 그 외에 디스플레이 컨트롤러가 적합하게 포함할 수 있는 처리 스테이지 및 요소의 임의의 하나, 하나 이상 또는 전부를 포함할 수 있다.In addition to the input stages, output stages, and translation stages discussed above, the display controller of the present invention may include any one, one or more, or all of the other processing stages and elements that a display controller may suitably include.

위에서 논의된 바와 같이, 바람직한 일 실시예에서, 디스플레이 컨트롤러는, 예를 들어, 출력 표면을 생성하기 위하여, 표면 또는 표면들을 처리하도록 동작 가능한 처리 스테이지 또는 스테이지들을 포함한다.As discussed above, in one preferred embodiment, the display controller includes a processing stage or stages operable to process a surface or surfaces, for example to create an output surface.

처리 스테이지 또는 스테이지들은, 바람직하게는, 합성 출력 표면을 생성하기 위하여 (2 이상의) 입력 표면을 합성하는 것; 예를 들어, 하나 이상의 디코딩된(예를 들어, 압축 해제된) 입력 표면을 생성하기 위하여 입력 표면을 디코딩하는 것(예를 들어, 압축 해제하는 것); 예를 들어, 하나 이상의 회전된 입력 표면을 생성하기 위하여 입력 표면을 회전시키는 것; 그리고, 예를 들어, 하나 이상의 스케일링된 표면을 생성하기 위하여 하나 이상의 표면을 스케일링 하는 것(예를 들어, 업스케일링 및/또는 다운스케일링하는 것) 중 하나 이상, 그리고 바람직하게는 전부를 수행하도록 동작 가능하다.The processing stage or stages preferably include: compositing (two or more) input surfaces to create a composite output surface; decoding (eg, decompressing) an input surface, eg, to produce one or more decoded (eg, decompressed) input surfaces; rotating the input surface, eg, to create one or more rotated input surfaces; and to perform one or more, and preferably all, of, for example, scaling (eg, upscaling and/or downscaling) one or more surfaces to create one or more scaled surfaces. possible.

이러한 동작들이 동일한 처리 스테이지에 의해 수행될 수 있거나, 또는 원한다면, 예를 들어, 각각의 개별 합성 스테이지, 디코딩(압축 해제) 스테이지, 회전 스테이지 및/또는 스케일링 스테이지가 있을 수 있다. 또한, 원한다면, 입력 스테이지에서 이 기능의 일부 또는 전부를 제공하는 것이 가능할 것이다.These operations may be performed by the same processing stage, or if desired, there may be, for example, each separate synthesis stage, decoding (decompression) stage, rotation stage and/or scaling stage. Also, if desired, it would be possible to provide some or all of this functionality at the input stage.

디스플레이 컨트롤러는 바람직하게는, 예를 들어, 변환 스테이지, 스케일링 스테이지 및/또는 합성 스테이지 또는 그 외의 것으로 하나 이상의 처리된 입력 표면을 제공하기 전에, 적합한 바에 따라, 하나 이상의 입력 표면에 하나 이상의 처리 동작을 수행하도록 동작 가능한 하나 이상의 레이어 파이프라인을 더 포함한다. 디스플레이 컨트롤러가 복수의 입력 레이어를 핸들링할 수 있는 경우에, 비디오 레이어 파이프라인 또는 파이프라인들, 그래픽 레이어 파이프라인 등과 같은 복수의 레이어 파이프라인이 있을 수 있다. 이러한 레이어 파이프라인들은, 예를 들어, 픽셀 언패킹, 컬러 변환, (역) 감마 보정 및 이와 유사한 것과 같은 픽셀 처리 기능을 제공하도록 동작 가능할 수 있다.The display controller preferably applies one or more processing operations to one or more input surfaces, as appropriate, prior to presenting the one or more processed input surfaces to, for example, a translation stage, scaling stage, and/or compositing stage or the like. and one or more layer pipelines operable to perform. In cases where a display controller can handle multiple input layers, there may be multiple layer pipelines such as a video layer pipeline or pipelines, a graphics layer pipeline, and the like. These layer pipelines may be operable to provide pixel processing functions such as, for example, pixel unpacking, color conversion, (inverse) gamma correction, and the like.

또한, 디스플레이 컨트롤러는 하나 이상의 표면에 하나 이상의 처리 동작을 수행하도록, 예를 들어, 후처리된 표면을 생성하도록 동작 가능한 후처리 파이프라인을 포함할 수 있다. 이 후처리는, 예를 들어, 컬러 변환, 디더링 및/또는 감마 보정을 포함할 수 있다.Additionally, the display controller may include a post-processing pipeline operable to perform one or more processing operations on one or more surfaces, eg, to create a post-processed surface. This post-processing may include, for example, color conversion, dithering, and/or gamma correction.

바람직한 일 실시예에서, 디스플레이 컨트롤러는 외부 메모리로 출력 표면을 기록하도록 동작 가능한 기록(write-out) 스테이지를 더 포함한다. 이것은 디스플레이 컨트롤러가, 예를 들어, 그리고 바람직하게는, 출력 표면이 디스플레이에 디스플레이되고 있는 것과 동시에, 예를 들어, 외부 메모리(예를 들어, 프레임 버퍼)로 출력 표면을 (선택적으로) 기록할 수 있게 할 것이다.In one preferred embodiment, the display controller further comprises a write-out stage operable to write the output surface to external memory. This allows the display controller to (optionally) write the output surface, eg to an external memory (eg frame buffer), eg, and preferably, at the same time that the output surface is being displayed on the display. will make it

이러한 방식에서, 바람직한 일 실시예에서, 디스플레이 컨트롤러는 이에 따라 출력 변환된 표면을 디스플레이하고 이를 외부 메모리에 기록하도록 동작한다(이것이 변환 스테이지에 의해 생성되어 제공되고 있는 동안에). 이것은, 예를 들어, 출력 변환된(시간 워프된) 표면이 상이한 값의 세트를 이전("기준") 출력 변환된 표면에 적용함으로써 생성되는데 요구될 수 있는 경우에 유용할 수 있다. 이 경우에, 디스플레이 컨트롤러의 기록 스테이지는, 그 다음에 장래의 출력 변환된 표면을 생성할 때 사용하기 위하여 이용 가능하도록, 예를 들어, "기준" 출력 변환된 표면을 메모리에 저장하는데 사용될 수 있다.In this way, in one preferred embodiment, the display controller is operative to display the thus output transformed surface and write it to external memory (while it is being generated and presented by the transformation stage). This can be useful, for example, where an output transformed (time warped) surface may be required to be created by applying a different set of values to a previous ("baseline") output transformed surface. In this case, the write stage of the display controller can then be used to store, eg, a "reference" output transformed surface in memory so that it is available for use in creating future output transformed surfaces. .

물론, 다른 방식도 가능할 것이다.Of course, other methods are also possible.

디스플레이 컨트롤러의 다양한 스테이지는, 예를 들어, 하나 이상의 고정 기능 유닛(하드웨어)(즉, 변경될 수 없는 하나 이상의 기능에 전용임)의 형태로, 또는, 예를 들어, 원하는 동작을 수행하기 위하여 프로그래밍될 수 있는 프로그래머블 회로를 이용하는 하나 이상의 프로그래머블 처리 스테이지로서, 원하는 바에 따라 구현될 수 있다. 고정 기능 스테이지 및 프로그래머블 스테이지가 모두 있을 수 있다.The various stages of the display controller may be, for example, in the form of one or more fixed function units (hardware) (ie dedicated to one or more functions that cannot be changed), or programmed, for example, to perform desired operations. One or more programmable processing stages using programmable circuitry, which can be implemented as desired. There can be both fixed function stages and programmable stages.

디스플레이 컨트롤러의 다양한 스테이지의 하나 이상이 서로 분리된 회로 요소로서 제공될 수 있다. 추가로 또는 대신에, 스테이지의 일부 또는 전부가 공유된 회로로 적어도 부분적으로 형성될 수 있다.One or more of the various stages of the display controller may be provided as separate circuit elements. Additionally or alternatively, some or all of the stages may be formed at least in part from shared circuitry.

또한, 디스플레이 컨트롤러가, 예를 들어, 2개의 디스플레이 처리 코어를 포함하는 것도 가능할 수 있고, 코어의 하나 이상 또는 전부는, 원한다면, 본 발명의 방식으로 구성된다.It may also be possible for the display controller to include, for example, two display processing cores, one or more or all of the cores being configured in the manner of the present invention, if desired.

본 발명의 디스플레이 컨트롤러가 함께 사용되는 디스플레이는, 예를 들어, 스크린과 같은, 임의의 적합하고 원하는 디스플레이(디스플레이 패널)일 수 있다. 이는 전체 데이터 처리 시스템의(장치의) 로컬 디스플레이(스크린) 및/또는 외부 디스플레이를 포함할 수 있다. 원한다면, 2 이상의 디스플레이 출력이 있을 수 있다.The display with which the display controller of the present invention is used can be any suitable and desired display (display panel), such as, for example, a screen. This may include local displays (screens) of the entire data processing system (of the device) and/or external displays. If desired, there may be more than one display output.

특히 바람직한 일 실시예에서, 디스플레이 컨트롤러가 함께 사용되는 디스플레이는 가상 현실 헤드 마운트 디스플레이를 포함한다. 그 디스플레이는 이에 따라 바람직하게는 본 발명의 방식으로 생성된 출력 변환된 표면을 사용자에게 디스플레이하기 위한 디스플레이 패널과, 사용자가 시청할 디스플레이된 변환된 출력 표면이 통과하는 렌즈 또는 렌즈들을 포함한다.In one particularly preferred embodiment, the display with which the display controller is used comprises a virtual reality head mounted display. The display thus preferably comprises a display panel for displaying to the user the output transformed surface produced in the manner of the present invention, and a lens or lenses through which the displayed transformed output surface to be viewed by the user passes.

대응하여, 디스플레이는 바람직하게는 디스플레이의 현재 및/또는 상대 위치에 기초하여 시야 트래킹 정보를, 바람직하게는 주기적으로, 생성하고, 디스플레이를 위하여 출력 변환된 표면을 제공하도록 입력 표면을 변환할 때의 사용을 위하여 디스플레이 컨트롤러로(디스플레이 컨트롤러의 변환 스테이지로) 그 시야 방위 데이터 주기적으로 제공하도록 동작 가능한 시야 방위 결정(예를 들어, 머리 트래킹) 센서를 연관시켰다.Correspondingly, the display preferably generates eye tracking information, preferably periodically, based on the current and/or relative position of the display, when transforming the input surface to provide an output transformed surface for display. Associated a viewing orientation determination (eg, head tracking) sensor operable to periodically provide its viewing orientation data to the display controller for use (to the conversion stage of the display controller).

바람직한 일 실시예에서, 본 발명의 디스플레이 컨트롤러는 데이터 처리 시스템의 일부를 형성한다. 따라서, 본 발명의 다른 양태에 따르면, 본 발명에 따른 디스플레이 컨트롤러를 포함하는 데이터 처리 시스템이 제공된다.In one preferred embodiment, the display controller of the present invention forms part of a data processing system. Accordingly, according to another aspect of the present invention, a data processing system comprising a display controller according to the present invention is provided.

또한, 데이터 처리 시스템은 중앙 처리 유닛, 그래픽 처리 유닛, 비디오 프로세서(코덱), 시스템 버스 및 메모리 컨트롤러의 하나 이상, 그리고 바람직하게는 전부를 포함할 수 있고, 바람직하게는 포함한다.Further, the data processing system may include, and preferably includes, one or more, and preferably all, of a central processing unit, a graphics processing unit, a video processor (codec), a system bus, and a memory controller.

디스플레이 컨트롤러 및/또는 데이터 처리 시스템은 다음 중 하나 이상과 통신하도록 구성될 수 있고, 바람직하게는 구성된다(그리고 본 발명은 또한 다음 중 하나 이상을 포함하는 방식으로 확장된다): 외부 메모리(예를 들어, 메모리 컨트롤러를 통해서), 하나 이상의 로컬 디스플레이 및/또는 하나 이상의 외부 디스플레이. 외부 메모리는 바람직하게는 전체 데이터 처리 시스템의 메인 메모리(예를 들어, 중앙 처리 유닛(CPU)과 공유됨)를 포함한다.The display controller and/or data processing system may be, and preferably is, configured to communicate with one or more of the following (and the present invention extends in a manner that also includes one or more of the following): External memory (e.g. eg, through a memory controller), one or more local displays, and/or one or more external displays. The external memory preferably includes the main memory (eg shared with a central processing unit (CPU)) of the entire data processing system.

따라서, 일부 실시예에서, 디스플레이 컨트롤러 및/또는 데이터 처리 시스템은, 하나 이상의 본 명세서에서 설명된 데이터를 저장하고 그리고/또는 본 명세서에서 설명된 프로세스를 수행하기 위한 소프트웨어를 저장하는 하나 이상의 메모리 및/또는 메모리 장치를 포함하고, 그리고/또는 이와 통신한다. 디스플레이 컨트롤러 및/또는 데이터 처리 시스템은 또한 호스트 마이크로프로세서와 통신하고 그리고/또는 이를 포함할 수 있고, 그리고/또는 디스플레이 컨트롤러에 의해 생성된 데이터에 기초하여 이미지를 디스플레이하기 위한 디스플레이와 통신하고 그리고/또는 이를 포함할 수 있다.Accordingly, in some embodiments, the display controller and/or data processing system may include one or more memories and/or memory that stores software for storing one or more data described herein and/or performing processes described herein. or a memory device, and/or in communication with it. The display controller and/or data processing system may also communicate with and/or include a host microprocessor and/or communicate with a display for displaying images based on data generated by the display controller and/or may include this.

대응하여, 본 발명의 추가 양태에 따라,Correspondingly, according to a further aspect of the invention,

메인 메모리;main memory;

디스플레이;display;

디스플레이를 위한 입력 표면을 생성하고 메인 메모리에 입력 표면을 저장하도록 동작 가능한 하나 이상의 처리 유닛; 및one or more processing units operable to create an input surface for display and to store the input surface in main memory; and

디스플레이 컨트롤러를 포함하는 데이터 처리 시스템이 제공되고, 디스플레이 컨트롤러는,A data processing system is provided that includes a display controller, the display controller comprising:

메인 메모리에 저장된 입력 표면을 판독하도록 동작 가능한 입력 스테이지;an input stage operable to read an input surface stored in main memory;

디스플레이로의 디스플레이를 위하여 출력 표면을 제공하도록 동작 가능한 출력 스테이지; 및an output stage operable to provide an output surface for display on a display; and

수신된 시야 방위 데이터에 기초하여 입력 스테이지에 의해 판독된 입력 표면을 변환하여, 입력 표면의 변환된 버전을 출력 변환된 표면으로서 제공하고, transforming the input surface read by the input stage based on the received viewing orientation data to provide a transformed version of the input surface as an output transformed surface;

디스플레이로의 디스플레이를 위한 출력 표면으로서 제공하기 위하여 출력 스테이지에 출력 변환된 표면을 제공하도록 동작 가능한 변환 스테이지를 포함한다.and a conversion stage operable to provide an output transformed surface to the output stage for providing as an output surface for display to a display.

당해 기술 분야에서의 통상의 기술자에 의해 이해되는 바와 같이, 본 발명의 이러한 양태들과 실시예들은, 본 명세서에서 설명된 본 발명의 바람직하고 선택적인 특징들의 하나 이상 그리고 바람직하게는 전부를 포함할 수 있고 바람직하게는 포함한다.As will be appreciated by those skilled in the art, these aspects and embodiments of the invention may include one or more and preferably all of the preferred and optional features of the invention described herein. may and preferably include.

따라서, 예를 들어, 디스플레이 컨트롤러는 바람직하게는 하나 이상의 로컬 버퍼를 더 포함하며, 이의 입력 스테이지는 바람직하게는 메인 메모리로부터 디스플레이 컨트롤러의 로컬 버퍼 또는 버퍼들로(그 다음 변환 스테이지에 의한 처리를 위하여) 디스플레이 컨트롤러에 의해 처리될 입력 표면의 데이터를 페치하도록 동작 가능하다.Thus, for example, the display controller preferably further comprises one or more local buffers, the input stage of which preferably goes from main memory to the local buffer or buffers of the display controller (for processing by the subsequent conversion stage). ) to fetch data of the input surface to be processed by the display controller.

본 발명의 디스플레이 컨트롤러 및 데이터 처리 시스템의 사용에 있어서, 하나 이상의 입력 표면이, 예를 들어, 그리고 바람직하게는, GPU, CPU 및/또는 비디오 코덱 등에 의해 생성되고, 메모리에 저장될 것이다. 이러한 입력 표면은 그 다음 디스플레이로 디스플레이를 위한 출력 표면을 제공하기 위하여 디스플레이 컨트롤러에 의해 처리될 것이다.In use of the display controller and data processing system of the present invention, one or more input surfaces will be created and stored in memory, for example and preferably by GPUs, CPUs and/or video codecs, etc. This input surface will then be processed by the display controller to provide an output surface for display to the display.

본 발명이 특히 입력 표면으로부터 단일의 출력 변환된 표면의 생성을 참조하여 위에서 설명되었지만, 당해 기술 분야에서의 통상의 기술자에 의해 이해되는 바와 같이, 적어도 본 발명의 바람직한 실시예에서, 생성되는 복수의 입력 표면이 있을 것이어서, 사용자에게 디스플레이될 프레임 시퀀스의 연속하는 프레임을 나타낸다. 디스플레이 컨트롤러의 변환 스테이지는 이에 따라 바람직하게는 디스플레이를 위하여 복수의 출력 변환된 표면의 시퀀스를 제공하도록 동작할 것이다. 따라서, 특히 바람직한 일 실시예에서, 본 발명의 방식에서의 동작은 사용자로의 디스플레이를 위한 복수의 출력 변환된 표면의 시퀀스를 생성하는데 사용된다. 대응하여, 본 발명의 방식에서의 동작은 바람직하게는 디스플레이될 복수의 출력 프레임에 대하여, 예를 들어, 그리고 바람직하게는, 디스플레이될 프레임 시퀀스에 대하여 반복된다.While the present invention has been described above with particular reference to the creation of a single output transformed surface from an input surface, as will be appreciated by those skilled in the art, at least in preferred embodiments of the present invention, a plurality of generated There will be an input surface, representing successive frames of the frame sequence to be displayed to the user. The conversion stage of the display controller will thus preferably operate to provide a sequence of a plurality of output converted surfaces for display. Thus, in one particularly preferred embodiment, operations in the manner of the present invention are used to generate a sequence of a plurality of output transformed surfaces for display to a user. Correspondingly, the operation in the inventive scheme is preferably repeated for a plurality of output frames to be displayed, for example, and preferably for a sequence of frames to be displayed.

또한, 출력 변환된 표면의 생성은, 이에 따라, 그리고 대응하여, 사용자의 왼쪽 눈과 오른쪽 눈에 각각 디스플레이될 "왼쪽" 및 "오른쪽" 출력 변환된 표면의 시퀀스를 생성하는 것을 포함할 수 있다. "왼쪽" 및 "오른쪽" 출력 변환된 표면의 각각의 쌍은, 원하는 바에 따라, 공통 입력 표면으로부터 또는 해당하는 "왼쪽" 및 "오른쪽" 입력 표면으로부터 생성될 수 있다.Additionally, creating the power transformed surface may accordingly and correspondingly include creating a sequence of “left” and “right” power transformed surfaces to be displayed to the user's left and right eyes, respectively. Each pair of “left” and “right” output transformed surfaces may be generated from a common input surface or from corresponding “left” and “right” input surfaces, as desired.

본 발명은 적합하게 구성된 마이크로프로세서 기반 시스템과 같은 임의의 적합한 시스템에 구현될 수 있다. 일 실시예서, 본 발명은 컴퓨터 및/또는 마이크로프로세서 기반 시스템에 구현될 수 있다.The invention may be implemented in any suitable system, such as a suitably configured microprocessor based system. In one embodiment, the invention may be implemented in a computer and/or microprocessor based system.

본 발명은 바람직하게는, 가상 현실 헤드셋과 같은, 그리고 바람직하게는 가상 현실 헤드셋인, 가상 현실 디스플레이 장치에 구현된다. 따라서, 본 발명의 다른 양태에 따라, 본 발명의 양태들 및 실시예들 중 임의의 하나 이상의 디스플레이 컨트롤러 및/또는 데이터 처리 시스템을 포함하는 가상 현실 디스플레이 장치가 제공된다. 대응하여, 본 발명의 다른 양태에 따라, 본 발명의 양태들 및 실시예들 중 임의의 하나 이상의 방식으로 가상 현실 디스플레이 장치를 동작시키는 단계를 포함하는 가상 현실 디스플레이 장치 동작 방법이 제공된다.The present invention is preferably implemented in a virtual reality display device, such as, and preferably a virtual reality headset. Accordingly, according to another aspect of the present invention there is provided a virtual reality display device comprising a display controller and/or data processing system of any one or more of the aspects and embodiments of the present invention. Correspondingly, according to another aspect of the present invention, there is provided a method of operating a virtual reality display device comprising operating the virtual reality display device in the manner of any one or more of the aspects and embodiments of the present invention.

본 발명의 다양한 기능은 임의의 적합하고 원하는 방식으로 수행될 수 있다. 예를 들어, 본 발명의 기능은, 원하는 바에 따라, 하드웨어 또는 소프트웨어에 구현될 수 있다. 따라서, 예를 들어, 달리 표시되지 않는다면, 본 발명의 다양한 기능 요소, 스테이지 및 "수단"은, 적합한 전용 하드웨어 요소(처리 회로) 및/또는 원하는 방식으로 동작하도록 프로그래밍될 수 있는 프로그래머블 하드웨어 요소(처리 회로)와 같은, 다양한 기능 등을 수행하도록 동작 가능한 적합한 프로세서 또는 프로세서들, 컨트롤러 또는 컨트롤러들, 기능 유닛, 회로, 처리 로직, 마이크로프로세서 장치 등을 포함할 수 있다.The various functions of the present invention may be performed in any suitable and desired manner. For example, the functionality of the present invention may be implemented in hardware or software, as desired. Thus, for example, unless otherwise indicated, the various functional elements, stages and "means" of the present invention may include suitable dedicated hardware elements (processing circuits) and/or programmable hardware elements (processing circuits) that can be programmed to operate in a desired manner. circuitry), a suitable processor or processors, controller or controllers, functional units, circuits, processing logic, microprocessor devices, etc. operable to perform various functions and the like.

또한, 당해 기술 분야에서의 통상의 기술자에 의해 이해되는 바와 같이, 본 발명의 다양한 기능 등이 주어진 프로세서에서 복사되고 그리고/또는 병렬로 실행될 수 있다는 것이 주목될 것이다. 동일하게, 다양한 처리 스테이지는, 원한다면, 처리 회로 등을 공유할 수 있다.Further, it will be noted that various functions and the like of the present invention may be copied and/or executed in parallel on a given processor, as will be appreciated by those skilled in the art. Equally, the various processing stages may share processing circuitry, etc., if desired.

또한, 본 발명의 처리 스테이지의 임의의 하나 이상 또는 전부는, 예를 들어, 하나 이상의 고정 기능 유닛(하드웨어)(처리 회로)의 형태로 그리고/또는 원하는 동작을 수행하도록 프로그래밍될 수 있는 프로그래머블 처리 회로의 형태로, 처리 스테이지 회로로서 구체화될 수 있다. 동일하게, 본 발명의 처리 스테이지 및 처리 스테이지 회로의 임의의 하나 이상은 개별 회로 요소로서 다른 처리 스테이지 또는 처리 스테이지 회로의 임의의 하나 이상에 제공될 수 있고, 그리고/또는 처리 스테이지 및 처리 스테이지 회로의 임의의 하나 이상 또는 전부는 적어도 부분적으로 공유된 처리 회로로 형성될 수 있다.Additionally, any one or more or all of the processing stages of the present invention may be, for example, in the form of one or more fixed function units (hardware) (processing circuits) and/or programmable processing circuits that may be programmed to perform desired operations. In the form of, may be embodied as a processing stage circuit. Equally, any one or more of the processing stages and processing stage circuits of the present invention may be provided as discrete circuit elements on any one or more of the other processing stages or processing stage circuits, and/or of processing stages and processing stage circuits. Any one or more or all of them may be formed at least in part with shared processing circuitry.

또한, 본 발명의 설명된 양태들 및 실시예들의 전부가, 적합한 바에 따라, 본 명세서에 설명된 본 발명의 바람직하고 선택적인 특징들의 임의의 하나 이상 또는 전부를 포함할 수 있고, 일 실시예에서는 포함한다는 것이 당해 기술 분야에서의 통상의 기술자에 의해 이해될 것이다.Further, all of the described aspects and embodiments of the present invention may, as appropriate, include any one or more or all of the preferred and optional features of the present invention described herein, and in one embodiment It will be understood by one of ordinary skill in the art to include.

본 발명에 따른 방법은 적어도 부분적으로 소프트웨어, 예를 들어, 컴퓨터 프로그램을 이용하여 구현될 수 있다. 따라서, 추가 실시예로부터 고려될 때, 본 발명은 데이터 프로세서에 설치될 때 본 명세서에서 설명된 방법을 수행하도록 구체적으로 맞추어진 컴퓨터 소프트웨어를 제공하는 것을 알 수 있을 것이고, 컴퓨터 프로그램 요소는 프로그램 요소가 데이터 프로세서에서 실행될 때 본 명세서에서 설명된 방법을 수행하기 위한 컴퓨터 소프트웨어 코드 부분을 포함하고, 컴퓨터 프로그램은 프로그램이 데이터 처리 시스템에서 실행될 때 본 명세서에서 설명된 방법 또는 방법들의 모든 단계를 수행하도록 맞추어진 소프트웨어 코드를 포함한다. 데이터 프로세서는 마이크로프로세서 시스템, 프로그래머블 FPGA(field programmable gate array) 등일 수 있다.The method according to the invention can be implemented at least partly using software, eg a computer program. Accordingly, when considered from further embodiments, it will be seen that the present invention provides computer software specifically adapted to perform the methods described herein when installed on a data processor, the computer program elements comprising the program elements A computer program comprising computer software code portions for performing the methods described herein when executed on a data processor, wherein the computer program is adapted to perform the method or all steps of the methods described herein when the program is executed on a data processing system. contains software code; The data processor may be a microprocessor system, a programmable field programmable gate array (FPGA), or the like.

또한, 본 발명은 디스플레이 컨트롤러 또는 데이터 프로세서를 포함하는 마이크로프로세서를 동작시키는데 사용될 때 상기 데이터 프로세서와 함께 상기 컨트롤러 또는 시스템이 본 발명의 방법의 단계를 실행하게 하는 소프트웨어를 포함하는 컴퓨터 소프트웨어 캐리어로 확장된다. 이러한 컴퓨터 소프트웨어 캐리어는 ROM 칩, CD ROM, RAM, 플래시 메모리 또는 디스크와 같은 물리적 저장 매체일 수 있거나, 또는 유선을 통한 전자 신호, 광 신호 또는 예를 들어 위성 등으로의 무선 신호와 같은 신호일 수 있다.The invention also extends to a computer software carrier containing software which, when used to operate a microprocessor containing a display controller or data processor, causes said controller or system, together with said data processor, to execute the steps of the method of the invention. . Such a computer software carrier may be a physical storage medium such as a ROM chip, CD ROM, RAM, flash memory or disk, or may be a signal such as an electronic signal over a wire, an optical signal or a radio signal, for example to a satellite or the like. .

본 발명의 방법의 모든 단계들이 컴퓨터 소프트웨어에 의해 실행될 필요가 없다는 것이 더 이해될 것이고, 따라서 더 넓은 실시예로부터, 본 발명은 컴퓨터 소프트웨어 및 본 명세서에서 시작된 방법의 단계들 중 적어도 하나를 실행하기 위한 컴퓨터 소프트웨어 캐리어에 설치된 이러한 소프트웨어를 제공한다.It will be further appreciated that not all steps of the methods of the present invention need be executed by computer software, and thus, from a broader embodiment, the present invention provides computer software and methods for executing at least one of the steps of the methods disclosed herein. Provide such software installed on a computer software carrier.

이에 따라 본 발명은 컴퓨터 시스템과 함께 사용하기 위한 컴퓨터 프로그램 제품으로서 적합하게 구체화될 수 있다. 이러한 구현은 컴퓨터 판독 가능한 매체, 예를 들어, 디스켓, CD-ROM, ROM, RAM, 플래시 메모리 또는 하드 디스크와 같은, 유형의 비일시적인 매체에 고착된 일련의 컴퓨터 판독 가능한 명령어를 포함할 수 있다. 또한, 이는 모뎀이나 다른 인터페이스 장치를 통해서, 광 또는 아날로그 통신 라인을 포함하지만 이에 한정되지 않는 유형의 매체를 통하거나 마이크로파, 적외선 또는 다른 송신 기술을 포함하지만 이에 한정되지 않는 무선 기술을 무형으로 이용하여, 컴퓨터 시스템에 송신 가능한 일련의 컴퓨터 판독 가능한 명령어를 포함할 수 있다.Accordingly, the present invention may be suitably embodied as a computer program product for use with a computer system. Such an implementation may include a set of computer readable instructions affixed to a tangible, non-transitory medium such as a computer readable medium, for example a diskette, CD-ROM, ROM, RAM, flash memory or hard disk. It may also be through a modem or other interface device, over a tangible medium including, but not limited to, optical or analog communication lines, or by intangible use of radio technologies, including but not limited to microwave, infrared, or other transmission technologies. , a set of computer readable instructions transmittable to a computer system.

당해 업계에서의 통상의 기술자는 이러한 컴퓨터 판독 가능한 명령어가 많은 컴퓨터 아키텍처 또는 운영 체제와 함께 사용하기 위하여 다수의 프로그래밍 언어로 작성될 수 있다는 것을 이해할 것이다. 또한, 이러한 명령어는 반도체, 자기 또는 광학을 포함하지만 이에 한정되지 않는 현재 또는 장래의 임의의 메모리 기술을 이용하여 저장될 수 있거나, 광, 적외선 또는 마이크로파를 포함하지만 이에 한정되지 않는 현재 또는 장래의 임의의 통신 기술을 이용하여 송신될 수 있다. 이러한 컴퓨터 프로그램 제품이, 예를 들어, 상용(shrink-wrapped) 소프트웨어인 첨부된 인쇄 문서 또는 전자 문서를 갖는 탈착 가능한 매체로서 배포되거나, 예를 들어, 시스템 ROM 또는 고정 디스크에서 컴퓨터 시스템에 사전 로딩되거나, 또는 네트워크, 예를 들어, 인터넷 또는 월드 와이드 웹(World Wide Web)을 통해 서버 또는 전자 게시판으로부터 배포될 수 있다는 것이 고려된다.Those skilled in the art will understand that such computer readable instructions can be written in a number of programming languages for use with many computer architectures or operating systems. Further, such instructions may be stored using any current or future memory technology including but not limited to semiconductor, magnetic or optical, or any present or future including but not limited to optical, infrared or microwave. It can be transmitted using the communication technology of. Such computer program products may be distributed as removable media with attached printed or electronic documentation, e.g. shrink-wrapped software, or pre-loaded into a computer system, e.g., in a system ROM or fixed disk, or , or from a server or bulletin board via a network, eg, the Internet or the World Wide Web.

이제 본 발명의 다양한 실시예들이 단지 예로서 그리고 다음의 첨부된 도면을 참조하여 설명될 것이다:
도 1은 예시적인 데이터 처리 시스템을 도시한다;
도 2 및 3은 헤드 마운트 가상 현실 디스플레이 시스템에서의 "시간 워프" 렌더링의 프로세스를 예시한다;
도 4는 본 발명의 일 실시예에 따라 동작될 수 있는 디스플레이 컨트롤러를 개략적으로 도시한다;
도 5는 도 4의 디스플레이 컨트롤러의 변환 스테이지를 더욱 상세히 도시한다;
도 6은 도 4의 디스플레이 컨트롤러의 변환 스테이지의 동작을 더욱 상세히 도시하는 흐름도이다;
도 7은 본 발명의 일 실시예에서 디스플레이를 위한 출력 변환된 표면의 생성을 개략적으로 도시한다;
도 8은 예시적인 가상 현실 헤드 마운트 디스플레이 헤드셋을 개략적으로 도시한다;
도 9는 데이터 처리 시스템에서의 디스플레이를 위한 프레임의 제공을 개략적으로 도시한다;
도 10은 본 발명의 일 실시예에서 데이터 처리 시스템에서의 디스플레이를 위한 프레임의 제공을 개략적으로 도시한다;
도 11은 본 발명의 일 실시예에서 데이터 처리 시스템에서의 디스플레이를 위한 프레임의 제공을 더욱 상세하게 개략적으로 도시한다; 그리고,
도 12는 본 발명의 일 실시예에서 사용될 수 있는 렌즈 왜곡 보정 파라미터의 일례를 개략적으로 도시한다.
유사한 도면 부호가 적절한 경우에 도면 전체에 걸쳐 유사한 구성 요소에 대하여 사용된다.
Various embodiments of the present invention will now be described by way of example only and with reference to the accompanying drawings in which:
1 shows an exemplary data processing system;
2 and 3 illustrate the process of “time warp” rendering in a head mounted virtual reality display system;
4 schematically illustrates a display controller operable in accordance with one embodiment of the present invention;
Fig. 5 shows the conversion stage of the display controller of Fig. 4 in more detail;
Fig. 6 is a flow chart illustrating operation of the conversion stage of the display controller of Fig. 4 in more detail;
Figure 7 schematically illustrates the creation of an output transformed surface for display in one embodiment of the present invention;
8 schematically illustrates an exemplary virtual reality head mounted display headset;
9 schematically illustrates the provision of a frame for display in a data processing system;
Figure 10 schematically illustrates the provision of a frame for display in a data processing system in one embodiment of the present invention;
Figure 11 schematically illustrates in more detail the provision of a frame for display in a data processing system in one embodiment of the present invention; and,
12 schematically illustrates an example of a lens distortion correction parameter that may be used in one embodiment of the present invention.
Like reference numbers are used for like elements throughout the drawings where appropriate.

이제 본 발명의 다수의 바람직한 실시예들이 설명될 것이다.A number of preferred embodiments of the present invention will now be described.

본 발명 및 본 실시예는 가상 현실 디스플레이 시스템에서, 특히 헤드 마운트 가상 현실 디스플레이 시스템에서, 프레임을 사용자에게 디스플레이하는 프로세스에 관한 것이다.The present invention and its embodiments relate to a process for displaying frames to a user in a virtual reality display system, particularly in a head mounted virtual reality display system.

이러한 시스템은 도 1의 도시된 바와 같이(그리고, 전술된 바와 같이) 구성될 수 있고, 시스템의 디스플레이(4)는, 그 중에서도, 헤드 마운트 디스플레이를 착용하는 사용자에게 보여질 프레임을 디스플레이하기 위한 디스플레이 스크린 또는 스크린들(패널 또는 패널들)과, 사용자의 눈과 디스플레이 스크린 사이의 시야 경로(viewing path)에서의 하나 이상의 렌즈와, 사용시(이미지가 디스플레이에서 사용자에게 디스플레이되고 있는 동안) 사용자의 머리(및/또는 이의 시야(시선) 방향)의 위치(포즈)를 트래킹하기 위한 하나 이상의 센서를 구함하는 적합한 헤드 마운트 디스플레이를 포함한다.Such a system may be configured as shown in Figure 1 (and as described above), wherein the display 4 of the system is, inter alia, a display for displaying frames to be viewed by a user wearing a head mounted display. the screen or screens (panel or panels), one or more lenses in the viewing path between the user's eyes and the display screen, and, in use (while an image is being displayed on the display to the user) the user's head ( and/or a suitable head mounted display that seeks one or more sensors for tracking the position (pose) of its field of view (line of sight) direction.

도 8은 예시적인 가상 현실 헤드 마운트 디스플레이(85)를 개략적으로 도시한다. 도 8에 도시된 바와 같이, 헤드 마운트 디스플레이(85)는, 예를 들어, 디스플레이 스크린(패널)(87)이 장착되는 하나 이상의 머리 포즈 트래킹 센서를 구비하는 적합한 디스플레이 마운트(86)를 포함한다. 한 쌍의 렌즈(88)가 디스플레이 스크린(87)의 시야 경로에서 렌즈 마운트(89) 내에 장착된다. 마지막으로, 사용자가 헤드셋을 착용하기 위한 적합한 피팅(95)이 있다.8 schematically depicts an exemplary virtual reality head mounted display 85 . As shown in FIG. 8 , the head mounted display 85 includes a suitable display mount 86 having, for example, one or more head pose tracking sensors to which a display screen (panel) 87 is mounted. A pair of lenses 88 are mounted in a lens mount 89 in the viewing path of the display screen 87. Finally, there is a suitable fit 95 for the user to wear the headset.

도 1에 도시된 시스템에서, 디스플레이 컨트롤러(5)는 사용자의 시청을 위한 디스플레이(4)로 적합한 이미지를 제공하도록 동작할 것이다. 디스플레이 컨트롤러는 원하는 바에 따라 유선 또는 무선 방식으로 디스플레이(4)에 결합될 수 있다.In the system shown in Figure 1, the display controller 5 will operate to present an image suitable to the display 4 for viewing by a user. The display controller can be coupled to the display 4 in a wired or wireless manner as desired.

헤드 마운트 디스플레이(4)에 디스플레이되는 이미지는, 예를 들어, 전체 데이터 처리 시스템의 호스트 프로세서(CPU)(7)에서 실행되는 애플리케이션(10)으로부터의 이러한 렌더링을 위한 요청에 응답하여 그래픽 프로세서(GPU)(2)에 의해 렌더링되고 메인 메모리(3) 내에 이러한 프레임을 저장할 것이다. 그 다음, 디스플레이 컨트롤러(5)는 메모리(3)로부터 프레임을 입력 표면(surface)으로서 판독하여 사용자에 대한 디스플레이를 위하여 디스플레이(4)에 이러한 프레임을 적합하게 제공할 것이다.Images displayed on the head mounted display 4 are generated, for example, by a graphics processor (GPU) in response to a request for such rendering from an application 10 running on a host processor (CPU) 7 of the entire data processing system. ) (2) and will store these frames in main memory (3). The display controller 5 will then read the frames from the memory 3 as an input surface and properly provide these frames to the display 4 for display to the user.

본 실시예에서, 그리고 본 발명에 따라, 디스플레이 컨트롤러(5)는 사용자에 대한 디스플레이를 위하여 디스플레이(4)에 이러한 프레임을 제공하기 전에 메모리(3) 내에 저장된 프레임에 대한 이른바 "시간 워프(time warp)" 처리를 수행할 수 있도록 동작 가능하다.In this embodiment, and in accordance with the present invention, the display controller 5 performs a so-called "time warp" on the frames stored in the memory 3 before providing these frames to the display 4 for display to the user. )" processing is operable.

도 10 및 11은 이를 예시한다.10 and 11 illustrate this.

도 10에 도시된 바와 같이, 디스플레이 컨트롤러(93)는 디스플레이 패널(94)로의 제공을 위하여 그래픽 프로세서(CPU)(91)에 의해 생성되는 렌더링된 프레임(92)의 시간 워프 처리를 수행하도록 동작 가능한 시간 워프 모듈(변환 스테이지)(100)을 포함한다.As shown in FIG. 10 , a display controller 93 is operable to perform temporal warp processing of a rendered frame 92 generated by a graphics processor (CPU) 91 for presentation to a display panel 94 . A time warp module (transformation stage) 100 is included.

도 11은 시간 워프 처리를 수행할 때의 디스플레이 컨트롤러의 동작을 도시한다. 도 11에 도시된 바와 같이, 디스플레이될 렌더링된 프레임(92)이 먼저 메모리로부터 페치되고(fetched)(단계 110), 그 다음 디스플레이 컨트롤러(93)의 라인 버퍼와 같은 적합한 버퍼로 로딩된다(단계 111).Fig. 11 shows the operation of the display controller when performing time warp processing. As shown in Figure 11, the rendered frame 92 to be displayed is first fetched from memory (step 110) and then loaded into a suitable buffer, such as the line buffer of the display controller 93 (step 111). ).

그 다음, 시간 워프 처리가 이네이블되는지 판단된다(단계 112). (시간 워프 처리가 이네이블되지 않는다면, 로딩된 입력 프레임은 보통의 방식으로 디스플레이를 위하여 디스플레이(94)로 제공된다.)It is then determined whether temporal warp processing is enabled (step 112). (If time warp processing is not enabled, the loaded input frame is presented to display 94 for display in the usual way.)

시간 워프 처리가 이네이블되었다면, 페치된 입력 프레임은 호스트 프로세서(90)로부터 제공된 적합한 시간 워프 파라미터(114)에 기초하여 디스플레이 컨트롤러의 시간 워프 모듈(변환 스테이지)에 의해 처리되어, 디스플레이될 프레임의 적합하게 "시간 워프된(timewarped)" 버전을 제공한다(단계 113). "시간 워프된" 프레임은, 그 다음, 디스플레이를 위한 디스플레이(94)로의 제공을 위하여 디스플레이 처리 파이프라인의 나머지로(패널 신호 생성기(115)로) 보통의 방식으로 제공된다.If time warp processing is enabled, the fetched input frames are processed by the display controller's time warp module (conversion stage) based on the appropriate time warp parameters 114 provided from the host processor 90 to determine the fit of the frame to be displayed. provides a "timewarped" version (step 113). The "time warped" frames are then provided in the usual manner to the rest of the display processing pipeline (to panel signal generator 115) for presentation to display 94 for display.

이제, 본 실시예에서의 "시간 워프" 동작을 수행하기 위한 디스플레이 컨트롤러(5)의 구성과 이 동작의 프로세스가 더욱 상세하게 설명될 것이다.Now, the configuration of the display controller 5 for performing the "time warp" operation in this embodiment and the process of this operation will be described in more detail.

도 4는 디스플레이 컨트롤러(5)를 더욱 상세히 개략적으로 도시한다. 도 4에서, 박스들은 디스플레이 컨트롤러의 기능 유닛들을 나타내고, 화살표 기호가 있는 선들은 다양한 기능 유닛들 사이의 연결을 나타낸다.4 schematically shows the display controller 5 in more detail. In FIG. 4 , boxes represent functional units of the display controller, and lines with arrow symbols represent connections between various functional units.

도 4에 도시된 바와 같이, 디스플레이 컨트롤러(5)는, 그 중에서도, 다이렉트 메모리 액세스(Direct Memory Access(DMA)) 판독 컨트롤러 형태의 판독 컨트롤러를 포함하는 메모리 판독 서브시스템(41)을 포함한다. 판독 컨트롤러는 메모리 버스(9)를 통해 메인 메모리(3)(도 4에는 도시되지 않음) 내의 하나 이상의 프레임 버퍼로부터 하나 이상의 입력 표면을 판독하도록 구성된다.As shown in Fig. 4, the display controller 5 comprises a memory read subsystem 41 comprising, inter alia, a read controller in the form of a Direct Memory Access (DMA) read controller. The read controller is configured to read one or more input surfaces from one or more frame buffers in main memory 3 (not shown in FIG. 4) via memory bus 9.

메모리 판독 서브시스템(41)은 하나 이상의 입력 표면을, 예를 들어 지연 은폐(latency hiding) 목적으로, 메모리로부터 판독됨에 따라, 로컬로 버퍼링하는데 사용되는 하나 이상의 실시간 FIFO(first-in-first-out) 모듈을 더 포함한다.Memory read subsystem 41 includes one or more real-time first-in-first-out (FIFO) interfaces used to locally buffer one or more input surfaces as they are read from memory, e.g., for latency hiding purposes. ) module.

본 실시예에서, 메모리 판독 서브시스템(41)은 합성된 출력 프레임을 생성하는데 사용되는 입력 레이어로서의 사용을 위하여 3개까지의 상이한 입력 표면을 제공(판독)하도록 구성된다. 3개의 입력 레이어는, 예를 들어, 비디오 프로세서(코덱)(1)에 의해 생성되는 하나 이상의 비디오 레이어와, 예를 들어, 그래픽 처리 유닛(GPU)(2)에 의해 생성되는 그래픽 윈도우인 하나 이상의 그래픽 레이어 등을 포함할 수 있다. 따라서, 도 4는 디스플레이 레이어로서 사용될 입력 표면으로부터 데이터를 각각 수신할 3개의 레이어 파이프라인(42, 43, 44)을 포함하는 디스플레이 컨트롤러(5)를 도시한다. 레이어 파이프라인에 의해 수신되는 임의의 입력 표면 또는 모든 입력 표면은, 원한다면, 디코더에 의한 디코딩 및/또는 회전 유닛에 의한 회전을 받았을 수 있다.In this embodiment, memory read subsystem 41 is configured to present (read) up to three different input surfaces for use as input layers used to generate synthesized output frames. The three input layers are, for example, one or more video layers generated by a video processor (codec) 1 and one or more graphic windows, eg generated by a graphics processing unit (GPU) 2. A graphic layer may be included. Figure 4 thus shows the display controller 5 comprising three layer pipelines 42, 43, 44 which will respectively receive data from the input surface to be used as the display layer. Any or all input surfaces received by the layer pipeline may have been subjected to decoding by the decoder and/or rotation by the rotation unit, if desired.

각각의 레어어 파이프라인(42, 43, 44)은, 수신된 데이터 워드로부터의 픽셀 언패킹, 컬러 변환(예를 들어, YUV에서 RGB로의 변환) 및 역 감마(inverse gamma) 또는 역 sRGB(inverse sRGB) 보정과 같은 적합한 동작을 수신된 표면에 수행한다.Each layer pipeline 42, 43, 44 performs pixel unpacking from received data words, color conversion (e.g., YUV to RGB conversion), and inverse gamma or inverse sRGB (inverse sRGB) data. sRGB) perform appropriate operations on the received surface.

도 4의 실시예가 3개의 레이어 파이프라인(그리고 이에 따라 3개까지의 입력 레이어)의 사용을 예시하지만, 논의가 되고 있는 애플리케이션에 따라(그리고 또한 임의의 실리콘 면적 제한 등에 따라), 본 발명에서 임의의 개수의 레이어 파이프라인이 제공되고 사용될 수 있다는 것이 이해될 것이다.Although the embodiment of Figure 4 illustrates the use of a three layer pipeline (and thus up to three input layers), depending on the application in question (and also subject to any silicon area limitations, etc.), the present invention may It will be appreciated that a number of layer pipelines may be provided and used.

레이어 처리 파이프라인(42, 43, 44)은 메모리 판독 서브시스템(41)에 의해 판독된 입력 표면의 데이터를 취하고, 예를 들어, 디스플레이를 위하여, 그 데이터 출력 표면으로부터 생성하는 디스플레이 컨트롤러(5)의 처리 스테이지 역할을 한다.The layer processing pipelines 42, 43, 44 take the data of the input surface read by the memory reading subsystem 41 and produce from that data output surface, e.g., for display, the display controller 5 serves as the processing stage for

디스플레이 컨트롤러(5)는 레이어 파이프라인(42, 43, 44)으로부터 입력을 수신할 수 있고, 예를 들어, 적합한 알파(alpha) 혼합 동작 등에 의해 합성된 출력 표면을 생성하도록 수신된 입력 레이어를 구성하도록 동작하는 합성 유닛(디스플레이 합성기)(46)을 더 포함한다.The display controller 5 may receive input from the layer pipelines 42, 43, 44 and construct the received input layers to produce a synthesized output surface, eg by suitable alpha blending operations or the like. and a synthesizing unit (display synthesizer) 46 operative to:

합성 유닛(46)으로부터의 합성된 출력 프레임은, 원하는 바에 따라, 디스플레이를 위하여 디스플레이 처리(전처리) 파이프라인(47) 및/또는 메모리 기록 서브시스템(48)으로 계속 전송된다.The synthesized output frames from compositing unit 46 are further sent to display processing (pre-processing) pipeline 47 and/or memory write subsystem 48 for display, as desired.

디스플레이 파이프라인(47)은 합성된 출력 표면(프레임)에 임의의 처리 동작(들)을 선택적으로 수행하고, 그 다음, 연관된 디스플레이에서의 적합한 디스플레이를 위하여 (처리된) 합성된 출력 프레임을 전송하도록 구성된다.Display pipeline 47 is configured to selectively perform any processing operation(s) on the synthesized output surface (frame) and then transmit the (processed) synthesized output frame for appropriate display on an associated display. It consists of

디스플레이 처리 파이프라인(47)은, 예를 들어, 컬러 변환을 합성된 출력 프레임에 적용하도록 동작 가능한 컬러 변환 스테이지, 디더링을 합성된 출력 프레임에 적용하도록 동작 가능한 디더링 스테이지 및/또는 감마 보정을 합성된 출력 프레임에 수행하도록 동작 가능한 감마 보정 스테이지를 포함할 수 있다.Display processing pipeline 47 may include, for example, a color conversion stage operable to apply a color transformation to the synthesized output frame, a dithering stage operable to apply dithering to the synthesized output frame, and/or gamma correction to the synthesized output frame. and a gamma correction stage operable to perform on the output frame.

또한, 디스플레이 처리 파이프라인(47)은 적합한 디스플레이 타이밍 기능을 포함한다. 따라서, 디스플레이 처리 파이프라인(47)은, 예를 들어, 적합한 수평 및 수직 블랭킹(blanking) 기간을 가지면서, 디스플레이 출력(49)으로 픽셀 데이터를 전송하도록 구성될 수 있다. 예를 들어, 수평 및 수직 동기 펄스(HSYNC, VSYNC)가 비블랭킹(non-blanking) 기간에 어서트된(asserted) DATAEN 신호와 함께 생성될 수 있다. 블랭킹 기간에, DATAEN은 디어스트되고(de-asserted), 데이터는 디스플레이에 전송되지 않는다(다음의 4개의 블랭킹 기간이 있다: 수평 프론트 포치(horizontal front porch) - HSYNC 펄스 전, 수평 백 포치(horizontal back porch) - HSYNC 펄스 후, 수직 프론트 포치(vertical front porch) - VSYNC 펄스 전, 수직 백 포치(vertical back porch) - VSYNC 펄스 후).Display processing pipeline 47 also includes suitable display timing functions. Accordingly, display processing pipeline 47 may be configured to transmit pixel data to display output 49, for example, with suitable horizontal and vertical blanking periods. For example, horizontal and vertical synchronization pulses (HSYNC, VSYNC) may be generated with the DATAEN signal asserted in a non-blanking period. In the blanking period, DATAEN is de-asserted and no data is sent to the display (there are four blanking periods: horizontal front porch - before the HSYNC pulse, horizontal back porch back porch - after HSYNC pulse, vertical front porch - before VSYNC pulse, vertical back porch - after VSYNC pulse).

또한, 원한다면, MIPI DPI, HDMI, 디스플레이 포트(Display Port) 등과 같은 다른 디스플레이 타이밍 및 데이터(픽셀) 패킹 스킴을 사용하는 것이 가능할 것이다.Also, if desired, it would be possible to use other display timing and data (pixel) packing schemes such as MIPI DPI, HDMI, Display Port, etc.

디스플레이 출력(49)은, 예를 들어, (예를 들어 데이터 처리 시스템이 그 일부인 모바일 장치, 스마트폰, 태블릿 등의) 데이터 처리 시스템의 로컬 디스플레이와 인터페이스할 수 있다.Display output 49 may interface with, for example, a local display of the data processing system (eg, a mobile device, smartphone, tablet, etc. of which the data processing system is a part).

디스플레이 처리 파이프라인(47)과 디스플레이 출력 제어 인터페이스(49)는 이에 따라 디스플레이(4)로의 디스플레이를 위하여 출력 표면을 제공하도록 디스플레이 컨트롤러(5)를 위한 출력 스테이지 역할을 한다.Display processing pipeline 47 and display output control interface 49 thus serve as an output stage for display controller 5 to provide an output surface for display on display 4 .

디스플레이 컨트롤러(5)의 메모리 기록 서브시스템(48)은, 예를 들어 복합 유닛(46)에 의해 생성된, 수신한 표면을 메모리 버스를 통해 외부 메모리(3)로 기록하도록 동작 가능하다. 그 다음, 이것은 디스플레이 컨트롤러(5)가 디스플레이를 위하여 출력 프레임을 제공할 뿐만 아니라, 원한다면, 메인 메모리로 이러한 출력 프레임을 기록할 수도 있게 한다. 이 동작을 가능하게 하기 위하여, 메모리 기록 서브시스템(48)은 DMA 기록 컨트롤러를 포함한다. 본 실시예에서, 이는 또한 지연 은폐 버퍼(latency hiding buffer) 역할을 하기에 적합한 FIFO를 포함한다.The memory writing subsystem 48 of the display controller 5 is operable to write the received surface, for example created by the composite unit 46, to the external memory 3 via a memory bus. This then allows the display controller 5 to not only provide output frames for display, but also to write these output frames into main memory if desired. To enable this operation, memory write subsystem 48 includes a DMA write controller. In this embodiment, it also includes a FIFO suitable to serve as a latency hiding buffer.

또한, 디스플레이 컨트롤러(5)는 디스플레이 컨트롤러를 통한 데이터 흐름을 지시하도록 동작 가능한, 즉 도 4에 도시된 바와 같이 처리를 위하여 적합한 유닛에 입력 레이어, 합성된 출력 표면 등을 제공하도록 동작 가능한 데이터 흐름 제어 모듈(45)을 포함한다. 본 실시예에서, 데이터 흐름 컨트롤러(45)는, 예를 들어 그리고 바람직하게는, 디스플레이 컨트롤러(5)가 그 일부인 전체 데이터 처리 시스템의 호스트 프로세서(예를 들어, CPU(7))에서 실행되고 있는 디스플레이 컨트롤러를 위한 드라이버(11)로부터의 적합한 소프트웨어 제어 하에서 동작한다. 드라이버는 예를 들어, 호스트 프로세서에서 실행되는 애플리케이션으로부터 수신된 디스플레이 처리를 위한 커맨드와 데이터에 응답하여, 데이터 흐름 컨트롤러(45)를 위한 적합한 커맨드를 생성하고 디스플레이 컨트롤러(5)의 제어 레지스터를 프로그래밍할 수 있다.In addition, the display controller 5 controls data flow operable to direct data flow through the display controller, i.e. to provide input layers, synthesized output surfaces, etc. to suitable units for processing as shown in FIG. module 45. In this embodiment, the data flow controller 45 is, for example and preferably, running on a host processor (e.g. CPU 7) of the overall data processing system of which the display controller 5 is a part. It operates under suitable software control from the driver 11 for the display controller. The driver may generate appropriate commands for the data flow controller 45 and program the control registers of the display controller 5 in response to commands and data for display processing received, for example, from an application running on the host processor. can

물론, 이 점에서 다른 방식이 가능할 것이다.Of course, other approaches are possible in this respect.

위에서 논의된 바와 같이, 디스플레이 컨트롤러(5)가 디스플레이를 위하여 출력 프레임을 제공할 때, 이는, 예를 들어, 비디오 코덱(1) 및/또는 GPU(2)에 의해 생성되었고, 메인 메모리(3) 내의 각각의 프레임 버퍼에 저장된 하나 이상의 입력 표면의 데이터를 판독되어, 이의 출력 표면 생성 프로세스에서 입력 레이어 역할을 하고, 그 입력 표면 데이터를 처리하고(예를 들어, 이를 출력 프레임으로 합성함으로써), 디스플레이 처리 파이프라인(47)을 통해 디스플레이를 위하여 (합성된) 출력 프레임을 디스플레이(4)에 제공하기 위하여, 예를 들어, 메인 메모리(3) 내의 각각의 프레임 버퍼에 저장된 하나 이상의 입력 표면의 데이터를 읽어들일 것이다.As discussed above, when the display controller 5 provides an output frame for display, it has been generated, for example, by the video codec 1 and/or the GPU 2, and the main memory 3 reads the data of one or more input surfaces stored in respective frame buffers within, serves as an input layer in its output surface creation process, processes the input surface data (e.g., by compositing it into an output frame), displays In order to provide (synthesized) output frames to the display 4 for display via the processing pipeline 47, for example, the data of one or more input surfaces stored in respective frame buffers in the main memory 3 are sent. will read

이 프로세스는 디스플레이될 필요가 있는 각각의 프레임에 대하여, 예를 들어, 초당 30 또는 60 프레임의 레이트로 반복된다.This process is repeated at a rate of, for example, 30 or 60 frames per second for each frame that needs to be displayed.

이러한 디스플레이 처리가 실시간 동작이기 때문에, 디스플레이 컨트롤러(5)는, 디스플레이 컨트롤러로부터의 디스플레이 출력을 트리거하는 각각의 클록 사이클에서, 디스플레이될 픽셀 데이터를 디스플레이(4)로(디스플레이 출력으로) 규칙적으로 전달할 필요가 있다.Since this display processing is a real-time operation, it is necessary for the display controller 5 to regularly pass the pixel data to be displayed to the display 4 (to the display output) in each clock cycle that triggers the display output from the display controller. there is

위에서 논의된 기능뿐만 아니라, 본 실시예에서, 디스플레이 컨트롤러(5)는 이의 입력 레이어 파이프라인(42, 43, 44)의 각각에서의 스케일링 기능(스케일러)과, 출력에서의 디스플레이 처리 파이프라인(47)(도시되지 않음)을 포함한다.In addition to the functions discussed above, in this embodiment, the display controller 5 has a scaling function (scaler) in each of its input layer pipelines 42, 43, 44 and a display processing pipeline 47 in its output. ) (not shown).

도 4에 도시된 바와 같이, 본 실시예의 디스플레이 컨트롤러(5)는 연관된 입력 버퍼(51) 및 연관된 출력 버퍼(52)를 갖는 시간 워프 모듈(50) 형태의 변환 스테이지(50)를 더 포함한다. 시간 워프 모듈(50)은 입력 표면의 적합하게 "시간 워프된" 버전을 제공하기 위하여 입력 버퍼(51)를 통해 수신하고, 그 다음 디스플레이를 위하여 출력 버퍼(52)를 통해 디스플레이로 제공되는 그 입력 표면을 변환하도록 동작 가능하다.As shown in FIG. 4 , the display controller 5 of this embodiment further comprises a conversion stage 50 in the form of a time warp module 50 having an associated input buffer 51 and an associated output buffer 52 . The time warp module 50 receives its input via an input buffer 51 to provide a suitable "time warped" version of the input surface, and then provides that input to the display via an output buffer 52 for display. It is operable to transform the surface.

필요한 입력 표면 데이터는 메인 메모리로부터 입력 표면을 위한 적합한 데이터를 판독하고 이를 데이터 흐름 제어 모듈(45)에 의한 입력 버퍼(51)로의 제공을 위하여 레이어 파이프라인에 제공하도록 메모리 판독 서브시스템(41)을 제어하는 드라이버에 의해 입력 버퍼(51)로 로딩된다.The required input surface data directs the memory read subsystem 41 to read the appropriate data for the input surface from main memory and provide it to the layer pipeline for presentation to the input buffer 51 by the data flow control module 45. It is loaded into the input buffer 51 by the controlling driver.

도 4에 도시된 바와 같이, 데이터 흐름 제어 모듈(45)은, 레이어 파이프라인(42, 43 및/또는 44)에 의해 처리된 입력 표면 데이터를 시간 워프 모듈(50)에 의한 처리를 위하여 입력 버퍼(51)로 적합하게 향하게 하고, 그 다음 출력 버퍼(52)로부터 복합 유닛(46)으로 그리고 그 뒤에 디스플레이를 위하여 디스플레이 처리 파이프라인(47)으로 적합하게 데이터를 향하게 하도록 동작 가능하다. 이것은 또한 드라이버에 의해 적합하게 제어되고 구성될 수 있다.As shown in FIG. 4 , data flow control module 45 transfers input surface data processed by layer pipelines 42 , 43 and/or 44 to an input buffer for processing by time warp module 50 . 51, and then properly direct data from the output buffer 52 to the composite unit 46 and thereafter to the display processing pipeline 47 for display. It can also be controlled and configured as appropriate by the driver.

또한, 데이터 흐름 제어 모듈(45)은, 원한다면, 외부 메모리로의 기록을 위하여 메모리 기록 서브시스템(48)으로 시간 워프 출력 변환된 표면의 데이터를 향하게 할 수 있다. 이것은 디스플레이를 위한 후속 프레임이 이전 프레임과의 차이에 기초하여 생성되는 경우에 적합할 수 있다.Data flow control module 45 may also direct the data of the time warp output transformed surface to memory write subsystem 48 for writing to external memory, if desired. This may be suitable where subsequent frames for display are generated based on differences from previous frames.

입력 버퍼(51)와 출력 버퍼(52)가 도 4에서 개별 버퍼로 도시되지만, 이러한 버퍼들은 또한, 원한다면, 예를 들어 레이어 파이프라인에 존재할 수 있는 버퍼와 같이, 디스플레이 컨트롤러(5)에 존재할 수 있는 다른 버퍼를 통해 제공될 수 있다.Although input buffer 51 and output buffer 52 are shown as separate buffers in FIG. 4 , these buffers may also be present in display controller 5 if desired, such as buffers that may be present in a layer pipeline, for example. It can be provided through another buffer that exists.

또한, 도 4에 도시된 바와 같이, 변환 스테이지(시간 워프 모듈)(50)는 연관된 세트의 제어 레지스터(53)를 가질 수 있고, 이를 통해 시간 워프 변환 프로세스를 위한 적합한 제어 파라미터가, 예를 들어, 그리고 바람직하게는, 드라이버(11)의 제어 하에서 설정될 수 있다. 도 4에 도시된 바와 같이, 레지스터는, 그 중에서도, 헤드 마운트 디스플레이로부터 수신된 적합한 머리 트래킹 데이터(파라미터)를 수신하고 저장한다. 또한, 예를 들어 헤드 마운트 디스플레이의 렌즈 및/또는 임의의 다른 구성 파라미터를 나타내는 다른 제어 파라미터가 변환 스테이지(시간 워프 모듈)(50)의 동작을 제어하기 위하여 레지스터(53)에 저장될 수 있다.4, the conversion stage (time warp module) 50 may have an associated set of control registers 53 through which suitable control parameters for the time warp conversion process may be set, e.g. , and preferably, can be set under the control of the driver 11. As shown in Figure 4, the register receives and stores, inter alia, suitable head tracking data (parameters) received from the head mounted display. Also, other control parameters representing, for example, the lenses and/or any other configuration parameters of the head mounted display may be stored in registers 53 to control the operation of translation stage (time warp module) 50 .

물론, 다른 방식도 가능할 것이다.Of course, other methods are also possible.

도 5는 도 4에 도시된 디스플레이 컨트롤러(5)의 시간 워프 모듈(변환 스테이지)(50)를 더욱 상세히 도시한다.FIG. 5 shows the time warp module (conversion stage) 50 of the display controller 5 shown in FIG. 4 in more detail.

도 5에 도시된 바와 같이, 디스플레이 컨트롤러의 시간 워프 모듈(변환 스테이지)(50)은 다수의 스테이지, 즉 좌표 보간기(interpolator) 스테이지(60), 색수차 보정 스테이지(61), "시간 워프" 변환 스테이지(62) 및 보간 스테이지(63)를 포함한다. 이 스테이지들의 각각은 본 실시예에서 수신하는 입력 데이터에 대하여 특정 처리 동작을 수행하도록 구성된 고정 기능(fixed-function) 하드웨어 모듈(처리 회로)의 형태로 구현되지만, 각각의 모듈을 위한 특정의 제어 파라미터를 가변하는 능력에 의해 일부 제한된 구성 가능성(configurability)을 또한 가진다. 제어 파라미터는, 본 실시예에서, 시스템이 함께 사용되고 있는 특정 헤드셋(디스플레이)(4)에 기초하여, 가상 현실 디스플레이를 위한 프레임 시퀀스가 디스플레이되어야 할 때 디스플레이 컨트롤러(5)를 위하여 드라이버(11)에 의해 설정된다.As shown in Fig. 5, the time warp module (transformation stage) 50 of the display controller has multiple stages, i.e., a coordinate interpolator stage 60, a chromatic aberration correction stage 61, a "time warp" transformation stage 62 and interpolation stage 63. Each of these stages is implemented in the present embodiment in the form of a fixed-function hardware module (processing circuit) configured to perform a specific processing operation on the input data it receives, but with specific control parameters for each module. It also has some limited configurability by the ability to vary . The control parameters are, in this embodiment, given to the driver 11 for the display controller 5 when the frame sequence for the virtual reality display is to be displayed, based on the particular headset (display) 4 with which the system is being used. is set by

이 스테이지들을 위하여 고정 기능 하드웨어 모듈을 이용하는 것은 이들의 동작을 위한 이들의 "타이밍"을 알 수 있는 이점을 가져, 적합한 레이트로 디스플레이 컨트롤러(5)에 의한 디스플레이(4)로의 디스플레이를 위한 출력 데이터의 전달이 더욱 신뢰성 있게 보증될 수 있다.Using fixed function hardware modules for these stages has the advantage of being able to know their "timing" for their operation, so that the output data for display by the display controller 5 to the display 4 at an appropriate rate is Delivery can be ensured more reliably.

물론 다른 방식도 가능할 것이다.Of course, other methods are also possible.

좌표 보간기 스테이지(60)는, 디스플레이(4)의 디스플레이 패널 상에 디스플레이될 때 출력 변환된 표면에 유입되어 헤드 마운트 디스플레이의 렌즈를 통해 보일 렌즈 왜곡에 대응하는 정의된 렌즈 왜곡에 기초하여, 시간 워프 모듈로부터 출력되는 출력 변환된 표면에서 샘플링 위치 x, y에 대하여 입력 프레임에서의(사용자에게 디스플레이될 메모리(3) 내에 저장된 GPU(3)의 의해 렌더링되는 프레임에서의) 대응하는 위치(좌표) x', y'를 결정하도록 동작한다.Coordinate interpolator stage 60, based on the defined lens distortion corresponding to the lens distortion that will enter the output transformed surface and will be seen through the lens of the head mounted display when displayed on the display panel of display 4, time The corresponding position (coordinates) in the input frame (in the frame rendered by the GPU 3 stored in the memory 3 to be displayed to the user) for the sampling position x, y on the output transformed surface output from the warp module. Operate to determine x', y'.

좌표 보간기 스테이지(60)는, 예를 들어, 이 목적으로 입방 곡선(cubic curve) 또는 타원 함수의 일부 형태를 가지며, 예를 들어, 타원의 초점과 같은 그 함수의 파라미터는 디스플레이 컨트롤러를 위해 드라이버에 의해 제어 파라미터를 이용하여 설정 가능하다.The coordinate interpolator stage 60 has, for this purpose, some form of a cubic curve or elliptic function, the parameters of that function, eg the focus of the ellipse, being a driver for the display controller. It can be set using control parameters by

도 12는 구형(spherical) 렌즈(130)에 대한 렌즈 왜곡 보정 파라미터의 일례를 도시한다. (이 도면은 2차원에 대하여 단순화되었다.)12 shows an example of lens distortion correction parameters for a spherical lens 130 . (This drawing has been simplified for two dimensions.)

도 12에서, S는 렌즈의 중심으로부터의 반지름을 따르는 거리로서 구형 렌즈의 하나의 구성을 나타내고, S'는 렌즈의 중심으로부터의 반지름을 따르는 거리로서 다른 하나의 렌즈 구성을 나타낸다.In Fig. 12, S represents one configuration of a spherical lens as a distance along a radius from the center of the lens, and S' represents another lens configuration as a distance along a radius from the center of the lens.

본 예에서, S 및 S'는 모두 동일한 렌즈 형상을 가지지만, 이들은 투영 평면(도 12에 도시된 점선으로 표현됨)에서의 왜곡의 양이 다르다.In this example, S and S' both have the same lens shape, but they differ in the amount of distortion in the projection plane (represented by the dotted line shown in Fig. 12).

도 12에 도시된 파라미터화는 타원 및 입방 곡선과 같은 다른 일반화된 형상으로 확장될 수 있다.The parameterization shown in Figure 12 can be extended to other generalized shapes such as ellipses and cubic curves.

색수차 보정 스테이지(61)는 좌표 보간기 스테이지(60)에 의해 결정된 입력 표면 위치(좌표) x', y'를 취하고, 디스플레이(4)의 렌즈에 의해 유입될 색수차를 고려하도록 이러한 좌표를 "보정한다".The chromatic aberration correction stage 61 takes the input surface positions (coordinates) x′, y′ determined by the coordinate interpolator stage 60 and “corrects” these coordinates to take into account the chromatic aberration introduced by the lens of the display 4. do".

도 5에 도시된 바와 같이, 개별 색수차 보정이 각각의 컬러 평면(R, G, B)에 대하여 수행된다. 또한, 녹색 컬러 평면 색수차 보정이 알파(투명도) 평면을 위하여 사용된다.As shown in Fig. 5, individual chromatic aberration correction is performed for each color plane (R, G, B). Also, green color plane chromatic aberration correction is used for the alpha (transparency) plane.

색수차 보정 스테이지(61)의 출력은 이에 따라 3 세트의 수정된 입력 표면 위치(좌표)이며, 한 세트는 입력 평면에서 적색 컬러 평면을 샘플링하기 위한 사용에 대한 xR', yR'이고, 한 세트는 입력 평면에서 녹색 및 알파(투명도) 평면을 샘플링하기 위한 사용에 대한 xG', yG'이고, 한 세트는 입력 평면에서 청색 평면을 샘플링하기 위한 사용에 대한 xB', yB'이다.The output of the chromatic aberration correction stage 61 is thus three sets of corrected input surface positions (coordinates), one set being x R ', y R ' for use in sampling the red color plane at the input plane, and one set being A set is x G ', y G ' for use in sampling the green and alpha (transparency) planes from the input plane, and one set is x B ', y B ' for use in sampling the blue plane from the input plane. am.

그 다음, 색수차 보정 스테이지(61)에 의해 결정된 수정된 입력 표면 위치는 "시간 워프" 시야 방위 변환 스테이지(62)에 제공된다.Then, the corrected input surface position determined by the chromatic aberration correction stage 61 is provided to a "time warp" viewing orientation conversion stage 62.

이 스테이지는 이의 입력으로서 사용자의 현재 머리 위치(디스플레이(4)의 머리 트래킹 센서로부터 적합하게 제공됨)를 나타내고 이에 따라 디스플레이(4)에서의 디스플레이를 위하여 마치 그로부터 보이는 것처럼 입력 표면(프레임)이 렌더링되는 시야 방위를 나타내는 각도 α, β, γ의 세트를 입력으로 취하고, 표시된 시야 방위에 기초하여 입력 표면의 투영을 생성하도록 동작한다.This stage presents as its input the current head position of the user (suitably provided from the head tracking sensor of the display 4) and accordingly an input surface (frame) is rendered for display on the display 4 as if viewed therefrom. It takes as input a set of angles α, β, γ representing viewing orientations and operates to generate a projection of the input surface based on the indicated viewing orientations.

시간 워프(시야 방위) 변환 스테이지(62)는 이에 따라 색수차 보정 스테이지에 의해 제공된 각각의 입력 표면 위치에 대하여 추가 변환을 수행하여, 이에 의해 그 다음 현재 생성되고 있는 출력 변환된 표면 샘플링(데이터 요소) 위치 x, y에 대하여 사용될 컬러 값을 유도하기 위하여 입력 표면을 샘플링하는데 사용될 시야 방위 변환된 입력 표면 위치 (xR", yR"), (xG", yG"), (xB", yB")의 세트를 제공한다.The time warp (field orientation) conversion stage 62 thus performs an additional conversion on each input surface position provided by the chromatic aberration correction stage, thereby sampling the output transformed surface (data element) that is currently being generated next. The viewing orientation transformed input surface location (x R ", y R "), (x G ", y G " ), (x B " , y B ").

시간 워프(시야 방위) 변환 스테이지(62)가 각각의 입력 표면 위치에 수행하는 변환은, 예를 들어, x, y 시프트, 스케일링 및/또는 회전을 포함할 수 있다. 원한다면, 더 복잡한 변환이 적용될 수 있다. 다시 말하면, 이것은, 예를 들어, 시스템이 함께 사용되고 있는 특정 헤드셋(디스플레이)(4)에 기초하여, 시간 워프 변환 스테이지(62)를 위한 제어 파라미터를 설정하는 드라이버에 의해 사용 중에 조정될 수 있다.The transformation that the time warp (view orientation) transformation stage 62 performs on each input surface location may include, for example, an x, y shift, scaling and/or rotation. If desired, more complex transformations can be applied. In other words, it can be adjusted on-the-fly by the driver setting the control parameters for the time warp transformation stage 62, for example based on the particular headset (display) 4 the system is being used with.

시간 워프 변환 스테이지(62)에 의해 결정된 변환된 입력 표면 위치는 이의 각각의 입력 표면 위치에서 입력 표면 값을 결정하기 위하여 표시된 위치에서 입력 표면을 샘플링하는 보간 스테이지(63)에 제공된다. 이것은 정의된 입력 표면 샘플링(데이터 요소) 위치에 대한 입력 표면 값의 적합한 보간에 의해 수행된다.The transformed input surface positions determined by the temporal warp conversion stage 62 are provided to an interpolation stage 63 that samples the input surface at the indicated positions to determine an input surface value at its respective input surface position. This is done by suitable interpolation of input surface values for defined input surface sampling (data element) locations.

입력 표면 샘플링 위치의 보간은 임의의 적합하고 원하는 방식으로 수행될 수 있다. 본 실시예에서, 쌍일차(bilinear) 보간이 사용되지만, 원한다면, 다른 방식이 사용될 수 있다.Interpolation of input surface sampling locations may be performed in any suitable and desired manner. In this embodiment, bilinear interpolation is used, but other schemes may be used if desired.

상이한 입력 표면 위치(좌표)가 (색수차를 고려하여) 상이한 컬러 평면에 대하여 결정됨에 따라, 본 실시예에서, 데이터의 개별 세트가 이에 따라 각각의 컬러 평면에 대하여 (그 컬러 평면에 대하여 결정된 입력 표면 위치에 기초하여) 출력 변환된 표면 샘플링 위치(데이터 요소)에 대하여 보간된다. 따라서, 출력 변환된 표면 샘플링 위치(데이터 요소)에 대한 RGB 컬러 데이터 세트는 결정된 "적색" 입력 표면 위치(좌표) (xR", yR")로부터 결정된 적색 값과, 결정된 "녹색" 입력 표면 위치(좌표) (xG", yG")로부터 결정된 녹색 값과, 결정된 "청색" 입력 표면 위치(좌표) (xB", yB")로부터 결정된 청색 값을 포함한다.As different input surface positions (coordinates) are determined for different color planes (taking into account chromatic aberrations), in this embodiment, a separate set of data is thus calculated for each color plane (the input surface determined for that color plane). Based on location), the output is interpolated with respect to transformed surface sampling locations (data elements). Thus, the RGB color data set for the output transformed surface sampling position (data element) is the determined red value from the determined "red" input surface position (coordinates) (x R ", y R "), and the determined "green" input surface The green value determined from the location (coordinate) (x G ", y G ") and the blue value determined from the determined "blue" input surface location (coordinate) (x B ", y B ").

그 다음, 이렇게 개별적으로 결정된 컬러 평면(예를 들어, 적색, 녹색 및 청색) 값은 함께 사용되어(결합되어) 논의가 되고 있는 출력 변환된 표면 샘플링(데이터) 위치 (x, y)에 대한 컬러 데이터를 제공한다.These individually determined color plane (e.g., red, green, and blue) values are then used together (combined) to obtain the color for the output transformed surface sampling (data) location (x, y) in question. Provide data.

알파(투명도) 값이 또한 결정되는 경우에, 위에서 논의된 바와 같이, 그것은 녹색 값을 결정하는데 사용된 입력 표면 위치(좌표)로부터 결정된다.If the alpha (transparency) value is also determined, as discussed above, it is determined from the input surface location (coordinates) used to determine the green value.

그 다음, 보간된 값은 사용자에 대한 디스플레이를 위하여 디스플레이(4)로의 제공을 위한 디스플레이 컨트롤러의 디스플레이 처리 파이프라인의 나머지에 대한 제공을 위해, 도 5에 도시된 바와 같이 출력 버퍼(FIFO)(52)로 출력된다.The interpolated values are then sent to the output buffer (FIFO) 52 as shown in FIG. 5 for provision to the rest of the display controller's display processing pipeline for provision to the display 4 for display to the user. ) is output.

도 5에 도시된 바와 같이, 적합한 입력 표면 데이터가 보간 스테이지(63)에 사용 가능하도록, 시간 워프 변환 스테이지(62)에 의해 결정되고 (그리고 보간 스테이지(63)에 의해 샘플링될) 수정된 입력 표면 위치가 보간 스테이지(63)에 의해 사용되기 전에 입력 버퍼(51)로의 이러한 샘플링 위치를 포함하는 입력 표면의 적합한 영역의 페치를 제어하는데 사용된다(65).As shown in FIG. 5 , the modified input surface determined by the temporal warp transformation stage 62 (and sampled by the interpolation stage 63) such that suitable input surface data is available to the interpolation stage 63. It is used to control the fetching of the appropriate region of the input surface containing this sampling position into the input buffer 51 before the position is used by the interpolation stage 63 (65).

이렇게 하기 위하여, 시간 워프 변환 스테이지(62)에 의해 결정된 입력 표면 위치의 정수 부분이 필요한 입력 표면 데이터를 포함하는 입력 표면의 적합한 2차원 블록을 식별하기 위하여 사용된다. 그 다음, 입력 스테이지는 이러한 각각의 입력 표면 블록을 입력 버퍼(51)로 로딩하도록 동작한다. 이것은 아래에서 논의되는 도 7에 더 예시된다.To do so, the integer part of the input surface position determined by the temporal warp transformation stage 62 is used to identify the appropriate two-dimensional block of the input surface containing the required input surface data. The input stage then operates to load each of these input surface blocks into the input buffer 51 . This is further illustrated in FIG. 7 discussed below.

도 5에 또한 도시된 바와 같이, 보간 스테이지(63)에 의한 사용을 위한 입력 버퍼(51) 내로 입력 표면 데이터를 요청하는 것과 출력 변환된 표면 샘플링 위치를 제공하기 위하여 보간 스테이지(63)가 그 데이터를 처리하는 것 사이의 지연을 허용하기 위하여, 변환 스테이지에 포함된 적합한 딜레이(지연 흡수) 메커니즘(64)이 있을 수 있다. 이것은 원하는 바에 따라 구현될 수 있다.As also shown in FIG. 5, interpolation stage 63 requests input surface data into input buffer 51 for use by interpolation stage 63 and interpolation stage 63 interpolates that data to provide output transformed surface sampling locations. There may be a suitable delay (delay absorption) mechanism 64 included in the conversion stage to allow for a delay between processing . This can be implemented as desired.

도 5에 도시된 바와 같이, 디스플레이(4)로부터의 적합한 동기화 신호(65)의 수신에 의해, 시간 워프 모듈(변환 스테이지)의 동작이 트리거되고, 이의 타이밍이 제어된다.As shown in Fig. 5, receipt of a suitable synchronization signal 65 from the display 4 triggers the operation of the time warp module (transformation stage), the timing of which is controlled.

도 6은 도 5에 도시된 바와 같은 시간 워프 모듈(변환 스테이지)(50)의 동작을 도시하는 흐름도이다.FIG. 6 is a flowchart showing the operation of the time warp module (conversion stage) 50 as shown in FIG.

도 6은 디스플레이를 위하여 생성될 출력 변환된 표면에서 각각의 픽셀(데이터) 위치에 대한 동작을 도시한다. 이 동작은 필요한 각각의 출력 변환된 표면 픽셀(데이터) 위치에 대하여 반복된다.Figure 6 shows the operation for each pixel (data) position in the output converted surface to be created for display. This operation is repeated for each required output transformed surface pixel (data) location.

도 6에 도시된 바와 같이, 프로세스는 적합한 동기 신호(120)가 디스플레이를 위하여 새로운 출력 프레임의 시작을 나타내는 것으로 시작한다.As shown in Figure 6, the process begins with an appropriate sync signal 120 indicating the start of a new output frame for display.

그 다음, 다음에 생성될 원하는 출력 변환된 표면 픽셀 좌표 x0, y0가 결정된다(단계 121).Next, the desired output transformed surface pixel coordinates x 0 , y 0 to be generated next are determined (step 121).

그 다음, 좌표 보간기 스테이지(60)는, 디스플레이(4)의 디스플레이 패널에 디스플레이될 때 출력 변환된 프레임에 유입되고 헤드 마운트 디스플레이의 렌즈를 통해 보일 렌즈 왜곡에 대응하는 정의된 렌즈 왜곡에 기초하여 시간 워프 모듈로부터 출력될 출력 변환된 표면에서의 픽셀(샘플링) 위치 x0, y0에 대하여 입력 프레임에서의(사용자에게 디스플레이될 메모리(3)에 저장된 GPU(2)에 의해 렌더링된 프레임에서의) 대응하는 위치(좌표) xi, yi를 결정하도록 동작한다(단계 122).Then, the coordinate interpolator stage 60 outputs the transformed frame when displayed on the display panel of the display 4, based on the defined lens distortion corresponding to the lens distortion that will be seen through the lens of the head mounted display. Output to be output from the time warp module In the input frame for pixel (sampling) position x 0 , y 0 on the transformed surface (in the frame rendered by GPU 2 stored in memory 3 to be displayed to the user) ) to determine the corresponding positions (coordinates) x i , y i (step 122).

그 다음, 색수차 보정 스테이지(61)는 단계 122에서 좌표 보간기 스테이지(60)에 의해 결정된 입력 표면 위치(좌표) xi, yi를 취하고, 디스플레이(4)의 렌즈에 의해 유입될 색수차를 고려하도록 이러한 좌표를 "보정하여", 3 세트의 수정된 입력 표면 위치(좌표) xr, yr; xga, yga; xb, yb를 제공한다.Then, the chromatic aberration correction stage 61 takes the input surface position (coordinates) x i , y i determined by the coordinate interpolator stage 60 in step 122 and considers the chromatic aberration introduced by the lens of the display 4. "corrects" these coordinates so that 3 sets of corrected input surface positions (coordinates) x r , y r ; x ga , y ga ; Gives x b , y b .

그 다음, 단계 123에서 색수차 보정 스테이지(61)에 의해 결정된 수정된 입력 표면 위치는 사용자의 현재 머리 위치를 나타내는 각도 α, β, γ의 세트에 기초하여 변환 스테이지(62)에 의한 "시간 워프" 좌표 재투영(보정)을 받아, 이에 의해 시야 방위 변환된 입력 표면 위치 세트 (x'r, y'r), (x'ga, y'ga), (x'b, y'b)를 제공한다.Then, in step 123, the corrected input surface position determined by chromatic aberration correction stage 61 is "time warped" by translation stage 62 based on a set of angles α, β, γ representing the user's current head position. Takes coordinate reprojection (calibration), thereby providing a set of orientation-transformed input surface locations (x' r , y' r ), (x' ga , y' ga ), (x' b , y' b ) do.

본 실시예에서, 각도 α, β, γ를 나타내는 입력 머리 위치가 생성될 출력 시간 워프 변환된 표면의 각각의 새로운 라인에 대하여 디스플레이로부터 제공된 머리 트래킹 정보에 기초하여 업데이트된다. 이에 의해, 이것은, 예를 들어, 디스플레이될 다음 출력 프레임의 시작까지 대기하여야 하는 대신에, 시간 워프 변환 프로세스가 라인별 기반으로 조정될 수 있게 한다. 물론 다른 방식도 가능할 것이다.In this embodiment, input head positions representing angles α, β, γ are updated based on head tracking information provided from the display for each new line of output time warp transformed surface to be created. This allows the time warp conversion process to be adjusted on a line-by-line basis, instead of having to wait until the start of the next output frame to be displayed, for example. Of course, other methods are also possible.

그 다음, 이렇게 결정된 입력 표면 위치는, 도 6에 도시된 바와 같이, 결정된 입력 표면 위치에 대한 데이터 값이 보간 스테이지(63)에 의해 결정될 수 있게 하도록 필요한 입력 표면 샘플링 위치 데이터를 포함하는 입력 표면의 적합한 블록의 입력 버퍼로의 페치를 요청하는데 사용된다. 이것은 어느 입력 표면 블록이 필요할 것인지 식별하기 위하여 각각의 결정된 입력 표면 위치의 정수 부분을 사용한다. 그 다음, 식별된 입력 표면 블록은 페치되어 입력 버퍼에 저장된다(단계 126).Then, the input surface position thus determined is the input surface position containing the necessary input surface sampling position data so that data values for the determined input surface position can be determined by the interpolation stage 63, as shown in FIG. 6 . Used to request a fetch of the appropriate block into the input buffer. It uses the integer part of each determined input surface location to identify which input surface block will be needed. The identified input surface blocks are then fetched and stored in the input buffer (step 126).

그 다음, 보간 스테이지는 입력 버퍼에 저장된 입력 표면 블록으로부터 적합한 입력 표면 데이터 위치를 판독하고, 논의가 되고 있는 (x0, y0)에서의 출력 표면 픽셀(샘플링 위치)에 대한 적합한 데이터 값을 보간한다(단계 127).The interpolation stage then reads the appropriate input surface data location from the input surface block stored in the input buffer and interpolates the appropriate data value for the output surface pixel (sampling location) at (x 0 , y 0 ) in question. (step 127).

그 다음, 이렇게 생성된 출력 픽셀은 디스플레이 합성 유닛으로의 후속 제공(그리고 디스플레이 합성 유닛에 의한 사용)과 디스플레이를 위한 디스플레이로의 제공을 위하여 출력 버퍼에 수집된다(단계128).The output pixels thus generated are then collected in an output buffer for subsequent presentation to the display compositing unit (and use by the display compositing unit) and presentation to the display for display (step 128).

도 5 및 6에 도시된 바와 같이, 디스플레이 컨트롤러(5)의 시간 워프 모듈(변환 스테이지)은 (샘플링 위치별(픽셀별) 기반으로) 그 출력 변환된 표면에서 샘플링 위치(픽셀) 시퀀스로서 사용자에게 디스플레이될 출력 변환된 표면을 생성한다.5 and 6, the time warp module (conversion stage) of the display controller 5 (on a sampling position-by-pixel (pixel-by-pixel) basis) outputs a sequence of sampling positions (pixels) on the transformed surface to the user. Creates an output transformed surface to be displayed.

본 실시예에서, 시간 워프 모듈(변환 스테이지)은 출력 변환된 표면을 래스터 라인(raster line)별로 생성하도록 구성된다(그것이 출력 변환된 표면이 디스플레이를 위하여 디스플레이(4)에 제공될 필요가 있을 순서이기 때문이다).In this embodiment, the time warp module (conversion stage) is configured to generate the output transformed surface raster line by raster line (the order in which it will need to present the output transformed surface to the display 4 for display). because it wins).

도 7은 이것을 예시하고, 시간 워프 모듈(변환 스테이지)의 보간 스테이지(63)로부터의 출력 스트림으로서 제공될 예시적인 출력 변환된 표면의 3개의 래스터 라인(71)을 도시한다.Figure 7 illustrates this and shows three raster lines 71 of an exemplary output transformed surface to be provided as output streams from interpolation stage 63 of the time warp module (transformation stage).

또한, 도 7은, 위에서 논의된 바와 같이, 출력 변환된 표면의 라인(71)이 생성되고 있는 동안에 보간 스테이지(63)에 의해 사용을 위하여 입력 버퍼로 개별적으로 로딩되는 16 × 16 샘플링 위치(픽셀) 블록(73)의 어레이로 분할되는, 메모리(33) 내의 적합한 프레임 버퍼(눈 버퍼)에 저장되는 대응하는 입력 표면(72)을 도시한다.7 also shows the 16×16 sampling positions (pixels) that are individually loaded into the input buffer for use by the interpolation stage 63 while the lines 71 of the output transformed surface are being generated, as discussed above. ) shows the corresponding input surfaces 72 stored in suitable frame buffers (eye buffers) in the memory 33, divided into an array of blocks 73.

도 7에 도시된 바와 같이, 시청되는 디스플레이된 출력 변환된 표면이 통과하는 헤드 마운트 디스플레이(4)에서의 렌즈에 의해 유입되는 왜곡, 통상적으로는 배럴 왜곡 때문에, 변환된 출력 표면에서의 각각의 수평 래스터 라인(71)은 사실 입력 표면(72)에서의 곡선에 대응할 것이다. 따라서, 도 7에 도시된 바와 같이, 출력 변환된 표면에서의 래스터 라인(75)은 입력 표면(72)에서의 곡선(76) 등에 대응할 것이다.As shown in Fig. 7, due to distortion, typically barrel distortion, introduced by a lens in the head mounted display 4 through which the viewed displayed output transformed surface passes, each horizontal line at the transformed output surface The raster line 71 will in fact correspond to the curve on the input surface 72 . Thus, as shown in FIG. 7 , raster lines 75 on the output transformed surface will correspond to curves 76 on the input surface 72 and so on.

따라서, 도 7에 도시된 바와 같이, 출력 변환된 표면에서 래스터 라인(75)을 생성하기 위하여, (단순히 입력 표면(72)으로부터 블록의 선형 로우(row)가 아닌) 입력 표면(72)에 걸친 다수의 상이한 블록(73)이 입력 버퍼로 로딩될 필요가 있을 것이다. 이것은 출력 변환된 표면에서 래스터 라인(75)을 처리하기 위하여 필요한 입력 버퍼의 콘텐츠(77)를 도시하는 도 7의 오른쪽에 예시된다.Thus, as shown in FIG. 7 , to generate raster lines 75 at the output transformed surface, a line across the input surface 72 (rather than simply a linear row of blocks from the input surface 72) A number of different blocks 73 will need to be loaded into the input buffer. This is illustrated on the right in figure 7 showing the contents 77 of the input buffer needed to process the raster lines 75 in the output transformed surface.

또한, 도 7은 출력 변환된 표면에서 래스터 라인(79)을 생성할 때 필요한 입력 표면(72)으로부터의 블록에 관한 입력 버퍼의 콘텐츠(78)와, 래스터 라인(81)을 생성할 때의 입력 버퍼의 콘텐츠(80)를 도시한다.Figure 7 also shows the contents 78 of the input buffer for blocks from the input surface 72 required when generating raster lines 79 on the output converted surface, and the input when generating raster lines 81. Shows the contents 80 of the buffer.

위에서 논의된 바와 같이, 입력 표면(72)으로부터의 적합한 블록은 출력 변환된 표면에서 각각의 샘플링 위치를 생성하는데 필요할 입력 표면 위치를 나타내는 시간 워프 변환 스테이지(62)로부터의 신호에 응답하여 입력 버퍼로 로딩된다. 입력 버퍼로의 블록의 로딩은 출력 변환된 표면에서 다음 라인을 위하여 필요한 임의의 블록이 출력 변환된 표면의 다음 라인을 위하여 더 이상 필요 없을 때까지 입력 버퍼에 유지되는 방식으로 제어된다.As discussed above, the appropriate blocks from the input surface 72 are sent to the input buffer in response to signals from the time warp conversion stage 62 indicating the input surface positions that will be needed to generate each sampling position in the output transformed surface. Loaded. The loading of blocks into the input buffer is controlled in such a way that any blocks needed for the next line on the output converted surface are held in the input buffer until they are no longer needed for the next line on the output converted surface.

위에서 이해될 수 있는 바와 같이, 본 발명은, 적어도 이의 바람직한 실시예에서, 헤드 마운트 가상 현실 디스플레이 시스템을 이용하는 사용자에게 디스플레이를 위한 적합하게 "시간 워프된" 이미지를 제공하기 위한 더욱 효율적인 메커니즘을 제공할 수 있다.As can be appreciated from the above, the present invention, at least in its preferred embodiment, will provide a more efficient mechanism for providing a user using a head mounted virtual reality display system with a suitable "time warped" image for display. can

이것은, 적어도 본 발명의 바람직한 실시예에서, 디스플레이 컨트롤러 디스플레이 처리 파이프라인 동작의 일부로서 디스플레이 컨트롤러에서 디스플레이될 프레임의 "시간 워프"를 수행함으로써 성취된다. 특히, 적어도 본 발명의 바람직한 실시예에서, 디스플레이 컨트롤러는, 디스플레이를 위하여 디스플레이에 직접 픽셀 스트림으로서 디스플레이를 위한 원하는 "시간 워프된" 프레임을 제공할 수 있도록, 샘플링 위치별(픽셀별) 기반으로 입력 표면으로부터 디스플레이를 위한 시간 워프 변환된 표면을 생성할 수 있도록 구성된다.This is accomplished, at least in the preferred embodiment of the present invention, by performing a "time warp" of frames to be displayed at the display controller as part of the display controller display processing pipeline operations. In particular, in at least a preferred embodiment of the present invention, the display controller is capable of providing the desired "time warped" frame for display as a pixel stream directly to the display for display, on a sampling position-by-pixel (pixel-by-pixel) basis. It is configured to generate a time warp transformed surface for display from the surface.

전술한 상세한 설명은 예시와 설명의 목적으로 제공되었다. 이것은 소진적이거나 본 기술을 개시된 정밀한 형태로 제한하려고 의도되지 않는다. 많은 수정과 변형이 상기 교시 내용에 비추어 가능하다. 설명된 실시예들은 본 기술의 원리와 이의 실제 적용을 가장 잘 설명하기 위하여 선택되었고, 이에 의해 당해 기술 분야에서의 다른 통상의 기술자로 하여금 다양한 실시예에서 그리고 고려되는 특정 용도에 맞추어진 다양한 수정을 가지면서 본 기술을 가장 잘 활용하게 할 수 있다. 범위가 여기에 첨부된 청구범위에 의해 정의되도록 의도된다.The foregoing detailed description has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the subject technology to the precise form disclosed. Many modifications and variations are possible in light of the above teachings. The described embodiments were chosen to best illustrate the principles of the present technology and its practical application, thereby allowing others skilled in the art to make various modifications in the various embodiments and tailored to the particular use contemplated. You can make the best use of this technology while you have it. It is intended that the scope be defined by the claims appended hereto.

Claims (25)

데이터 처리 시스템을 위한 디스플레이 컨트롤러에 있어서,
입력 표면의 데이터를 저장하도록 동작가능한 로컬 입력 버퍼;
입력 표면의 데이터를 메모리로부터 상기 로컬 입력 버퍼로 페치하도록 동작 가능한 입력 스테이지;
디스플레이로의 디스플레이를 위하여 출력 표면을 제공하도록 동작 가능한 출력 스테이지; 및
상기 입력 표면의 출력 변환된 버전을 제공하기 위해 데이터가 필요한 입력 표면의 데이터 영역을 식별하고, 상기 입력 스테이지가 상기 입력 표면의 식별된 데이터 영역을 상기 메모리로부터 상기 로컬 입력 버퍼로 페치하도록 하고, 상기 입력 표면의 상기 출력 변환된 버전을 출력 변환된 표면으로서 제공하기 위해 수신된 시야 방위(view orientation) 데이터에 기초하여 상기 입력 표면의 데이터를 변환하기 위해 상기 로컬 입력 버퍼로부터의 입력 표면 데이터를 처리하고, 디스플레이로의 디스플레이를 위한 출력 표면으로서 제공하기 위하여 상기 출력 변환된 표면을 상기 출력 스테이지에 제공하도록 동작 가능한 변환 스테이지를 포함하는 디스플레이 컨트롤러.
A display controller for a data processing system comprising:
a local input buffer operable to store data of the input surface;
an input stage operable to fetch data of an input surface from memory into the local input buffer;
an output stage operable to provide an output surface for display on a display; and
identify data regions of the input surface for which data is needed to provide an output transformed version of the input surface, cause the input stage to fetch the identified data regions of the input surface from the memory into the local input buffer, and processing input surface data from the local input buffer to transform data of the input surface based on received view orientation data to provide the output transformed version of the input surface as an output transformed surface; , a conversion stage operable to provide the output transformed surface to the output stage for presentation as an output surface for display to a display.
제1항에 있어서,
상기 입력 스테이지는, 상기 입력 표면의 블록 데이터를 상기 메모리로부터 상기 로컬 입력 버퍼로 페치(fetch)하도록 동작 가능한 디스플레이 컨트롤러.
According to claim 1,
wherein the input stage is operable to fetch block data of the input surface from the memory into the local input buffer.
제1항 또는 제2항에 있어서,
상기 변환 스테이지는, 새로 수신된 시야 방위 데이터에 기초하여 자신의 변환 동작을 주기적으로 업데이트하도록 구성되는 디스플레이 컨트롤러.
According to claim 1 or 2,
wherein the conversion stage is configured to periodically update its conversion operation based on newly received viewing orientation data.
제1항 또는 제2항에 있어서,
상기 변환 스테이지는, 사용자가 시청할 디스플레이된 상기 출력 변환된 표면이 통과하는 렌즈 또는 렌즈들에 의해 발생될 왜곡에 기초하여 입력 표면을 변환하도록 동작 가능한 디스플레이 컨트롤러.
According to claim 1 or 2,
wherein the transformation stage is operable to transform the input surface based on a distortion to be caused by a lens or lenses through which the displayed output transformed surface to be viewed by a user passes.
제1항 또는 제2항에 있어서,
상기 변환 스테이지는, 사용자가 시청할 디스플레이된 상기 출력 변환된 표면이 통과하는 렌즈 또는 렌즈들에 의해 발생될 색수차에 기초하여 입력 표면을 변환하도록 동작 가능한 디스플레이 컨트롤러.
According to claim 1 or 2,
wherein the transformation stage is operable to transform the input surface based on chromatic aberrations to be caused by a lens or lenses through which the displayed output transformed surface to be viewed by a user passes.
제5항에 있어서,
개별 색수차 보정이 상기 입력 표면의 상이한 컬러 평면에 대하여 결정되는 디스플레이 컨트롤러.
According to claim 5,
and wherein individual chromatic aberration corrections are determined for different color planes of the input surface.
제1항 또는 제2항에 있어서,
상기 변환 스테이지는, 상기 출력 변환된 표면에서의 데이터 위치에 대하여, 상기 출력 변환된 표면에서의 그 데이터 위치에 대한 데이터가 취해져야 하는 상기 입력 표면에서의 대응하는 위치를 결정하도록 동작하는 디스플레이 컨트롤러.
According to claim 1 or 2,
wherein the conversion stage is operative to determine, for a data location on the output transformed surface, a corresponding location on the input surface from which data for that data location on the output transformed surface should be taken.
제1항 또는 제2항에 있어서,
상기 변환 스테이지는,
생성될 출력 변환된 표면에서의 데이터 위치에 대하여, 정의된 렌즈 왜곡에 기초하여 입력 표면에서의 대응하는 데이터 위치를 결정하도록 동작 가능한 좌표 보간기(interpolator) 스테이지;
적어도 하나의 수정된 입력 표면 위치를 제공하기 위하여 상기 출력 변환된 표면을 시청할 때, 색수차를 처리하도록 상기 좌표 보간기 스테이지에 의해 결정된 입력 표면 위치를 수정하도록 동작 가능한 색수차 보정 스테이지; 및
상기 출력 변환된 표면의 데이터 위치에 대하여 사용하는 데이터를 제공하기 위하여 샘플링되는 출력 입력 표면 위치를 제공하기 위하여 수신된 시야 방위 데이터에 기초하여 상기 색수차 보정 스테이지에 의해 결정된 상기 적어도 하나의 수정된 입력 표면 위치를 더 수정하도록 동작 가능한 시야 방위 변환 스테이지를 포함하는 디스플레이 컨트롤러.
According to claim 1 or 2,
The conversion stage,
a coordinate interpolator stage operable to determine, relative to a data location on the output transformed surface to be created, a corresponding data location on the input surface based on the defined lens distortion;
a chromatic aberration correction stage operable to correct the input surface location determined by the coordinate interpolator stage to account for chromatic aberration when viewing the output transformed surface to provide at least one corrected input surface location; and
The at least one corrected input surface determined by the chromatic aberration correction stage based on received viewing orientation data to provide an output input surface position that is sampled to provide data for use with respect to the data position of the output transformed surface. A display controller comprising a viewing orientation translation stage operable to further correct position.
제1항 또는 제2항에 있어서,
상기 변환 스테이지는, 출력 변환된 표면에서의 데이터 위치에 대한 사용을 위하여 보간된 샘플링 위치 값을 제공하도록 복수의 입력 표면 샘플링 위치 값을 보간하도록 동작 가능한 보간 스테이지를 더 포함하는 디스플레이 컨트롤러.
According to claim 1 or 2,
wherein the conversion stage further comprises an interpolation stage operable to interpolate a plurality of input surface sampling location values to provide interpolated sampling location values for use with data locations on the output transformed surface.
제1항 또는 제2항에 있어서,
상기 변환 스테이지는, 출력 변환된 데이터 위치의 스트림으로서 출력 변환된 표면 데이터를 생성하도록 동작하는 디스플레이 컨트롤러.
According to claim 1 or 2,
wherein the conversion stage is operative to produce output transformed surface data as a stream of output transformed data locations.
제1항 또는 제2항에 있어서,
상기 변환 스테이지는, 고정 기능(fixed-function) 처리 회로를 포함하고, 상기 고정 기능 처리 회로는 사용 중에 상기 회로에 대한 하나 이상의 제어 파라미터를 설정함으로써 구성 가능한 디스플레이 컨트롤러.
According to claim 1 or 2,
wherein the conversion stage includes fixed-function processing circuitry, wherein the fixed-function processing circuitry is configurable by setting one or more control parameters for the circuitry during use.
제1항 또는 제2항에 따른 디스플레이 컨트롤러를 포함하는 가상 현실 디스플레이 장치.
A virtual reality display device comprising the display controller according to claim 1 or 2.
수신된 시야 방위(view orientation) 데이터에 기초하여 출력 변환된 표면(surface)을 제공하도록 입력 표면을 변환하는 장치에 있어서,
입력 표면의 데이터를 저장하도록 동작가능한 로컬 입력 버퍼;
상기 장치로부터 출력될 출력 변환된 표면에서의 데이터 위치에 대하여, 정의된 렌즈 왜곡에 기초하여 입력 표면에서의 대응하는 데이터 위치를 결정하도록 동작 가능한 좌표 보간기(interpolator) 스테이지;
적어도 하나의 수정된 입력 표면 위치를 제공하기 위하여 상기 출력 변환된 표면을 시청할 때, 색수차를 처리하도록 상기 좌표 보간기 스테이지에 의해 결정된 입력 표면 위치를 수정하도록 동작 가능한 색수차 보정 스테이지; 및
상기 출력 변환된 표면의 데이터 위치에 대하여 사용하는 데이터를 제공하기 위하여 상기 로컬 입력 버퍼로부터의 입력 표면 데이터로부터 샘플링되는 출력 입력 표면 위치를 제공하기 위하여 수신된 시야 방위 데이터에 기초하여 상기 색수차 보정 스테이지에 의해 결정된 상기 적어도 하나의 수정된 입력 표면 위치를 더 수정하고, 상기 출력 변환된 표면을 제공하기 위해 데이터가 필요하게 되는 상기 입력 표면의 데이터 영역을 식별하고, 상기 입력 표면의 식별된 데이터 영역을 메모리로부터 상기 로컬 입력 버퍼로 페치하도록 동작 가능한 시야 방위 변환 스테이지를 포함하는 장치.
An apparatus for transforming an input surface to provide an output transformed surface based on received view orientation data, comprising:
a local input buffer operable to store data of the input surface;
a coordinate interpolator stage operable to determine, for a data position on an output transformed surface to be output from the device, a corresponding data position on an input surface based on a defined lens distortion;
a chromatic aberration correction stage operable to correct the input surface location determined by the coordinate interpolator stage to account for chromatic aberration when viewing the output transformed surface to provide at least one corrected input surface location; and
To the chromatic aberration correction stage based on received viewing orientation data to provide an output input surface position that is sampled from input surface data from the local input buffer to provide data used for the data position of the output transformed surface. further modify the at least one modified input surface location determined by, identify a data region of the input surface for which data is needed to provide the output transformed surface, and store the identified data region of the input surface in memory. and a view orientation conversion stage operable to fetch from the local input buffer.
디스플레이 처리 시스템에서 디스플레이 컨트롤러를 동작시키는 방법에 있어서,
상기 디스플레이 컨트롤러는, 입력 표면의 데이터를 저장하도록 동작가능한 로컬 입력 버퍼, 입력 표면의 데이터를 메모리로부터 상기 로컬 입력 버퍼로 페치하도록 동작 가능한 입력 스테이지, 수신된 시야 방위(view orientation) 데이터에 기초하여 입력 표면(surface)을 변환하여 상기 입력 표면의 변환된 버전을 출력 변환된 표면으로서 제공하도록 동작 가능한 변환 스테이지를 포함하고,
상기 방법은,
상기 디스플레이 컨트롤러의 상기 변환 스테이지가,
상기 입력 표면의 출력 변환된 버전을 제공하기 위해 데이터가 필요하게 되는 상기 입력 표면의 데이터 영역을 식별하고, 상기 입력 표면의 식별된 데이터 영역을 메모리로부터 상기 로컬 입력 버퍼로 페치하고, 상기 입력 표면의 상기 출력 변환된 버전을 출력 변환된 표면으로서 제공하기 위해 수신된 시야 방위 데이터에 기초하여 상기 입력 표면의 데이터를 변환하기 위해 상기 로컬 입력 버퍼로부터의 입력 표면 데이터를 처리하는 단계; 및
상기 디스플레이 컨트롤러가, 디스플레이를 위하여 디스플레이로 상기 출력 변환된 표면을 제공하는 단계를 포함하는 디스플레이 처리 시스템에서 디스플레이 컨트롤러를 동작시키는 방법.
A method for operating a display controller in a display processing system,
The display controller comprises a local input buffer operable to store data of an input surface, an input stage operable to fetch data of an input surface from memory into the local input buffer, and an input based on received view orientation data. a transformation stage operable to transform a surface to provide a transformed version of the input surface as an output transformed surface;
The method,
The conversion stage of the display controller,
identifying data regions of the input surface for which data is needed to provide an output transformed version of the input surface, fetching the identified data regions of the input surface from memory into the local input buffer, and processing input surface data from the local input buffer to transform data of the input surface based on received viewing orientation data to provide the output transformed version as an output transformed surface; and
A method of operating a display controller in a display processing system comprising the step of the display controller providing the output converted surface to a display for display.
제14항에 있어서,
상기 입력 스테이지는 상기 입력 표면의 데이터 블록을 상기 메모리로부터 상기 로컬 입력 버퍼로 페치하는 단계를 포함하는 디스플레이 컨트롤러를 동작시키는 방법.
According to claim 14,
wherein the input stage fetches a block of data on the input surface from the memory into the local input buffer.
제14항 또는 제15항에 있어서,
상기 변환 스테이지가, 새로 수신된 시야 방위 데이터에 기초하여 자신의 변환 동작을 주기적으로 업데이트하는 단계를 더 포함하는 디스플레이 처리 시스템에서 디스플레이 컨트롤러를 동작시키는 방법.
The method of claim 14 or 15,
The method of operating a display controller in a display processing system further comprising the step of the transform stage periodically updating its transform operation based on newly received viewing orientation data.
제14항 또는 제15항에 있어서,
상기 변환 스테이지가, 사용자가 시청할 디스플레이된 상기 출력 변환된 표면이 통과하는 렌즈 또는 렌즈들에 의해 발생될 왜곡에 기초하여 상기 입력 표면을 변환하는 단계를 더 포함하는 디스플레이 처리 시스템에서 디스플레이 컨트롤러를 동작시키는 방법.
The method of claim 14 or 15,
operating a display controller in a display processing system, wherein the transformation stage further comprises transforming the input surface based on a distortion to be caused by a lens or lenses through which the displayed output transformed surface to be viewed by a user passes. method.
제14항 또는 제15항에 있어서,
상기 변환 스테이지가, 사용자가 시청할 디스플레이된 상기 출력 변환된 표면이 통과하는 렌즈 또는 렌즈들에 의해 발생될 색수차에 기초하여 상기 입력 표면을 변환하는 단계를 더 포함하는 디스플레이 처리 시스템에서 디스플레이 컨트롤러를 동작시키는 방법.
The method of claim 14 or 15,
operating a display controller in a display processing system, wherein the transformation stage further comprises transforming the input surface based on chromatic aberrations to be caused by a lens or lenses through which the displayed output transformed surface to be viewed by a user passes. method.
제18항에 있어서,
개별 색수차 보정이 상기 입력 표면의 상이한 컬러 평면에 대하여 결정되는 디스플레이 처리 시스템에서 디스플레이 컨트롤러를 동작시키는 방법.
According to claim 18,
A method of operating a display controller in a display processing system in which individual chromatic aberration corrections are determined for different color planes of the input surface.
제14항 또는 제15항에 있어서,
상기 변환 스테이지는, 상기 출력 변환된 표면에서의 데이터 위치에 대하여, 상기 출력 변환된 표면에서의 상기 데이터 위치에 대한 데이터가 취해져야 하는 상기 입력 표면에서의 대응하는 위치를 결정하는 디스플레이 처리 시스템에서 디스플레이 컨트롤러를 동작시키는 방법.
The method of claim 14 or 15,
The conversion stage is configured in a display processing system to determine, for a data location on the output transformed surface, a corresponding location on the input surface from which data for the data location on the output transformed surface should be taken. How to operate the controller.
제14항 또는 제15항에 있어서,
상기 변환 스테이지는,
출력될 출력 변환된 표면에서의 데이터 위치에 대하여, 정의된 렌즈 왜곡에 기초하여 상기 입력 표면에서의 대응하는 데이터 위치를 결정하고;
적어도 하나의 수정된 입력 표면 위치를 제공하기 위하여 상기 출력 변환된 표면을 시청할 때, 색수차를 처리하도록 결정된 상기 입력 표면 위치를 수정하고; 그리고,
상기 출력 변환된 표면의 데이터 위치에 대하여 사용하는 데이터를 제공하기 위하여 샘플링되는 상기 입력 표면에서의 출력 위치를 제공하기 위하여, 수신된 시야 방위 데이터에 기초하여, 결정된 상기 적어도 하나의 수정된 입력 표면 위치를 더 수정함으로써,
수신된 시야 방위 데이터에 기초하여 상기 출력 변환된 표면을 제공하도록 상기 입력 표면을 변환하는 디스플레이 처리 시스템에서 디스플레이 컨트롤러를 동작시키는 방법.
The method of claim 14 or 15,
The conversion stage,
for a data position on an output transformed surface to be output, determine a corresponding data position on the input surface based on a defined lens distortion;
when viewing the output transformed surface to provide at least one corrected input surface position, modifying the determined input surface position to account for chromatic aberration; and,
The at least one modified input surface location determined, based on received viewing orientation data, to provide an output location on the input surface that is sampled to provide data used for the data location of the output transformed surface. By further modifying
A method for operating a display controller in a display processing system that transforms the input surface to provide the output transformed surface based on received viewing orientation data.
제14항 또는 제15항에 있어서,
상기 변환 스테이지가, 상기 출력 변환된 표면에서의 데이터 위치에 대한 사용을 위하여 보간된 샘플링 위치 값을 제공하도록 복수의 입력 표면 샘플링 위치 값을 보간하는 단계를 더 포함하는 디스플레이 처리 시스템에서 디스플레이 컨트롤러를 동작시키는 방법.
The method of claim 14 or 15,
operating a display controller in a display processing system further comprising the conversion stage interpolating a plurality of input surface sampling position values to provide interpolated sampling position values for use with data positions on the output transformed surface. how to do it.
제14항 또는 제15항에 있어서,
상기 변환 스테이지가, 출력 변환된 데이터 위치의 스트림으로서 상기 출력 변환된 표면 데이터를 생성하는 디스플레이 처리 시스템에서 디스플레이 컨트롤러를 동작시키는 방법.
The method of claim 14 or 15,
wherein the conversion stage produces the output transformed surface data as a stream of output transformed data locations.
제14항 또는 제15항에 있어서,
상기 디스플레이 컨트롤러를 위한 드라이버가, 상기 변환 스테이지를 위한 하나 이상의 제어 파라미터를 설정하여 사용 중인 스테이지를 구성하는 단계를 더 포함하는 디스플레이 처리 시스템에서 디스플레이 컨트롤러를 동작시키는 방법.
The method of claim 14 or 15,
configuring, by a driver for the display controller, one or more control parameters for the conversion stage to configure the stage in use.
데이터 프로세서에서 실행될 때 청구항 제14항 또는 제15항에 따른 방법을 수행하기 위한 컴퓨터 소프트웨어 코드를 포함하는, 컴퓨터 판독가능한 저장매체에 저장된, 컴퓨터 프로그램.A computer program, stored on a computer readable storage medium, comprising computer software code for performing a method according to claim 14 or 15 when executed on a data processor.
KR1020180023413A 2017-03-01 2018-02-27 Data processing systems KR102561042B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/446,997 US11127110B2 (en) 2017-03-01 2017-03-01 Data processing systems
US15/446,997 2017-03-01

Publications (2)

Publication Number Publication Date
KR20180100486A KR20180100486A (en) 2018-09-11
KR102561042B1 true KR102561042B1 (en) 2023-07-28

Family

ID=61903187

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180023413A KR102561042B1 (en) 2017-03-01 2018-02-27 Data processing systems

Country Status (4)

Country Link
US (1) US11127110B2 (en)
KR (1) KR102561042B1 (en)
CN (1) CN108536405B (en)
GB (1) GB2565613B (en)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105740802A (en) * 2016-01-28 2016-07-06 北京中科慧眼科技有限公司 Disparity map-based obstacle detection method and device as well as automobile driving assistance system
WO2018190826A1 (en) * 2017-04-12 2018-10-18 Hewlett-Packard Development Company, L.P. Transfer to head mounted display
US10692420B2 (en) 2018-09-13 2020-06-23 Arm Limited Data processing systems
US11170577B2 (en) * 2018-10-30 2021-11-09 Facebook Technologies, Llc Generating and modifying representations of objects in an augmented-reality or virtual-reality scene
US11403810B2 (en) * 2018-11-02 2022-08-02 Facebook Technologies, Llc. Display engine for post-rendering processing
CN109460205B (en) * 2018-11-06 2021-09-10 沈阳天眼智云信息科技有限公司 Data curve generation and display method and system
CN109194951B (en) * 2018-11-12 2021-01-26 京东方科技集团股份有限公司 Display method of head-mounted display device and head-mounted display device
KR20200063614A (en) * 2018-11-28 2020-06-05 주식회사 라온텍 Display unit for ar/vr/mr system
CN109753155B (en) * 2019-01-02 2021-01-22 京东方科技集团股份有限公司 Head-mounted display device, driving method thereof and virtual reality display device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010091870A (en) * 2008-10-09 2010-04-22 Canon Inc Image processing apparatus and method therefor, head mounted type display, program, and recording medium
US20110031010A1 (en) 2007-01-09 2011-02-10 The Southern Company Non-boring support system for transmission line structures

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AUPM701394A0 (en) * 1994-07-22 1994-08-18 Monash University A graphical display system
AUPQ005099A0 (en) * 1999-04-29 1999-05-20 Canon Kabushiki Kaisha Sequential bus architecture
US20110310102A1 (en) * 2010-06-17 2011-12-22 Via Technologies, Inc. Systems and methods for subdividing and storing vertex data
US9621869B2 (en) * 2012-05-24 2017-04-11 Sony Corporation System and method for rendering affected pixels
US9576397B2 (en) * 2012-09-10 2017-02-21 Blackberry Limited Reducing latency in an augmented-reality display
US9355484B2 (en) * 2014-03-17 2016-05-31 Apple Inc. System and method of tile management
GB201410314D0 (en) * 2014-06-10 2014-07-23 Advanced Risc Mach Ltd Display controller
US10438331B2 (en) * 2014-06-26 2019-10-08 Intel Corporation Distortion meshes against chromatic aberrations
US11010956B2 (en) 2015-12-09 2021-05-18 Imagination Technologies Limited Foveated rendering
WO2017147178A1 (en) 2016-02-22 2017-08-31 Google Inc. Separate time-warping for a scene and an object for display of virtual reality content
WO2017210111A1 (en) 2016-05-29 2017-12-07 Google Llc Time-warping adjustment based on depth information in a virtual/augmented reality system
EP4235391A3 (en) * 2016-08-22 2023-10-25 Magic Leap, Inc. Virtual, augmented, and mixed reality systems and methods
GB2556634B (en) 2016-11-18 2020-05-27 Advanced Risc Mach Ltd Graphics processing systems

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110031010A1 (en) 2007-01-09 2011-02-10 The Southern Company Non-boring support system for transmission line structures
JP2010091870A (en) * 2008-10-09 2010-04-22 Canon Inc Image processing apparatus and method therefor, head mounted type display, program, and recording medium

Also Published As

Publication number Publication date
CN108536405A (en) 2018-09-14
GB2565613A (en) 2019-02-20
GB2565613B (en) 2021-04-28
CN108536405B (en) 2023-05-12
US11127110B2 (en) 2021-09-21
GB201803300D0 (en) 2018-04-11
US20180253868A1 (en) 2018-09-06
KR20180100486A (en) 2018-09-11

Similar Documents

Publication Publication Date Title
KR102561042B1 (en) Data processing systems
US12020401B2 (en) Data processing systems
US10733789B2 (en) Reduced artifacts in graphics processing systems
US11562701B2 (en) Data processing systems
US11270492B2 (en) Graphics processing systems
US10510323B2 (en) Display controller
US10890966B2 (en) Graphics processing systems
US11004427B2 (en) Method of and data processing system for providing an output surface
US20210343261A1 (en) Systems and methods for foveated rendering
US10692420B2 (en) Data processing systems
JPH09161100A (en) Method and apparatus for display
US10672367B2 (en) Providing data to a display in data processing systems
US6867778B2 (en) End point value correction when traversing an edge using a quantized slope value
JP2002519793A (en) Method and system for rendering graphic elements
JP2007286082A (en) Drawing processor
US10565966B2 (en) Display controllers
JPH04349496A (en) Device and system for image processing
KR20220080314A (en) Video display device including a frame buffer structure for outputting video of a display panel and control method thereof
KR20240069100A (en) Image processing device and method using video area splitting, and electronic system including the same
JPH04261589A (en) Graphic display device

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant