Nothing Special   »   [go: up one dir, main page]

KR100947131B1 - 비디오 프레임 버퍼 플립 큐를 이용한 버퍼들 간의스위칭을 위한 장치 및 방법 - Google Patents

비디오 프레임 버퍼 플립 큐를 이용한 버퍼들 간의스위칭을 위한 장치 및 방법 Download PDF

Info

Publication number
KR100947131B1
KR100947131B1 KR1020087007699A KR20087007699A KR100947131B1 KR 100947131 B1 KR100947131 B1 KR 100947131B1 KR 1020087007699 A KR1020087007699 A KR 1020087007699A KR 20087007699 A KR20087007699 A KR 20087007699A KR 100947131 B1 KR100947131 B1 KR 100947131B1
Authority
KR
South Korea
Prior art keywords
flip
frame buffer
queue
buffers
command
Prior art date
Application number
KR1020087007699A
Other languages
English (en)
Other versions
KR20080039532A (ko
Inventor
홍 지앙
Original Assignee
인텔 코오퍼레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인텔 코오퍼레이션 filed Critical 인텔 코오퍼레이션
Publication of KR20080039532A publication Critical patent/KR20080039532A/ko
Application granted granted Critical
Publication of KR100947131B1 publication Critical patent/KR100947131B1/ko

Links

Images

Classifications

    • 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/399Control of the bit-mapped memory using two or more bit-mapped memories, the operations of which are switched in time, e.g. ping-pong buffers
    • 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/12Synchronisation between the display unit and other units, e.g. other display units, video-disc players

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Generation (AREA)
  • Television Systems (AREA)

Abstract

프레임 버퍼의 버퍼들 간의 플립을 유발하는 플립 커맨드들의 실행을 금지하는 신호가 생성되는 방법, 장치 및 시스템이 설명된다. 플립 커맨드들 및 이들과 연관된 명령 포인터들 중 하나 이상이 플립 커맨드들의 실행을 금지하는 신호를 제거하기 전에 프레임 버퍼 플립 큐 내로 사전 로드될 수 있다.
Figure R1020087007699
프레임 버퍼 플립 큐, 플립 커맨드, 금지 로직, 금지 신호, 렌더링 엔진

Description

비디오 프레임 버퍼 플립 큐를 이용한 버퍼들 간의 스위칭을 위한 장치 및 방법{APPARATUS AND METHOD FOR SWITCHING BETWEEN BUFFERS USING A VIDEO FRAME BUFFER FLIP QUEUE}
본 발명의 실시예들의 양태들은 비디오 그래픽 표시 프로세스의 분야에 관한 것으로서, 구체적으로 일 양태는 비디오 프레임 버퍼 플립 큐를 이용한 버퍼들 간의 스위칭에 관한 것이다.
그래픽/멀티미디어 애플리케이션들에서, 비디오 데이터(즉, 오디오 및 비주얼 데이터)는 일반적인 비디오 캡처링 기술들을 이용하여 비디오 소스로부터 칩셋에 의해 캡처링될 수 있다. 캡처링된 비디오 데이터는 디스플레이 모니터 상의 표시를 위해 제공된다. 액티브 비디오 리애니메이션(re-animation) 동안, 일련의 이미지들이 디스플레이 모니터 상에 순차적으로 표시될 수 있다. 비디오 데이터는 한 쌍의 버퍼에 순차적으로 저장될 수 있다. 통상적으로, 이들 버퍼에 이미지들을 순차적으로 저장하고 하나의 이미지에서 다른 이미지로 디스플레이 콘텐츠를 "플립(flip)"하도록 특별히 구성된 비디오 하드웨어를 구동하기 위한 소프트웨어가 제공된다. 하나의 버퍼에서 다른 버퍼로의 스위칭을 제어하기 위한 방법을 버퍼 플립(buffer flip)이라 한다. 이미지들의 디스플레이 콘텐츠를 플립하는 것은, Microsoft Windows™와 같은 운영 체제(OS)에 의해 제공되는 소프트웨어 인터럽트 서비스를 통해 활성화될 수 있다.
플립은 디스플레이 수직 동기화(Vertical Synchronization; VSYNC) 신호에 동기화되거나 그렇지 않을 수 있다. 비동기화된 플립은 분열 아티팩트들(tearing artifacts)을 야기할 수 있으므로, 대부분의 플립들은 디스플레이 VSYNC에 동기화된다. 비디오 프레임 버퍼 내에서의 콘텐츠의 지연 및 드롭은 도 1에 도시된 바와 같이 때때로 발생할 수 있다. 드롭 및 지연은 디스플레이 모니터 상에 제공되는 이미지들 상에 지터 및 기타 비주얼 결함들을 유발한다. 그래프의 상측 타임라인(time line)은 플립 커맨드들 및 이들과 연관된 명령 포인터들을 나타낸다. 하측 타임라인은 각각의 디스플레이 VSYNC 펄스의 발생을 나타낸다. 화살표는 주어진 플립에 대한 VSYNC를 지시한다. 도 2는 도 1의 타임라인에 대응하는 엔트리들을 갖는 프레임 버퍼 플립 레지스터를 나타낸다.
소프트웨어로부터 버퍼 플립 커맨드(버퍼 플립 명령이라고도 함)가 들어올 때마다, 연관된 명령 포인터가 프레임 버퍼 플립 큐 내에 엔트리로서 저장된다. 일반적으로, VSYNC 펄스가 발생할 때마다, 프레임 버퍼 플립 큐 내의 명령 포인터 엔트리들이 전진하여, 보다 낮은 깊이의 엔트리가 최상 깊이의 엔트리 상에 겹쳐 쓰이게 된다. 명령 포인터는 비디오 모니터 상에 표시될 비디오 데이터의 위치는 물론, 렌더링된 비디오 데이터를 저장하는 특정 프레임 버퍼를 지시한다.
그러나 도 1이 시간 T4 내지 T7 사이에서 지시하는 바와 같이, 프레임 버퍼의 한 버퍼 내의 콘텐츠를 표시할 때 지연이 발생하여, 제공되는 비디오 표시에서 결함이 발생할 수 있다. 연관된 명령 포인터 번호 2(Ptr 2)를 갖는 플립 커맨드는 시간 T5에서의 VSYNC 펄스 바로 뒤에서 프레임 버퍼 플립 큐 내로 로드된다. T4에 표시된 렌더링된 비디오 데이터는 T7에서의 보다 늦은 2개의 VSYNC 펄스에 이르기까지 변경되지 않는다.
더욱이, 도 1이 시간 T7 내지 T10 사이에서 지시하는 바와 같이, 프레임 버퍼의 한 버퍼 내의 콘텐츠가 완전히 드롭되어 디스플레이 모니터 상에 제공되지 않을 수 있다. 연관된 명령 포인터 번호 3(Ptr 3)을 갖는 플립 커맨드는 시간 T7에서의 VSYNC 펄스 바로 뒤에서 프레임 버퍼 플립 큐 내로 로드된다. 연관된 명령 포인터 번호 4(Ptr 4)를 갖는 플립 커맨드는 시간 T7에서의 VSYNC 펄스 뒤에, 그리고 시간 T10에서의 다음의 후속하는 VSYNC 펄스 앞에서 프레임 버퍼 플립 큐 내로 로드된다. Ptr 3과 연관된 프레임 버퍼의 한 버퍼 내의 콘텐츠는 디스플레이 모니터 상에 제공되지 않고 드롭/겹쳐 쓰기 된다.
이전의 비디오 그래픽 표시 프로세스의 구현에서, 소프트웨어 또는 하드웨어는 통상적으로 플립이 완료하였는지를 파악하기 위해 폴링(polling)을 행한다. 소프트웨어 폴링에서 플립 지연 또는 프레임 드롭이 발생하는 경우, 이것은 또한 비디오 표시 프로세스를 동기화하기 위해 그 시점으로부터 앞으로 상당한 CPU 사이클들이 소비됨을 의미할 수 있다. 또한, 프레임 버퍼 플립 큐는 하나의 엔트리 및 가능하다면 상태 플래그를 저장하는 레지스터와 상이할 수 있다.
도면들은 본 발명의 실시예들과 관련된다.
도 1은 각각의 디스플레이 VSYNC 펄스의 발생에 대한 예시적인 수의 플립 커맨드들 및 이들과 연관된 명령 포인터들의 그래프이다.
도 2는 2개의 엔트리의 깊이를 갖는 프레임 버퍼 플립 큐의 블록도로서, 도 1의 타임라인으로부터의 엔트리들에 대응하는 도면이다.
도 3은 프레임 버퍼에 연결된 금지 로직의 일 실시예의 블록도이다.
도 4는 각각의 디스플레이 VSYNC 펄스의 발생에 대한 플립 커맨드들 및 이들과 연관된 명령 포인터들의 일 실시예의 그래프이다.
도 5는 셋 이상의 엔트리의 깊이를 갖는 프레임 버퍼 플립 큐의 일 실시예의 블록도로서, 도 4의 타임라인으로부터의 엔트리들에 대응하는 도면이다.
도 6은 각각의 디스플레이 VSYNC 펄스의 발생에 대한 버스트 명령 내의 플립 커맨드들 및 이들과 연관된 명령 포인터들의 일 실시예의 그래프이다.
도 7은 4 이상의 엔트리의 깊이를 갖는 프레임 버퍼 플립 큐의 일 실시예의 블록도로서, 도 6의 타임라인으로부터의 엔트리들에 대응하는 도면이다.
도 8은 프레임 버퍼 플립 큐 및 그와 연관된 금지 로직의 일 실시예를 이용할 수 있는 예시적인 컴퓨터 시스템의 블록도이다.
본 발명은 다양한 변형 및 대안적인 형태가 가능하지만, 그의 특정 실시예들이 도면들에 예시적으로 도시되며, 본 명세서에서 상세히 설명된다. 본 발명의 실시예들은 개시되는 특정 형태들로 한정되는 것이 아니라, 본 발명의 사상 및 범위 내에 있는 모든 변형, 균등물 및 대안들을 포함하는 것을 의도함을 이해해야 한다.
아래의 설명에서는, 본 발명의 실시예들의 완전한 이해를 제공하기 위하여, 특정 데이터 신호들, 지정 컴포넌트들, 접속들, 비디오 커맨드 타입들 등의 예들과 같은 다양한 특정 상세가 설명된다. 그러나 본 발명의 실시예들은 이러한 특정 상세들 없이도 실시될 수 있음은 이 분야의 전문가에게 자명할 것이다. 특정 수치 참조는 글자대로의 순서로서 해석될 것이 아니라, 제1 버퍼가 제2 버퍼와 상이하다는 것으로 해석되어야 한다. 따라서, 설명되는 특정 상세들은 단지 예시적이다. 특정 상세들은 변경될 수 있으며, 여전히 본 발명의 사상 및 범위 내에 있는 것으로 고려될 수 있다.
일반적으로, 프레임 버퍼의 버퍼들 간의 플립을 유발하는 플립 커맨드들의 실행을 금지하기 위한 신호가 발생되는 다양한 방법, 장치 및 시스템이 설명된다. 플립 커맨드들 및 이들과 연관된 명령 포인터들 중 하나 이상은 플립 커맨드들의 실행을 금지하는 신호를 제거하기 전에 프레임 버퍼 플립 큐 내로 사전 로드될 수 있다.
도 3은 프레임 버퍼에 연결된 금지 로직의 일 실시예의 블록도를 나타낸다. 컴퓨팅 시스템(300)은 커맨드 큐(302), 하나 이상의 렌더링 엔진(304), 프레임 버퍼 플립 큐(306), 금지 로직(308)의 블록, 버스트 명령 디코드 로직(310)의 블록, 동기화된 후기입 큐(writeback queue)(312), 프레임 버퍼(314), 메모리(316) 및 기타 유사한 컴포넌트들을 포함할 수 있다.
그래픽 애플리케이션 프로그램들과 같은 소프트웨어(318)는 명령 디코드 파이프라인을 통해 렌더링 엔진(304)에 하나 이상의 비디오 명령 스트림을 제공할 수 있다. 예를 들어, 제1 그래픽 애플리케이션 프로그램은 그래픽 드라이버 프로그램 명령들을 전송하고, 상태 변수 설정들 및 플립 커맨드 포인터 설정들을 포함하는 그래픽 명령들을 포함하는 명령 스트림들을 명령/커맨드 큐(302)에 전송할 수 있다.
디코딩된 비디오 데이터 및 명령들은 처리 및 디스플레이 모니터(321) 상에서의 결과적인 표시를 위해 렌더링 엔진(304)에 의해 검색된다. 렌더링 엔진(304)은 명령 스트림으로부터의 특정 명령들을 디코딩하여 명령이 어떤 정보를 포함하는지(예를 들어, 적용할 상태 변수 변화 또는 렌더링될 프리미티브(primitive))를 알아낸다. 렌더링 엔진(304)은 한 세트의 렌더링 상태 변수들을 통해 제어될 수 있다. 이러한 상태 변수들은 집합적으로 렌더링 컨텍스트(rendering context)로서 공지되어 있으며, 명령 스트림에 의해 제공될 수 있다. 렌더링 상태 변수들은 객체 칼라, 텍스쳐, 텍스쳐 애플리케이션 모드들 등과 같은 그래픽 렌더링 프로세스의 특정 양태들을 제어한다. 프리미티브 명령은 드로잉(drawing)할 형상들과 이들 형상의 속성인 위치 및 치수들에 관하여 렌더링 엔진(304)에 지시한다.
렌더링 엔진(304)은 3D 엔진, 2D 엔진 및 비디오 엔진을 위한 로직 및 회로를 포함할 수 있다. 렌더링 엔진(304)은 비디오 소스(예를 들어, 비디오 스트림 디코더와 같은 하드웨어 장치 또는 명령 스트림과 같은 소프트웨어(318))로부터 디코딩된 비디오 데이터를 캡처링하고 프레임 버퍼(314) 내의 저장을 위해 디코딩된 비디오 데이터를 전송하기 위한 비디오 캡처 엔진을 더 포함할 수 있지만, 이에 한정되지 않는다. 렌더링 엔진(304)은 디스플레이 모니터(321) 상에 비주얼 표시를 나타내기 위해 프레임 버퍼(314)로부터 비디오 데이터를 검색하기 위한 디스플레이 엔진을 더 포함할 수 있다.
렌더링 엔진(304)은 비디오 데이터를 캡처링하고 동일 디스플레이 모니터(321)를 표시하는 동시 동작을 제어한다.
일 실시예에서, 메모리 컨트롤러(도시되지 않음) 및 렌더링 엔진(304)은 고성능 3차원(3D) 및 2차원(2D) 비디오 능력들을 전달하기 위해 병렬로 실행되는 전용 멀티미디어 엔진들을 포함하는 단일 그래픽 및 메모리 컨트롤러 허브 칩셋(GMCH)으로서 통합될 수 있다.
전술한 바와 같이, 프레임 버퍼(314)는 디스플레이 모니터(321) 상의 비디오 이미지들의 비주얼 표시를 위해 렌더링 엔진(304)으로부터의 데이터를 버퍼링하기 위해 렌더링 엔진(304)에 연결될 수 있다. 프레임 버퍼(314)는 적어도 3개의 개별 버퍼(322-326)를 포함할 수 있다.
액티브 비디오 또는 애니메이션 동안, 일련의 이미지들이 디스플레이 모니터(321) 상에 순차적으로 표시될 필요가 있다. 렌더링 엔진(304)은 제1 버퍼(322) 내의 비디오 스트림의 제1 프레임 내의 데이터를 렌더링하면서, 제2 버퍼(324) 내의 비디오 스트림의 제2 프레임 내의 데이터를 디스플레이 모니터(321) 상에 표시한다. 디스플레이 모니터(321) 상에 분열 아티팩트들이 나타나는 것을 방지하기 위하여, 비디오 데이터는 다수의 버퍼 내에 순차적으로 저장된다. 각각의 비디오 버퍼는 디스플레이 모니터(321) 상에 이미지가 표시된 후에 겹쳐 쓰기 된다. 렌더링 엔진(304)은 동기화된 후기입 큐(312)로부터의 도움으로, 비디오 데이터의 판독을 디스플레이 모니터(321)의 블랭킹 인터벌들에 동기화하고 프레임 버퍼(314) 내의 하나의 버퍼에서 다음 버퍼로 이동하여 디스플레이 모니터(321) 상에 연속 이미지들의 비주얼 표시를 제공할 수 있다.
전술한 바와 같이, 프레임 버퍼(314) 내의 버퍼들(322-326) 간의 플립 메커니즘은 프레임 버퍼(314)의 비디오 버퍼들을 플립하는 태스크를 요청하는 소프트웨어(318)로부터 나오는 명령들을 이용하여 구현될 수 있다. 대안으로, 플립 메커니즘은 비디오 캡처 및 디스플레이 모니터(321) 상의 표시의 동시 동작을 자동화하기 위해 렌더링 엔진(304) 내의 로직에서 구현될 수 있다.
금지 로직(308)은 하나 이상의 버퍼(322-326)를 포함하는 프레임 버퍼(314)에 연결된다. 프레임 버퍼 플립 큐(306)는 금지 로직(308) 및 프레임 버퍼(314)에 연결된다. 프레임 버퍼 플립 큐(306)는 3개 이상의 엔트리를 저장하는 깊이를 갖는다. 프레임 버퍼 플립 큐(306)는 버스트 명령 내의 플립 커맨드들의 수와 동일한 깊이를 가질 수 있다. 금지 로직(308)은 하나 이상의 버퍼(322-326)가 수직 동기화(VSYNC) 펄스 상에서 디스플레이 모니터(321) 상에 표시되는 데이터를 스위칭하는 것을 금지한다. 금지 로직(308)은 또한 프레임 버퍼 플립 큐(306)가 VSYNC 펄스 상에서 포인터 엔트리들을 전진(advancing)시키는 것을 금지한다. VSYNC 신호는 다음 디스플레이 프레임(즉, 수직 라인들의 세트)을 언제 드로잉할지를 디스플레이 모니터(321)에 지시하는 데 사용된다. 디스플레이 모니터(321) 상에 발생할 각 디스플레이 프레임의 드로잉 사이에 걸리는 시간은 종종 리프레시 레이트와 동의어이며, 헤르츠(Hz) 단위로 측정될 수 있다.
동기화된 후기입 큐(312)는 프레임 버퍼(314) 내의 하나 이상의 버퍼(322-326) 간의 플립에 관한 타이밍 및 식별(identity) 정보를 소프트웨어(318)에 전달한다. 동기화된 후기입 큐(312)는 하나 이상의 버퍼(322-326) 간의 플립이 완료한 때의 통지를 생성한다. 동기화된 후기입 큐(312)는 완료된 플립이 발생할 때마다 이러한 통지를 생성한다. 동기화된 후기입 큐(312)는 이러한 타이밍 정보를 제공하여, 소프트웨어(318)가 플립이 완료한 때 폴링해야 하는 것을 막을 수 있다. 또한, 동기화된 후기입 큐(312)는 이러한 타이밍 정보를 제공하여, 소스 플립 주파수를 디스플레이 모니터 VSYNC 주파수와 정확하게 동일하도록 동기화할 수 있다. 디스플레이 모니터 VSYNC 주파수와 동일한 소스 플립 주파수는 소프트웨어 또는 하드웨어 젠록(Genlock) 조건을 생성한다. 대안으로, 동기화 후기입 큐는 렌더링 엔진과 같은 하드웨어 유닛과 통신하여 하드웨어 젠록 조건을 생성할 수 있다.
도 4는 각각의 디스플레이 VSYNC 펄스의 발생에 대한 플립 커맨드들 및 이들과 연관된 명령 포인터들의 일 실시예의 그래프를 나타낸다. 그래프의 상측 타임라인(430)은 플립 커맨드들 및 이들과 연관된 명령 포인터들을 나타낸다. 그래프의 하측 타임라인(432)은 각각의 디스플레이 VSYNC 펄스의 발생을 나타낸다. 화살표는 프레임 버퍼 내의 버퍼들 간의 주어진 플립에 대한 VSYNC를 지시한다. 도 5는 3개 이상의 엔트리(534-538)의 깊이를 갖는 프레임 버퍼 플립 큐(506)의 일 실시예의 블록도로서, 도 4의 타임라인으로부터의 엔트리들에 대응한다.
도 4 및 도 5를 참조하면, 금지 로직은 프레임 버퍼 플립 큐(506)가 사전 로드 능력을 갖게 한다. 사전 로드 능력을 갖는 디스플레이 프레임 버퍼 플립 큐(506)는 3개 이상의 엔트리(534-538) 중 임의의 엔트리를 전진시키기 전에 이들을 저장하는 깊이를 갖는다. 디스플레이 프레임 버퍼 플립 큐(506)는 어떠한 비디오 프레임 드롭도 갖지 않음으로써 비디오 품질을 향상시킬 수 있다. 또한, 사전 설정된 수의 큐 내의 사전 로드된 명령 포인터들 및 렌더링된 비디오 데이터 프레임 버퍼들을 갖는 것은 필요에 따라 실시간으로 비디오 명령들을 전달하기 위한 OS 소프트웨어에 대한 컴퓨팅 시스템의 종속성을 줄인다. OS는 데이터를 우선 순위화할 수 있지만, 현재 시간에 OS를 점유하는 다른 프로그램들에 기초하여 실시간 애플리케이션을 지원하기 위하여 여전히 비디오 명령들을 시간적으로 조정 및 스케줄링하지 않을 수 있다.
디스플레이 프레임 버퍼 플립 큐(506)는 인액티브(in-active)하지만 버퍼 플립 커맨드들 및 이들과 연관된 명령 포인터들을 그 안에 로드할 수 있는 능력을 갖도록 초기화될 수 있다. 시간 T-1에서, 제1 버퍼 플립 커맨드 및 그와 연관된 명령 포인터(Ptr 1)가 프레임 버퍼 플립 큐(506) 내에 로드된다.
금지 로직은 프레임 버퍼가 하나 이상의 버퍼 사이에서 스위칭하는 것을 금지한다. 금지 로직은 프레임 버퍼 플립 큐(506)에 하나 이상의 버퍼 플립 커맨드 및 관련된 명령 포인터들이 사전 로드되는 것을 가능하게 하기 위해 프레임 버퍼 플립 큐(506)가 VSYNC 펄스 상에서 포인터 엔트리들을 전진시키는 것을 금지한다. 디스플레이 프레임 버퍼 플립 큐(506)가 여전히 인액티브(금지) 모드에 있는 경우, 디스플레이 VSYNC 신호는 버퍼 플립을 트리거하지 않는다. 시간 T0에서, VSYNC 펄스가 발생하고, 프레임 버퍼 플립 큐(506) 내에 플립 커맨드가 존재하지만, 디스플레이 모니터는 다음 차례의 버퍼 내의 비디오 데이터의 표시로 플립하지 않는데, 이는 금지 로직이 프레임 버퍼가 하나 이상의 버퍼 사이에서 스위칭하는 것을 금지하기 때문이다.
따라서, 프레임 버퍼 플립 큐(506)에는 하나 이상의 버퍼 플립 커맨드 및 연관된 명령 포인터들이 사전 로드될 수 있다. 시간 T1에서, 제2 버퍼 플립 커맨드 및 그와 관련된 명령 포인터(Ptr 2)가 디스플레이 프레임 버퍼 플립 큐(506) 내로 로드된다.
디스플레이 프레임 버퍼 플립 큐(506)의 상태는 상태 변경 신호를 가진 새로운 플립 커맨드 또는 다른 수단에 의해 액티브 상태로 변경될 수 있다(즉, 소프트웨어 명령들은 금지 로직을 디스에이블하기 위한 커맨드 명령을 통신한다). 따라서, 금지 로직은 금지 로직에 의해 생성된 프레임 버퍼 플립 큐 및 프레임 버퍼에 대한 금지 신호를 디스에이블하기 위한 명령을 소프트웨어로부터 수신하도록 구성될 수 있다. 디스플레이 프레임 버퍼 플립 큐(506)의 상태가 변경되면, 디스플레이 프레임 버퍼 플립 큐(506) 내의 최상위 버퍼 플립 커맨드 및 연관된 명령 포인터는 다음 디스플레이 VSYNC 펄스에서 서비스될 것이다.
예를 들어, 시간 T2에서, 제1 버퍼 플립 커맨드가 실행되고, 이어서 제2 버퍼 플립 커맨드가 프레임 버퍼 플립 큐(506) 내에서 최상위 큐 엔트리로 전진한다. 디스플레이 프레임 버퍼 플립 큐(506) 내의 최상위 버퍼 플립 커맨드/명령 및 연관된 명령 포인트(Ptr 2)는 다음 디스플레이 VSYNC 펄스(T4) 상에서 실행된다.
사전 로드되는 플립 커맨드들의 양은 플립 이벤트와, 프레임 버퍼의 버퍼들 간에 실제 플립이 발생할 때 사이의 지연을 조절할 수 있다. 조절은 각각의 연속적인 VSYNC 펄스 상에서 버퍼들 간의 스위칭이 발생하게 하기에 충분한 버퍼 플립 커맨드들을 사전 로드함으로써 이루어진다. 사전 로드되는 버퍼 플립 커맨드의 양은 비디오 그래픽 데이터를 제공하는 각각의 그래픽 애플리케이션에 의해 결정될 수 있다. 보다 큰 플립 지터의 발생이 예상되는 그래픽 애플리케이션들은 금지 로직을 디스에이블하기 전에 사전 로드되는 플립 커맨드들의 수를 증가시킬 수 있다.
프레임 버퍼 플립 큐(506) 내에 버퍼 플립 커맨드들 및 이들과 관련된 명령 포인터를 로드한 후, 다음 디스플레이 VSYNC 펄스 상에서 프레임 버퍼 플립 큐(506)의 최상위에 있는 버퍼 플립 커맨드들을 실행하는 이러한 프로세스는 플립 지터에 의해 유발되는 비디오 스트림으로부터의 프레임 드롭을 방지하기 위해 세션을 통해 계속된다. 도시된 바와 같이, 어떠한 버퍼 플립 커맨드도 실행되기 전에 겹쳐 쓰이지 않으므로 플립 지터에 의해 발생하는 프레임 드롭(즉, 비디오 데이터가 표시되지 않고 겹쳐 쓰임)은 존재하지 않을 것이다. 주어진 시간에 실행을 기다리는 예상되는 수의 버퍼 플립 커맨드들 이상을 저장하기에 충분한 저장 깊이가 프레임 버퍼 플립 큐(506) 내에 존재한다.
전반적으로, 버퍼 플립 커맨드/명령이 소프트웨어로부터 발생할 때마다, 연관된 명령 포인터가 프레임 버퍼 플립 큐(506) 내에 엔트리로서 저장된다. 금지 로직이 디스에이블될 때 VSYNC 펄스가 발생할 때마다, 프레임 버퍼 플립 큐(506) 내의 명령 포인터 엔트리들이 전진하여, 보다 낮은 깊이의 엔트리가 최상 깊이의 엔트리 상에 겹쳐 쓰기 된다. 명령 포인터는 비디오 모니터 상에 표시될 비디오 데이터의 저장 위치는 물론, 렌더링된 비디오 데이터를 저장하는 특정 프레임 버퍼를 지시한다.
도 6은 각각의 디스플레이 VSYNC 펄스의 발생에 대한 버스트 명령 내의 플립 커맨드들 및 이들과 연관된 명령 포인터들의 일 실시예의 그래프를 나타낸다. 그래프의 상측 타임라인(630)은 플립 커맨드들 및 이들과 연관된 명령 포인터들을 나타낸다. 그래프의 하측 타임라인(632)은 각각의 디스플레이 VSYNC 펄스의 발생을 나타낸다. 도 7은 4개 이상의 엔트리(734-740)의 깊이를 갖는 프레임 버퍼 플립 큐(706)의 일 실시예의 블록도로서, 도 6의 타임라인으로부터의 엔트리들에 대응한다.
도 6 및 도 7을 참조하면, 소프트웨어는 3개 이상의 플립 커맨드 및 연관된 명령 포인터들을 포함하는 단일 버스트 명령을 전송함으로써 다수의 처리(렌더링) 프레임을 그와 관련된 디스플레이 플립 커맨드들(상호 혼합됨)과 함께 커맨드 큐 내에 인큐(enqueue)할 수 있다. 명령 스트림은 이들 버스트 명령 중 하나 이상을 포함할 수 있다. 소프트웨어는 4개의 버퍼 플립 커맨드를 포함하는 예시적인 버스트 명령을 이들과 연관된 명령 포인터들과 함께 전송할 수 있다. 시간 T1에서, ptr 1 명령이 큐 내에 수신된다. 그러나 시간 T2에서, 금지 로직이 인에이블될 때, 다음 VSYNC 펄스까지 플립이 발생하지 않는다. 시간 T3에서, 금지 로직은 디스에이블되었으며, 커맨드 큐에는 다수의 플립 커맨드 ptr 2-4가 더 충분히 로드된다.
버스트 디코딩 로직은 플립 커맨드들의 수, 각각의 플립 커맨드와 연관된 명령 포인터들의 위치 등과 같은 정보를 결정하기 위한 계산을 수행할 수 있다. 이러한 계산이 수행될 때, 상이한 VSYNC 펄스 시간들에 발생하는 플립들의 시퀀스가 프레임 버퍼 플립 큐 내에 인큐된다.
렌더링 엔진은 3개 버퍼 플립 커맨드의 버스트가 하나의 버퍼 플립 커맨드에 이어지는 예와 연관된 비디오 데이터를 렌더링할 수 있다. 렌더링 엔진은 렌더링된 비디오 데이터를 프레임 버퍼 내의 대응 버퍼에 저장할 수 있다. 각각의 개별 버퍼는 상이한 세트의 렌더링된 데이터를 저장한다. 따라서, 예시적인 프레임 버퍼는 4개의 버퍼 플립 커맨드의 렌더링된 비디오 데이터를 저장하기 위하여 적어도 4개의 개별 버퍼를 포함할 것이다. 타임들 T4-T7에서, 버퍼들 간의 플립들이 발생한다.
도 3을 참조하면, 전원 관리 로직(307)은 커맨드 큐(302)로부터 제어 입력을 수신하고, 제어 신호들을 렌더링 엔진(들)(304)으로 전송한다. 많은 경우에, 버스트 명령들 및 대응하는 버스트 계산의 전송은 보다 긴 절전 지속 시간을 허용하며, 따라서 보다 깊은 절전 상태로 진행할 수 있게 한다.
도 7을 참조하면, 프레임 버퍼 플립 큐(706)에는 적극적인 전원 관리를 허용하기 위해 하나의 액션으로 다수의 플립 커맨드가 로드될 수 있다. 렌더링 엔진 및 다른 그래픽 컴포넌트들은 제1 시간 프레임 내에 모든 버스트 명령과 연관된 비디오 데이터를 빠르게 렌더링한 후, 다수의 시간 프레임 동안 전력을 낮출 수 있다. 따라서, 렌더링 엔진은 버스트 명령으로부터의 플립 커맨드들과 연관된 프레임들 중 적어도 하나 동안 절전 상태와 같은 감소된 전력 소비 상태에 들어갈 수 있다.
많은 수의 버퍼들 및 큰 깊이의 프레임 버퍼 플립 큐(706)는 그래픽 렌더링 엔진이 연장된 수의 클록 사이클 동안 절전 상태가 될 수 있게 한다. 따라서, 렌더링 엔진은 예를 들어 T2에서의 제1 VSYNC 펄스에서 T4에서의 제2 VSYNC 펄스까지의 기간에 4개의 프레임 버퍼를 채우기에 충분한 비디오 데이터를 렌더링하여 저장한다. 프레임 버퍼 플립 큐(706)는 프레임 버퍼 내의 버퍼들 간의 4개의 플립에 대해 플립 커맨드들을 연관된 명령 포인터들과 함께 저장한다. 전술한 사전 로드는 그래픽 렌더링 엔진이 T5 내지 T7에서의 다음 3개의 VSYNC 펄스에 걸치는 기간 동안 절전 모드에 들어갈 수 있게 한다.
프레임 버퍼 플립 큐(706)는 4개 이상의 명령 포인터 엔트리를 저장하는 깊이를 가짐으로써 4개 이상의 플립 커맨드 및 연관된 명령 포인터들을 갖는 버스트 명령을 수신하도록 구성된다는 점에 유의한다.
이 예에서, 시간 T8에서, 예시적인 3개의 플립 커맨드 및 연관된 명령 포인터들을 포함하는 제2 버스트 커맨드가 커맨드 큐에 의해 수신될 수 있다. 버스트 명령이 디코딩되고, 렌더링 엔진은 비디오 데이터를 렌더링하여 저장하며, 프레임 버퍼 플립 큐(706)는 플립 커맨드들을 연관된 명령 포인터들과 함께 저장한다.
전술한 바와 같이, 동기화된 후기입 큐는 프레임 버퍼들 간의 플립에 관한 타이밍 및 식별 정보를 소프트웨어에 전달한다. 동기화된 후기입 큐는 프레임 버퍼들 간의 플립이 완료한 때의 통지를 생성할 수 있다. 이러한 타이밍 정보는 소스 플립 주파수를 디스플레이 모니터 수직 동기화 주파수와 정확하게 동일하도록 동기화하는 데 사용될 수 있다. 이것은 소프트웨어 젠록이다.
후기입 큐는 플립들이 발생하고 있는 레이트를 결정하기 위해 API(application program interface) 내의 루틴이 후기입 큐로부터의 정보를 폴링하게 한 후에 VSYNC 펄스들이 발생하는 레이트를 결정함으로써 소프트웨어 젠록을 위해 사용될 수 있다. 루틴은 플립 명령들이 생성되는 레이트를 VSYNC 레이트에 맞추기 위해 올리거나 내린다.
동기화된 후기입 큐는 메모리에 연결된다. 동기화된 후기입 큐는 범용 메모리의 이용을 통해 플립들이 발생할 때의 타임 스탬프 및 플립에 관련된 프레임 버퍼들의 식별자와 같은 프레임 버퍼 플립 정보를 소프트웨어와 통신하는 기능을 한다. 직접 메모리 액세스(DMA)를 이용함으로써, 동기화된 후기입 큐는 감소된 양의 소프트웨어 폴(poll)들이 VSYNC 펄스가 발생한 때를 결정할 수 있게 한다. 회로는 CPU를 사용하지 않고 데이터를 메모리에서 다른 컴포넌트, 예를 들어 메모리 또는 소프트웨어로 전달하도록 구성된다.
따라서, 전달 측에서, 소프트웨어는 버퍼 플립 커맨드들을 커맨드/명령 큐에 기입한다. 피드백 측에서, 소프트웨어는 동기화된 후기입 큐와 연관된 메모리로부터 데이터를 판독한다.
일 실시예에서, 하드웨어 로직은 각각의 검출된 VSYNC 펄스 상에서 프레임 버퍼 플립 큐(706)에 저장된 명령 포인터 엔트리들을 전진시키기 위하여 특정 프레임 버퍼가 명령 포인터에 기초하여 플립되었음을 프레임 버퍼 플립 큐(706)에 통지한다.
이러한 동기화된 프레임 버퍼 플립 큐(706)는 소스 플립 주파수가 디스플레이 주파수와 정확히 동일한 경우 완벽하게 작동한다. 그러나, 소스는 디스플레이 모니터 클록이 아닌 상이한 클록(소프트웨어 멀티미디어 클록 등)에 의해 구동될 수 있으므로, 이들 둘은 동기화되지 않을 수 있다. 드리프팅(drifting)과 같은 차이가 존재할 수 있다. 젠록과 같은 기술들이 필요할 수 있다. 디스플레이 VSYNC 주파수가 측정될 수 있는 경우, 클록 동기화가 이용될 수 있다. 디스플레이 모니터 수직 동기화 주파수는 여러 방법 중 하나에 의해 측정될 수 있다.
디스플레이 모니터 수직 동기화 주파수는 소프트웨어에 의해 직접 판독될 수 있다.
그러나 이 주파수는 VSYNC 타이밍 정보가 플립 이벤트들과 연관될 수 있을 때 더 정확하게 소프트웨어로 전달될 수 있다. 디스플레이 모니터 수직 동기화 주파수는 VSYNC 타이밍 정보가 플립 이벤트들과 연관될 수 있을 때 OS 소프트웨어로 전달될 수 있다. 동기화된 후기입 큐는 버퍼들 간의 플립이 발생한 때의 타임 스탬프, 및 서비스되는 스위칭된 프레임 버퍼의 식별자와 현재 서비스되고 있는 프레임 버퍼의 식별자의 양자를 지시하는 태그 이벤트들을 통신할 수 있다.
또한, 플립 커맨드 도달 시간이 또한 역으로 보고될 수 있는 경우, 소스 플립 지터 측정이 또한 제공될 수 있다. 디스플레이 모니터 수직 동기화 주파수는 플립 커맨드 도달 시간이 동기화 컨트롤러에 역으로 보고될 때에도 제공될 수 있다.
따라서, 동기화된 후기입 큐는 소프트웨어 젠록을 위해 플립 명령들/커맨드들 및 VSYNC 펄스들의 도달 레이트 간의 차이를 통신할 수 있다. 이어서, 소프트웨어 내의 루틴이 두 개의 레이트 간의 실질적인 일치, 즉 소프트웨어 젠록을 달성하기 위해 플립 명령들/커맨드들의 도달 레이트를 증감한다. 젠록은 클록 드리프트에 의해 발생하는 것들을 포함하는 타이밍 불일치를 고려한다.
버퍼 플립 지터는 또한 의도적으로 도입될 수 있다. 일례로, 소정의 합성 및 프리젠테이션 계산들은 필드 경계(예를 들어, 60fps)가 아니라 프레임 경계(예를 들어, 초당 30 프레임)에서 보다 소프트웨어 편의적으로 행해질 수 있다. 이것은 필드 인터벌 대신에 프레임 인터벌에서 후처리가 행해지는 경우에 보다 소프트웨어 편의적이다. 이것은 또한 전력을 절약한다.
일 실시예에서, 디스플레이 프레임 버퍼 플립 큐(706)는 동기화된 후기입 큐와 연결되어, 소프트웨어 구현에서는 소프트웨어에 대해, 하드웨어 구현에서는 렌더링 엔진에 대해 타이밍 정보의 후기입을 허가한다. 정보는 언제, 어떤 프레임 버퍼가 렌더링된 비디오 데이터를 비디오 디스플레이 모니터에 제공하는 액티브 버퍼로 플립되었는지를 포함한다.
도 8은 사전 로드 능력을 갖는 프레임 버퍼 플립 큐 및 관련 금지 로직의 일 실시예를 이용할 수 있는 예시적인 컴퓨터 시스템의 블록도를 나타낸다. 일 실시예에서, 컴퓨터 시스템(800)은 정보를 통신하기 위한 통신 메커니즘 또는 버스(811), 및 정보의 처리를 위해 버스(811)에 연결되는 주 처리 유닛(812)과 같은 집적 회로 컴포넌트를 포함한다. 칩셋(836)과 같은 컴퓨터 시스템(800) 내의 컴포넌트들 또는 장치들 중 하나 이상이 사전 로드 능력을 갖는 프레임 버퍼 플립 큐 및 관련 금지 로직은 물론, 렌더링 엔진의 일 실시예를 이용할 수 있다. 주 처리 유닛(812)은 하나의 유닛으로서 함께 동작하는 하나 이상의 프로세서 코어로 이루어질 수 있다.
컴퓨터 시스템(800)은 주 처리 유닛(812)에 의해 실행될 명령들 및 정보를 저장하기 위해 버스(811)에 연결되는 RAM(random access memory) 또는 기타 동적 저장 장치(804)(주 메모리로 지칭됨)를 더 포함한다. 주 메모리(804)는 또한 주 처리 유닛(812)에 의한 명령들의 실행 동안 임시 변수들 또는 기타 중간 정보를 저장하는 데 사용될 수 있다.
펌웨어(803)는 루틴의 동작들이 기록된 EPROM(electronically programmable read-only memory)과 같은 소프트웨어와 하드웨어의 조합일 수 있다. 펌웨어(803)는 기초 코드, 기본 입출력 시스템 코드(BIOS) 또는 기타 유사한 코드를 내장할 수 있다. 펌웨어(803)는 컴퓨터 시스템(800)이 자체적으로 부팅하는 것을 가능하게 할 수 있다.
컴퓨터 시스템(800)은 또한 주 처리 유닛(812)을 위한 정적 정보 및 명령들을 저장하기 위해 버스(811)에 연결되는 ROM(read-only memory) 및/또는 기타 정적 저장 장치(806)를 포함한다. 정적 저장 장치(806)는 OS 레벨 및 애플리케이션 레벨 소프트웨어를 저장할 수 있다.
컴퓨터 시스템(800)은 정보를 컴퓨터 사용자에게 표시하기 위해 버스(811)에 연결되는 CRT(cathode ray tube) 또는 LCD(liquid crystal display)와 같은 디스플레이 장치(821)에 더 연결될 수 있다. 칩셋이 디스플레이 장치(821)와 인터페이스할 수 있다.
영숫자 및 다른 키들을 포함하는 영숫자 입력 장치(키보드)(822)가 또한 정보 및 커맨드 선택들을 주 처리 유닛(812)에 전달하기 위해 버스(811)에 연결될 수 있다. 추가적인 사용자 입력 장치는 방향 정보 및 커맨드 선택들을 주 처리 유닛(812)에 전달하고 디스플레이 장치(821) 상의 커서 이동을 제어하기 위해 버스(811)에 연결되는 마우스, 트랙볼, 트랙 패드, 스타일러스 또는 커서 방향 키들과 같은 커서 제어 장치(823)이다. 칩셋이 입출력 장치들과 인터페이스할 수 있다.
버스(811)에 연결될 수 있는 다른 장치는 종이, 필름, 또는 유사한 타입의 매체와 같은 매체 상에 명령들, 데이터 또는 기타 정보를 인쇄하는 데 사용될 수 있는 하드 카피 장치(hard copy device)(824)이다. 또한, 스피커 및/또는 마이크로폰(도시되지 않음)과 같은 음성 기록 및 재생 장치가 컴퓨터 시스템(800)과의 오디오 인터페이싱을 위해 버스(811)에 옵션으로 연결될 수 있다. 버스(811)에 연결될 수 있는 다른 장치는 유선/무선 통신 성능기(825)이다.
컴퓨팅 장치는 예를 들어 데스크톱 컴퓨터, 랩톱 컴퓨터, 개인 휴대 단말기, 셀룰러폰, 또는 기타 유사한 장치일 수 있다.
일 실시예에서, 루틴을 용이하게 하기 위해 사용되는 소프트웨어는 머신 판독 가능 매체에 내장될 수 있다. 머신 판독 가능 매체는 머신(예를 들어, 컴퓨터, 네트워크 장치, 개인 휴대 단말기, 제조 도구, 한 세트의 하나 이상의 프로세서를 갖는 임의의 장치 등)에 의해 액세스될 수 있는 형태로 정보를 제공(즉, 저장 및/또는 전송)하는 임의의 메커니즘을 포함한다. 예를 들어, 머신 판독 가능 매체는 기록 가능/기록 불능 매체(예를 들어, 펌웨어를 포함하는 ROM, RAM, 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 장치 등)는 물론, 전기, 광학, 음향 또는 다른 형태의 전파 신호(예를 들어, 반송파, 적외선 신호, 디지털 신호 등) 등을 포함한다.
소정의 예시적인 실시예들이 설명되고 첨부 도면들에 도시되었지만, 이러한 실시예들은 광범위한 발명을 제한하는 것이 아니라 예시적일 뿐이며, 본 개시를 연구한 이 분야의 전문가들에게서 다양한 다른 변형이 이루어질 수 있으므로, 본 발명은 도시되고 설명된 특정 구성 및 배열로 한정되지 않는다는 것을 이해해야 한다. 예를 들어, 전술한 로직은 특정 목적을 달성하도록 구성된 다른 전자 컴포넌트들과 조합된 하드웨어 부울 로직, 특정 목적을 달성하도록 소프트웨어로 작성된 코드, 펌웨어, 이들 3개 및 유사한 구현 기술들의 임의 조합을 이용하여 구현될 수 있다. 아날로그 또는 디지털 형태의 VSYNC 펄스는 프레임을 동기화하는 데 사용된다. 다른 프레임 버퍼 출력 트리거 이벤트들은 동일 기능을 구현할 수 있다. 예를 들어, 프레임 버퍼의 출력은 CRT 또는 LCD와 같은 디스플레이 스크린을 구동하기 위해 DAC(digital to analog converter)로 전송될 수 있다. 또는, 프레임 버퍼의 출력은 DVI(digital video interface) 또는 HDMI와 같은 디지털 비디오 출력 버스로 전송될 수 있다. 렌더링 엔진은 렌더링 엔진, 비디오 디코딩 엔진 또는 비디오 프로세싱 엔진일 수 있다. 성장이 빠르고, 추가적인 진보가 쉽게 예상되지 않는 이와 같은 기술 분야에서, 개시된 실시예들은 본 발명의 원리들 또는 첨부된 클레임들의 범위를 벗어나지 않고 기술적 진보를 가능하게 함으로써 용이해지는 바와 같이 배열 및 상세에 있어서 쉽게 변경될 수 있다.

Claims (20)

  1. 하나 이상의 버퍼를 포함하는 프레임 버퍼에 연결되는 금지 로직;
    3개 이상의 엔트리를 저장하는 깊이를 가지며, 상기 금지 로직은 물론 상기 프레임 버퍼에 연결되는 프레임 버퍼 플립 큐(frame buffer flip queue); 및
    상기 금지 로직 및 상기 프레임 버퍼 플립 큐에 연결되어, 상기 하나 이상의 버퍼 간의 플립에 관한 타이밍 정보 및 식별 정보를 소프트웨어에 전달하는 후기입 큐(writeback queue)
    를 포함하고,
    상기 금지 로직은, 상기 하나 이상의 버퍼가 수직 동기화 펄스 상에서 스위칭되는 것을 금지하도록 구성되고, 또한 상기 프레임 버퍼 플립 큐가 상기 수직 동기화 펄스 상에서 명령 포인터 엔트리들을 전진시키는 것을 금지하도록 구성되는 장치.
  2. 제1항에 있어서, 상기 프레임 버퍼는 적어도 3개의 개별 버퍼로 구성되는 장치.
  3. 제1항에 있어서, 상기 프레임 버퍼 플립 큐의 깊이는 버스트 명령 내의 플립 커맨드들의 수 이상인 장치.
  4. 삭제
  5. 제1항에 있어서, 상기 후기입 큐는 상기 하나 이상의 버퍼 간의 플립이 완료한 때의 통지를 생성하는 장치.
  6. 제1항에 있어서, 상기 후기입 큐는 소스 플립(source-flip) 주파수를 디스플레이 모니터 수직 동기화 주파수와 정확하게 동일하도록 동기화하기 위해 타이밍 정보를 전달하는 장치.
  7. 제1항에 있어서, 버스트 명령 디코드 로직 및 상기 프레임 버퍼 플립 큐에 연결되는 커맨드 큐를 더 포함하는 장치.
  8. 제7항에 있어서, 상기 버스트 명령 디코드 로직은 버스트 명령과 연관된 3개 이상의 플립 커맨드를 디코딩하도록 구성되고, 렌더링 엔진이 상기 버스트 명령으로부터의 상기 3개 이상의 플립 커맨드와 연관된 적어도 하나의 비디오 프레임 동안 감소된 전력 소비 상태에 들어가도록 구성되는 장치.
  9. 제1항에 있어서, 상기 금지 로직은 상기 금지 로직에 의해 생성되는 상기 프레임 버퍼 플립 큐 및 상기 프레임 버퍼에 대한 금지 신호를 디스에이블하기 위한 명령을 소프트웨어로부터 수신하도록 구성되는 장치.
  10. 제2항에 있어서, 상기 프레임 버퍼는 렌더링 엔진에 연결되어, 디스플레이 모니터 상의 비디오 이미지들의 비주얼 표시를 위해 상기 렌더링 엔진으로부터의 데이터를 버퍼링하는 장치.
  11. 프레임 버퍼의 버퍼들 간의 플립을 유발하는 플립 커맨드들의 실행을 금지하기 위한 신호를 생성하는 단계;
    상기 버퍼들 간의 플립이 완료한 때의 통지를 생성하는 단계; 및
    상기 플립 커맨드들의 실행을 금지하는 신호를 제거하기 전에 상기 플립 커맨드들 및 이들과 관련된 명령 포인터들 중 하나 이상을 큐 내로 사전 로드하는(preloading) 단계
    를 포함하는 방법.
  12. 제11항에 있어서, 수직 동기화 펄스가 발생하는 경우에도, 상기 플립 커맨드들의 실행 및 이들과 연관된 명령 포인터들의 상기 큐 내에서의 전진을 금지하는 단계를 더 포함하는 방법.
  13. 제11항에 있어서, 3개 이상의 플립 커맨드 및 연관된 명령 포인터들을 포함하는 단일 버스트 명령 내의 다수의 처리 비디오 프레임을 수신하는 단계를 더 포함하는 방법.
  14. 제13항에 있어서, 상기 단일 버스트 명령으로부터의 플립 커맨드들과 연관된 적어도 하나의 비디오 프레임 동안 렌더링 엔진이 감소된 전력 소비 상태에 들어가게 하는 단계를 더 포함하는 방법.
  15. 제11항에 있어서,
    제1 버퍼에서 비디오 스트림의 제1 프레임 내의 데이터를 렌더링하면서, 상기 비디오 스트림으로부터의 제2 프레임의 제2 버퍼 내의 데이터를 디스플레이 모니터 상에 표시하는 단계; 및
    플립 커맨드의 실행에 기초하여 상기 디스플레이 모니터 상에 데이터를 표시하기 위해 상기 제2 버퍼와 다른 버퍼 사이에서 스위칭하는 단계
    를 더 포함하는 방법.
  16. 제15항에 있어서, 상기 프레임 버퍼들 간의 플립이 완료한 때의 통지를 생성하는 단계를 더 포함하는 방법.
  17. 프로세서;
    상기 프로세서에 접속된 버스; 및
    상기 버스 및 디스플레이 모니터에 연결된 칩셋
    을 포함하고,
    상기 칩셋은,
    하나 이상의 버퍼를 포함하는 프레임 버퍼에 연결된 금지 로직,
    3개 이상의 엔트리를 저장하는 깊이를 가지며, 상기 금지 로직은 물론 상기 프레임 버퍼에 연결되는 프레임 버퍼 플립 큐 - 상기 금지 로직은 상기 하나 이상의 버퍼가 수직 동기화 펄스 상에서 스위칭되는 것을 금지하도록 구성되며, 또한 상기 프레임 버퍼 플립 큐가 상기 수직 동기화 펄스 상에서 명령 포인터 엔트리들을 전진시키는 것을 금지하도록 구성됨 - ,
    상기 금지 로직 및 상기 프레임 버퍼 플립 큐에 연결되어, 상기 하나 이상의 버퍼 간의 플립에 관한 타이밍 정보 및 식별 정보를 소프트웨어에 전달하는 후기입 큐, 및
    상기 프레임 버퍼에 연결되어, 상기 디스플레이 모니터 상의 비디오 이미지들의 비주얼 표시를 위해, 렌더링된 비디오 데이터를 상기 프레임 버퍼에 저장하는 렌더링 엔진
    을 포함하는 컴퓨팅 시스템.
  18. 제17항에 있어서, 상기 프레임 버퍼 플립 큐의 깊이는 버스트 명령 내의 플립 커맨드들의 수 이상인 컴퓨팅 시스템.
  19. 삭제
  20. 제17항에 있어서, 상기 후기입 큐는 상기 하나 이상의 버퍼 간의 플립이 완료한 때의 통지를 생성하는 컴퓨팅 시스템.
KR1020087007699A 2005-09-29 2006-09-26 비디오 프레임 버퍼 플립 큐를 이용한 버퍼들 간의스위칭을 위한 장치 및 방법 KR100947131B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/240,892 2005-09-29
US11/240,892 US7397478B2 (en) 2005-09-29 2005-09-29 Various apparatuses and methods for switching between buffers using a video frame buffer flip queue

Publications (2)

Publication Number Publication Date
KR20080039532A KR20080039532A (ko) 2008-05-07
KR100947131B1 true KR100947131B1 (ko) 2010-03-12

Family

ID=37831670

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087007699A KR100947131B1 (ko) 2005-09-29 2006-09-26 비디오 프레임 버퍼 플립 큐를 이용한 버퍼들 간의스위칭을 위한 장치 및 방법

Country Status (5)

Country Link
US (1) US7397478B2 (ko)
KR (1) KR100947131B1 (ko)
CN (1) CN100592379C (ko)
TW (1) TWI358055B (ko)
WO (1) WO2007041146A2 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2923068B1 (fr) * 2007-10-26 2010-06-11 Thales Sa Dispositif de visualisation comportant un moyen electronique de gel de l'affichage.
US8063910B2 (en) * 2008-07-08 2011-11-22 Seiko Epson Corporation Double-buffering of video data
US8754904B2 (en) * 2011-04-03 2014-06-17 Lucidlogix Software Solutions, Ltd. Virtualization method of vertical-synchronization in graphics systems
US20100265260A1 (en) * 2009-04-17 2010-10-21 Jerzy Wieslaw Swic Automatic Management Of Buffer Switching Using A Double-Buffer
US8368707B2 (en) * 2009-05-18 2013-02-05 Apple Inc. Memory management based on automatic full-screen detection
US8823721B2 (en) * 2009-12-30 2014-09-02 Intel Corporation Techniques for aligning frame data
US8760459B2 (en) * 2009-12-30 2014-06-24 Intel Corporation Display data management techniques
US8643658B2 (en) * 2009-12-30 2014-02-04 Intel Corporation Techniques for aligning frame data
US8823719B2 (en) * 2010-05-13 2014-09-02 Mediatek Inc. Graphics processing method applied to a plurality of buffers and graphics processing apparatus thereof
US8907959B2 (en) * 2010-09-26 2014-12-09 Mediatek Singapore Pte. Ltd. Method for performing video display control within a video display system, and associated video processing circuit and video display system
CN103325385B (zh) 2012-03-23 2018-01-26 杜比实验室特许公司 语音通信方法和设备、操作抖动缓冲器的方法和设备
CN102769737A (zh) * 2012-07-19 2012-11-07 广东威创视讯科技股份有限公司 一种视频画面切换方法和系统
CN103763635B (zh) * 2013-05-02 2018-07-27 乐视网信息技术(北京)股份有限公司 一种视频缓冲的控制方法和系统
US9135672B2 (en) 2013-05-08 2015-09-15 Himax Technologies Limited Display system and data transmission method thereof
TWI493537B (zh) * 2013-06-05 2015-07-21 Himax Tech Ltd 顯示系統及其資料傳遞方法
US9870328B2 (en) * 2014-11-14 2018-01-16 Cavium, Inc. Managing buffered communication between cores
US9665505B2 (en) 2014-11-14 2017-05-30 Cavium, Inc. Managing buffered communication between sockets
US10026142B2 (en) * 2015-04-14 2018-07-17 Intel Corporation Supporting multi-level nesting of command buffers in graphics command streams at computing devices
US9779028B1 (en) 2016-04-01 2017-10-03 Cavium, Inc. Managing translation invalidation
CN106095541B (zh) * 2016-05-31 2019-11-05 深圳市万普拉斯科技有限公司 睡眠管理方法及相关装置
US12079642B2 (en) 2016-10-31 2024-09-03 Ati Technologies Ulc Method and apparatus for dynamically reducing application render-to-on screen time in a desktop environment
US10957020B2 (en) * 2017-12-04 2021-03-23 Nvidia Corporation Systems and methods for frame time smoothing based on modified animation advancement and use of post render queues
CN110379394B (zh) * 2019-06-06 2021-04-27 同方电子科技有限公司 一种基于分层整合模型的工业串口屏内容显示控制方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999057645A1 (en) * 1998-05-04 1999-11-11 S3 Incorporated Double buffered graphics and video accelerator having a write blocking memory interface and method of doing the same
US20020109786A1 (en) * 2001-02-15 2002-08-15 Chae Seung-Soo Apparatus and method of controlling image display
US6614441B1 (en) * 2000-01-07 2003-09-02 Intel Corporation Method and mechanism of automatic video buffer flipping and display sequence management

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933155A (en) * 1996-11-06 1999-08-03 Silicon Graphics, Inc. System and method for buffering multiple frames while controlling latency
US6320619B1 (en) 1997-12-11 2001-11-20 Intel Corporation Flicker filter circuit
US6100906A (en) 1998-04-22 2000-08-08 Ati Technologies, Inc. Method and apparatus for improved double buffering
US6670996B2 (en) 1998-08-20 2003-12-30 Intel Corporation Apparatus and method for display of progressive and interland video content
US6459737B1 (en) 1999-05-07 2002-10-01 Intel Corporation Method and apparatus for avoiding redundant data retrieval during video decoding
US6774950B1 (en) 2000-06-30 2004-08-10 Intel Corporation Displaying video images
JP2006047412A (ja) * 2004-07-30 2006-02-16 Sanyo Electric Co Ltd インターフェース装置及び同期調整方法
US7586492B2 (en) * 2004-12-20 2009-09-08 Nvidia Corporation Real-time display post-processing using programmable hardware

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999057645A1 (en) * 1998-05-04 1999-11-11 S3 Incorporated Double buffered graphics and video accelerator having a write blocking memory interface and method of doing the same
US6614441B1 (en) * 2000-01-07 2003-09-02 Intel Corporation Method and mechanism of automatic video buffer flipping and display sequence management
US20020109786A1 (en) * 2001-02-15 2002-08-15 Chae Seung-Soo Apparatus and method of controlling image display

Also Published As

Publication number Publication date
US7397478B2 (en) 2008-07-08
TW200737117A (en) 2007-10-01
WO2007041146A2 (en) 2007-04-12
KR20080039532A (ko) 2008-05-07
CN101025913A (zh) 2007-08-29
CN100592379C (zh) 2010-02-24
US20070070074A1 (en) 2007-03-29
TWI358055B (en) 2012-02-11
WO2007041146A3 (en) 2007-05-31

Similar Documents

Publication Publication Date Title
KR100947131B1 (ko) 비디오 프레임 버퍼 플립 큐를 이용한 버퍼들 간의스위칭을 위한 장치 및 방법
TWI552136B (zh) 用以控制自我刷新顯示功能之技術(二)
US11164357B2 (en) In-flight adaptive foveated rendering
US6100906A (en) Method and apparatus for improved double buffering
US7941645B1 (en) Isochronous pipelined processor with deterministic control
KR101606428B1 (ko) 그래픽-프로세싱 유닛들 사이의 정책-기반 스위칭
KR101401216B1 (ko) 외부 디스플레이에 대한 그래픽 컨텐츠 미러링
TWI534795B (zh) 用以對齊圖框資料之技術
US7542010B2 (en) Preventing image tearing where a single video input is streamed to two independent display devices
TWI455061B (zh) 控制框再新的技術
KR20220143667A (ko) 지연된 그래픽 프로세싱 유닛 렌더 시간을 보상하기 위한 감소된 디스플레이 프로세싱 유닛 전달 시간
US20160098811A1 (en) Apparatus and method for combining video frame and graphics frame
US8194065B1 (en) Hardware system and method for changing a display refresh rate
US9087473B1 (en) System, method, and computer program product for changing a display refresh rate in an active period
TW201215148A (en) Method for performing video display control within a video display system, and associated video processing circuit and video display system
US10685630B2 (en) Just-in time system bandwidth changes
US8447035B2 (en) Contract based memory management for isochronous streams
US9001134B2 (en) Display balance / metering
US20230074876A1 (en) Delaying dsi clock change based on frame update to provide smoother user interface experience
US11295660B2 (en) Frame replay for variable rate refresh display
US9053559B1 (en) Method and system for presenting image data to a video output device
WO2021248370A1 (en) Methods and apparatus for reducing frame drop via adaptive scheduling
US20230186872A1 (en) Power demand reduction for image generation for displays
WO2023136984A1 (en) Dpu driven adaptive sync for command mode panels
WO2021042331A1 (en) Methods and apparatus for graphics and display pipeline management

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130228

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140303

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150227

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160303

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170302

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee