KR20230105534A - 프레임 확장을 통한 렌더링 최소화 방법 및 프로그램과, 동 프로그램이 기록된, 컴퓨터 판독 가능한 기록 매체 - Google Patents

프레임 확장을 통한 렌더링 최소화 방법 및 프로그램과, 동 프로그램이 기록된, 컴퓨터 판독 가능한 기록 매체 Download PDF

Info

Publication number
KR20230105534A
KR20230105534A KR1020220001037A KR20220001037A KR20230105534A KR 20230105534 A KR20230105534 A KR 20230105534A KR 1020220001037 A KR1020220001037 A KR 1020220001037A KR 20220001037 A KR20220001037 A KR 20220001037A KR 20230105534 A KR20230105534 A KR 20230105534A
Authority
KR
South Korea
Prior art keywords
frame
rendering
scroll
screen
user
Prior art date
Application number
KR1020220001037A
Other languages
English (en)
Other versions
KR102640054B1 (ko
Inventor
안우현
홍창경
Original Assignee
광운대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 광운대학교 산학협력단 filed Critical 광운대학교 산학협력단
Priority to KR1020220001037A priority Critical patent/KR102640054B1/ko
Publication of KR20230105534A publication Critical patent/KR20230105534A/ko
Application granted granted Critical
Publication of KR102640054B1 publication Critical patent/KR102640054B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • 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/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/0485Scrolling or panning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/24Indexing scheme for image data processing or generation, in general involving graphical user interfaces [GUIs]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computer Graphics (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

본 발명은 스크롤 동작으로 인한 렌더링 횟수를 최소화하기 위하여, 화면에 재생되는 콘텐츠에 포함되는 프레임 및 스크롤 시 새롭게 재생될 콘텐츠에 포함되는 프레임에 대해 렌더링을 동시에 수행하여 저장하고, 사용자의 스크롤 동작 시 미리 렌더링해 저장해 놓은 해당 프레임을 스크롤 거리만큼 이동하여 재생하는 프레임 확장을 통한 렌더링 최소화 방법을 제안한다. 상기 프레임 확장을 통한 렌더링 최소화 방법은, 화면에 바로 재생되어야 할 UI 콘텐츠에 포함되는 프레임 및 상기 프레임의 재생 후 추가로 재생되어야 할 UI 콘텐츠에 포함되는 프레임을 동시에 렌더링하고 이를 각각 대상 프레임 및 확장 프레임으로 저장하는 단계 및 사용자가 상기 화면에 스크롤 명령을 인가하였을 때, 현재 화면에 재생 중인 상기 대상 프레임 중 일부 또는 전부를 상기 확장 프레임으로 교체하여 상기 화면에 재생하는 단계를 포함한다.

Description

프레임 확장을 통한 렌더링 최소화 방법 및 프로그램과, 동 프로그램이 기록된, 컴퓨터 판독 가능한 기록 매체{A MINIMIZATION METHOD AND PROGRAM FOR RENDERING BY EXTENDING A FREAME, AND COMPUTER-READABLE RECORDING MEDIUM INCLUDING THE SAME}
본 발명은 렌더링 방법에 관한 것으로, 특히, 스크롤 동작으로 인한 렌더링 횟수를 최소화하기 위하여, 화면에 재생되는 콘텐츠에 포함되는 프레임 및 스크롤 시 새롭게 재생될 콘텐츠에 포함되는 프레임에 대해 렌더링을 동시에 수행하여 저장하고, 사용자의 스크롤 동작 시 미리 렌더링 해 저장해 놓은 해당 프레임을 스크롤 거리만큼 이동하여 재생하는 프레임 확장을 통한 렌더링 최소화 방법 및 프로그램과, 동 프로그램이 기록된, 컴퓨터 판독 가능한 기록 매체에 관한 것이다.
3차원 컴퓨터 그래픽스에서 그래픽스 파이프라인(Graphics Pipeline) 또는 렌더링 파이프라인(Rendering Pipeline)은 3차원 이미지를 2차원 래스터(Raster) 이미지로 표현하기 위한 단계적인 방법을 말한다. 여기서 래스터는 컴퓨터에서 화상 정보를 표현하는 한 가지 방법으로, 이미지를 2차원 형태의 픽셀로 구성하고, 이들을 모습을 조합하여 일정한 간격의 픽셀들로 하나의 화상 정보를 표현하는 것을 말한다. 한 줄에서 연속된 픽셀들의 집합을 래스터 라고도 한다.
안드로이드 운영체계의 중요한 모듈인 그래픽스 파이프라인은 UI(User Interface) 콘텐츠의 렌더링(Rendering), 조정, 합성 및 출력 동작으로 구성된다. 렌더링은 수치와 방정식으로 서술된 2차원 또는 3차원 데이터를 사람이 인지 가능한 영상으로 변환하는 과정이다. 모델링을 기본적인 골격을 만드는 과정이라고 하면 렌더링은 그 골격 표면을 처리하는 과정이라고 할 수 있다.
앱(Application)은 UI 콘텐츠를 위한 프레임을 렌더링하며, 서피스플링거(SurfaceFlinger)는 프레임의 크기, 투명도, 회전 및 위치를 조정하고, Hardware Composer(HWC)는 서피스플링거로부터 전달받은 프레임의 합성과 출력을 수행한다.
사용자 앱, 상태 바, 네비게이션 바 각각은 UI 요소인 복수의 뷰(버튼, 텍스트, 및 이미지)로 구성된 사각 영역인 윈도우(Window)를 가진다. UI 스레드(UI thread)는 사용자와 윈도우의 상호작용 및 윈도우를 구성하는 복수의 뷰를 관리한다. 렌더 스레드(Render thread)는 화면에 재생될 콘텐츠의 프레임 렌더링을 담당한다. 버퍼 큐(Buffer Queue)는 화면 찢김 현상을 줄이는 트리플 버퍼링(Triple Buffering)을 지원하기 위해 3개의 그래픽 버퍼를 관리한다.
도 1은 사용자가 화면을 스크롤 할 때 종래의 안드로이드 그래픽스 파이프라인의 프레임 렌더링 동작을 설명한다.
도 1을 참조하면, 프레임 렌더링 동작은, 사용자가 UI 콘텐츠를 구성하는 뷰를 변경하고자 화면(110)을 터치하여 스크롤 동작을 취함으로써 시작된다.
UI 스레드(120)는 뷰 트리의 다시 그릴 뷰를 검색하여 디스플레이 리스트를 획득하게 되는데, 디스플레이 리스트 각각은 한 개의 뷰를 렌더링하는데 필요한 일련의 그리기 명령어들을 가진다. 렌더 스레드(120)는 UI 스레드(120)로부터 디스플레이 리스트를 전달받은 후 해당 프레임을 렌더링한다. GPU(130)는 디스플레이 리스트들 각각에 대응된 OpenGL ES의 명령어들로 실행함으로써 렌더링 된 프레임을 생성하고, 렌더링 된 프레임을 비어 있는 그래픽버퍼(150, B0)에 저장하고, 해당 그래픽버퍼(B0)를 버퍼 큐(buffer queue)(140)에 넣는다. 설명의 편의를 위해 UI 스레드와 렌더 스레드의 부재번호를 120으로 통합하였고, 그래픽버퍼(150)의 개수를 3개(B0, B1, B2)로 한정하였다.
렌더링 된 프레임이 저장된 그래픽버퍼 번호(ex, 0)를 포함한 화면 출력 정보를 버퍼 아이템 메시지(buffer item messages)(160)에 담아 서피스플링거(170)에 전달한다. 이때 프레임 렌더링 동작이 반복적으로 실행될 때 3개의 그래픽버퍼(B0, B1, B2) 중 프레임을 저장할 그래픽버퍼를 번갈아 가면서 선택한다.
서피스플링거(170)는 수신한 버퍼 아이템 메시지(160)에 포함된 그래픽버퍼 번호로부터, 그래픽버퍼의 주소(또는 핸들)를 관리하는 테이블(180, mImages)에서 렌더링 된 프레임을 저장하는 그래픽버퍼 주소를 획득한다. 서피스플링거(170)가 획득한 그래픽버퍼 주소를 HWC(미도시)에 전달하면, HWC는 그래픽버퍼(B0)에 저장된 프레임을 화면에 출력한다.
상술한 과정을 수행하는, 안드로이드 그래픽스 파이프라인은 스크롤 동작에서 아래와 같은 문제점이 발생한다.
첫째, 스크롤 거리가 매우 미세하더라도 화면의 UI 콘텐츠 일부가 아닌 전체 또는 많은 부분을 다시 그리기 위해 렌더링을 수행하여야 한다.
둘째, 사용자가 화면에 손가락을 터치한 후부터 뗄 때까지의 스크롤 움직임 동안 UI 콘텐츠의 연속적인 변화로 인해 초당 프레임 렌더링 횟수(frame rate)가 60fps(frame per second)까지 이를 정도로 많은 횟수의 프레임 렌더링을 유발한다. 초당 프레임 렌더링 횟수가 많다는 것은 CPU와 GPU의 사용량을 증가한다는 것을 의미하고 결국 소비 전력의 증가를 유발한다.
대한민국 공개특허 제10-2017-0040698호(그래픽스 파이프라인을 수행하는 방법 및 장치, 2017.04.13.)
본 발명이 해결하고자 하는 기술적 과제는, 스크롤 동작으로 인한 렌더링 횟수를 최소화하기 위하여, 화면에 재생되는 콘텐츠에 포함되는 프레임 및 스크롤 시 새롭게 재생될 콘텐츠에 포함되는 프레임에 대해 렌더링을 동시에 수행하여 저장하고, 사용자의 스크롤 동작 시 미리 렌더링 해 저장해 놓은 해당 프레임을 스크롤 거리만큼 이동하여 재생하는 프레임 확장을 통한 렌더링 최소화 방법 및 프로그램과, 동 프로그램이 기록된, 컴퓨터 판독 가능한 기록 매체에 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 측면에 따른 프레임 확장을 통한 렌더링 최소화 방법은, 화면에 바로 재생되어야 할 UI 콘텐츠에 포함되는 프레임 및 상기 프레임의 재생 후 추가로 재생되어야 할 UI 콘텐츠에 포함되는 프레임을 동시에 렌더링하고 이를 각각 대상 프레임 및 확장 프레임으로 저장하는 단계; 및 사용자가 상기 화면에 스크롤 명령을 인가하였을 때, 현재 화면에 재생 중인 상기 대상 프레임 중 일부 또는 전부를 상기 확장 프레임으로 교체하여 상기 화면에 재생하는 단계를 포함한다.
또한, 상기 화면에 재생하는 단계는, 상기 사용자가 인가한 스크롤 거리만큼 상기 확장 프레임을 배치하여 재생할 수 있다.
또한, 상기 확장 프레임은, 상기 스크롤 명령이 업 스크롤 일 때 상기 대상 프레임을 교체하여 상기 화면에 재생될 프레임을 포함할 수 있다.
또한, 상기 스크롤 명령이 다운 스크롤 일 때, 상기 다운 스크롤 명령에 따라 재생되어야 할 프레임에 대해 렌더링을 수행한 후 재생할 수 있다.
또한, 상기 다운 스크롤 명령에 따라 재생되어야 할 프레임에 대해 렌더링을 수행할 때 추가 다운 스크롤 명령에 대응하는 프레임에 대해서는 선-렌더링을 수행하지 않을 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 다른 측면에 따른 프레임 확장을 통한 렌더링 최소화 방법은, 화면에 바로 재생되어야 할 UI 콘텐츠에 포함되는 프레임 및 사용자가 화면을 스크롤 하였을 때 재생되어야 할 UI 콘텐츠에 포함되는 프레임을 함께 렌더링하고 그래픽버퍼에 각각 대상 프레임 및 확장 프레임으로 저장하는 단계; 상기 화면에 스크롤 명령을 인가하고 있는가를 판단하는 단계; 상기 사용자가 인가한 스크롤 동작이 업 스크롤 동작인가를 판단하는 단계; 상기 사용자가 인가한 업 스크롤 거리를 누적하는 단계; 상기 누적된 업 스크롤 거리가 오버플로 상태인가를 판단하는 단계; 상기 누적된 업 스크롤 거리가 오버플로 상태가 아닐 때, 상기 그래픽버퍼에 저장해 놓은 상기 확장 프레임을 상기 사용자가 인가한 상기 업 스크롤 거리만큼 이동하여 재생하는 단계; 상기 누적된 업 스크롤 거리가 오버플로라고 판단하면 누적 스크롤 거리를 0(zero)으로 리셋시키는 단계; 상기 사용자가 인가한 상기 스크롤 동작이 업 스크롤이 아닐 때 이를 다운 스크롤 동작으로 판단하고, 다운 스크롤 거리만큼 이동하였을 때 재생되어야 할 UI 콘텐츠에 포함된 상기 대상 프레임을 렌더링한 후 재생하는 단계; 및 상기 사용자가 스크롤 동작을 인가하지 않을 때 상기 대상 프레임을 재생하는 단계를 포함한다.
또한, 상기 확장 프레임을 상기 사용자가 인가한 상기 업 스크롤 거리만큼 이동하여 재생하는 단계, 상기 누적 스크롤 거리를 0으로 리셋시키는 단계 및 상기 대상 프레임을 렌더링한 후 재생하는 단계를 수행한 후에는 상기 대상 프레임 및 상기 확장 프레임으로 저장하는 단계를 수행하도록 하고, 상기 대상 프레임을 재생하는 단계를 수행한 후에는 상기 화면에 스크롤 명령을 인가하고 있는가를 판단하는 단계를 수행하도록 할 수 있다.
또한, 상기 누적된 업 스크롤 거리가 오버플로상태일 때는, 상기 누적된 업 스크롤 거리가 상기 확장 프레임의 거리보다 길 때일 수 있다.
또한, 상기 확장 프레임은, 상기 스크롤 명령이 업 스크롤 일 때 상기 대상 프레임을 교체하여 상기 화면에 재생될 프레임을 포함할 수 있다.
또한, 상기 대상 프레임을 렌더링한 후 재생하는 단계에서, 상기 대상 프레임에 대해 렌더링을 수행할 때 예상되는 추가 다운 스크롤 명령에 대응하는 프레임에 대해서는 선-렌더링을 수행하지 않을 수 있다.
한편, 상기 기술적 과제를 달성하기 위한 본 발명의 또 다른 측면에 따른 프로그램은, 전술한 프레임 확장을 통한 렌더링 최소화 방법을 실행하기 위한 프로그램일 수 있다.
또한, 상기 기술적 과제를 달성하기 위한 본 발명의 또 다른 측면에 따른 기록 매체는, 전술한 프로그램이 기록된, 컴퓨터 판독 가능한 기록 매체일 수 있다.
상술한 바와 같이 본 발명에 따른 프레임 확장을 통한 렌더링 최소화 방법 및 프로그램과, 동 프로그램이 기록된, 컴퓨터 판독 가능한 기록 매체는, 하드웨어의 추가 없이 안드로이드 운영체제를 최적화하기 때문에 배터리 수명을 연장할 수 있고, 사용자의 보조배터리 구매를 줄일 수 있으므로 가정·산업체의 전력 소비를 크게 줄임으로써 전력 생산과 환경에 대한 비용을 줄일 수 있다는 장점이 있다.
도 1은 사용자가 화면을 스크롤 할 때 종래의 안드로이드 그래픽스 파이프라인의 프레임 렌더링 동작을 설명한다.
도 2는 본 발명에 따른 스크롤 인식 렌더링 방법의 일 실시 예이다.
도 3은 임의의 기기에서 본 발명에 따른 프레임 확장을 통한 렌더링 최소화 방법을 수행하는 과정을 설명한다.
도 4는 스크롤 동작에 따른 확장 프레임의 생성, 재사용 및 화면 출력 과정을 나타낸다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 예시적인 실시 예를 설명하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
이하 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 2는 본 발명에 따른 스크롤 인식 렌더링 방법의 일 실시 예이다.
도 2를 참조하면, 본 발명에 따른 스크롤 인식 렌더링 방법(200)은, 미리 작성한 프로그램에 따라 진행하며, 확장 프레임 렌더링 단계(210), 사용자의 스크롤 동작 유무를 판단하는 단계(220), 스크롤 동작이 업 스크롤 인가를 판단하는 단계(230), 누적된 스크롤 거리를 연산하는 단계(240), 업 스크롤이 오퍼플로 상태인가를 판단하는 단계(250), 확장 프레임을 재생하는 단계(260), 누적 스크롤 거리를 리셋하는 단계(270), 대상 프레임 렌더링 후 재생하는 단계(280) 및 대상 프레임을 재생하는 단계(290)를 포함한다. 여기서 미리 작성한 프로그램은, 스마트폰에 적용되는 구글 안드로이드 운영체제이나 애플의 iOS 운영체제에 적용되는 프로그램을 포함한다.
확장 프레임 렌더링 단계(210)는 화면에 바로 재생되어야 할 UI 콘텐츠에 포함되는 프레임 및 사용자가 화면을 스크롤 하였을 때 재생되어야 할 UI 콘텐츠에 포함되는 프레임을 함께 렌더링하고 그래픽버퍼에 저장한다. 설명의 편의를 위해, 바로 재생되어야 할 UI 콘텐츠에 포함되는 프레임을 대상 프레임이라고 하고, 사용자가 화면을 스크롤 하였을 때 재생되어야 할 UI 콘텐츠에 포함되는 프레임을 확장 프레임이라고 가정하고 설명한다. 따라서 대상프레임과 확장프레임은 서로 직렬로 연속하여 그래픽버퍼에 저장되는 것이 바람직하다.
여기서 확장 프레임 또는 프레임 확장은, 기존에는 화면에 바로 재생할 콘텐츠를 포함하는 프레임의 크기가 기본 프레임 크기인데, 본 발명에서는 재생할 콘텐츠뿐만 아니라 스크롤로 가까운 미래에 보일 콘텐츠를 포함할 수 있도록 프레임과 그래픽버퍼의 크기를 늘렸다는 의미를 포함하고 있다. 즉, 기존에는 렌더링의 대상이 “대상 프레임의 콘텐츠"인데 반해, 본 발명에서는 렌더링의 대상이 되는 프레임의 콘텐츠를 확장하여 “대상 프레임의 콘텐츠”에 “확장 프레임의 콘텐츠”를 추가 하였다. 대상 프레임과 확장 프레임을 구분하는 것이 아니라, 한 번에 렌더링할 하나의 프레임인데, 설명의 편의를 위해 하나의 프레임에 속하지만 현재 재생할 프레임인가 아니면 가까운 미래에 재생할 프레임인가로 구분한 것이다. 이하의 설명은 이러한 가정을 기준으로 작성되었다.
사용자의 스크롤 동작 유무를 판단하는 단계(220)는 본 발명에 따른 스크롤 인식 렌더링 방법(200)이 활성화된 기기의 화면에 스크롤 명령을 인가하고 있는가를 판단한다.
스크롤 동작이 업 스크롤 인가를 판단하는 단계(230)는, 사용자가 인가한 스크롤 동작(220, yes)이 업 스크롤 동작인가를 판단한다.
누적된 스크롤 거리를 연산하는 단계(240)는, 사용자가 업 스크롤 동작을 인가하였을 때(230, Yes)에 스크롤 거리를 누적한다.
업 스크롤이 오퍼플로 상태인가를 판단하는 단계(250)는 누적된 업 스크롤 거리가 오버플로 상태인가를 판단한다. 스크롤 오버플로(overflow)에 대해서는 후술한다.
확장 프레임을 재생하는 단계(260)는 누적된 업 스크롤 거리가 오버플로가 아닐 때(250, No), 그래픽버퍼에 저장해 놓은 확장 프레임을 사용자가 인가한 업 스크롤 거리만큼 이동하여 재생한다. 후술하겠지만, 사용자가 인가하는 스크롤 거리에 따라 현재 재생되고 있는 대상 프레임 중 일부 또는 전부가 확장 프레임으로 교체되게 될 것이다.
누적 스크롤 거리를 리셋하는 단계(270)는 누적된 업 스크롤 거리가 오버플로라고 판단하면(250, Yes) 누적 스크롤 거리를 0(zero)으로 리셋시킨다.
대상 프레임 렌더링 후 재생하는 단계(280)는 사용자가 인가한 스크롤 동작이 업 스크롤이 아닐 때(230, No), 스크롤 거리만큼 이동하였을 때 재생되어야 할 UI 콘텐츠에 포함된 대상 프레임을 렌더링한 후 재생한다.
대상 프레임을 재생하는 단계(290)는 사용자가 스크롤 동작을 인가하지 않을 때(220, No)에는 대상 프레임을 재생한다.
확장 프레임을 재생하는 단계(260), 누적 스크롤 거리를 리셋하는 단계(270) 및 대상 프레임 렌더링 후 재생하는 단계(280)를 수행한 후에는 다시 확장 프레임 렌더링 단계(210)를 수행하도록 하며, 대상 프레임을 재생하는 단계(290)를 수행한 후에는 사용자의 스크롤 동작 유무를 판단하는 단계(220)를 수행하도록 한다.
상술한 바와 같이, 본 발명의 핵심 아이디어 중 하나는 확장 프레임 렌더링 단계(210)에서 화면에 바로 재생되어야 할 UI 콘텐츠에 포함되는 프레임(대상 프레임) 및 사용자가 화면을 스크롤 하였을 때 재생되어야 할 UI 콘텐츠에 포함되는 프레임(확장 프레임)을 함께 렌더링 하는 것이다.
본 발명의 핵심 아이디어 중 다른 하나는 사용자가 스크롤 동작을 수행하여 새로운 프레임(확장 프레임)이 재생되어야 할 때, 확장 프레임을 재생하는 단계(260)에서 미리 렌더링 한 후 저장해 놓은 확장 프레임을 스크롤 거리만큼 이동하여 재생(단계 260)하므로, 사용자가 인가한 스크롤 동작의 스크롤 오버플로를 넘지 않는 범위에서 렌더링 작업을 추가할 필요가 없도록 함으로써, 렌더링의 횟수를 최적화할 수 있도록 하는 것이다.
도 3은 임의의 기기에서 본 발명에 따른 프레임 확장을 통한 렌더링 최소화 방법을 수행하는 과정을 설명한다.
도 3a는 사용자가 스크롤 동작을 수행하지 않았을 때의 렌더링 및 영상 재생과정을 설명하고, 도 3b는 사용자가 스크롤 동작을 수행하였을 때의 렌더링 및 영상 재생 과정을 각각 설명한다.
도 3a를 참조하면, 화면(110)에 보일 UI 콘텐츠를 기존 프레임 즉 대상 프레임(1, 2, 3) 렌더링 동작으로 렌더링 할 때, 스크롤 동작으로 가까운 미래에 보일 가능성이 큰 콘텐츠까지 함께 포함한 확장 프레임(4, 5, 6)을 렌더링 하고, 그래픽버퍼(150, Bo)에 직렬로 연속하여 저장한다. 확장 프레임에서 가까운 미래에 보일 UI 콘텐츠의 영역(4, 5, 6)을 선-렌더링(pre-rendering) 영역이라고 정의한다. 서피스플링거(170)는 선-렌더링 영역을 제외한 화면에 보일 UI 콘텐츠 영역(1 ~ 3)만 출력한다.
도 3b를 참조하면, 사용자의 스크롤 동작에서 새 프레임의 렌더링 없이 이전에 렌더링 된 확장 프레임을 재사용하여 다음과 같은 동작으로 출력한다. 프레임을 렌더링 하는 이전까지의 동작은 기존 그래픽스 파이프라인과 같으며, 그래픽버퍼(B1)을 버퍼 큐(140)에서 획득한다는 점에서 차이가 있다. 다만, 이전에 렌더링 한 확장 프레임을 재사용하므로 프레임 렌더링에 필요한 동작들, 즉 OpenGL 함수들을 실행하는 동작을 수행하지 않는다(Skip frame rendering). 비록 그래픽버퍼(B1)가 프레임을 저장하지 않음에도 화면 출력을 요청하기 위해 버퍼 큐(140)에 넣는다.
기존 그래픽스 파이프라인처럼 버퍼 큐(140)로 반환된 그래픽버퍼의 번호(B1)를 포함한 화면 출력 정보를 버퍼 아이템 메시지(160)에 담아서 서피스플링거(170)로 보낸다. 이때 서피스플링거(170)가 확장 프레임을 출력할 수 있게 하도록 그래픽버퍼 번호(1)를 버퍼 아이템 메시지(160)에 넣을 때, 확장 프레임을 저장하는 그래픽버퍼 번호(0)와 스크롤 거리 d를 추가한다.
서피스플링거(170)는 버퍼 아이템 메시지(160)를 받은 후 확장 프레임을 저장하는 그래픽버퍼의 번호(1)를 확인하고, 그래픽버퍼(B1)에 저장된 확장 프레임을 d만큼 위치시켜 화면에 출력한다.
결국, 스크롤 시 확장 프레임의 재사용은 프레임 렌더링 수행 횟수를 줄이기 때문에 GPU 및 CPU 부하를 감소시키고, 이로 인해 전력 소모를 줄일 수 있다는 것을 알 수 있다.
도 4는 스크롤 동작에 따른 확장 프레임의 생성, 재사용 및 화면 출력 과정을 나타낸다.
도 4(a)의 왼쪽에는 대상 프레임의 UI 콘텐츠(1, 2, 3)가 화면에 재생되고 있고, 확장 프레임(4, 5, 6)이 저장되어 있다. 사용자가 스크롤 거리(d1)만큼 스크롤 하면 확장 프레임(4)을 위로 이동하고 대상 프레임(1)이 화면에서 제외된다. 이 방향의 스크롤 동작을 업 스크롤이라고 한다. 총 스크롤 거리는 d1이며, 스크롤 후 화면 꼭대기에 보일 UI 콘텐츠가 확장 프레임에서 어디에 위치하는지를 나타내는 시작 위치이다. 이 시작 위치에 화면 높이 H를 더한 값은 화면 바닥에 보일 UI 콘텐츠가 확장 프레임에서 어디에 위치를 나타내는 끝 위치이다. 마지막으로 이들 시작과 끝 위치 내의 UI 콘텐츠를 화면에 출력한다(단계 260 참조).
도 4(b)의 왼쪽에 도시한 바와 같이, 사용자가 추가로 거리(d2)만큼 스크롤 하면, 총 스크롤 거리는 d1 + d2이며, 확장 프레임에서 d1 + d2 위치부터 화면 높이 H만큼의 영역을 출력한다(단계 260 참조).
도 4(c)의 왼쪽에 도시한 바와 같이, 사용자가 추가로 거리(d3)만큼 스크롤 한다면, 총 스크롤 거리는 d1 + d2 + d3가 된다. 이 경우, 도 4(c)의 중간에 도시한 것처럼, 총 스크롤 거리와 화면 높이 H를 더한 위치가 확장 프레임의 끝 위치를 넘었다. 이 스크롤은 확장 프레임 밖의, 렌더링 되지 않은 UI 콘텐츠(ex, 7)를 화면에 출력하고자 시도하였고, 이 현상이 업 스크롤 오버플로(또는 스크롤 오버플로)라고 정의한다. 업 스크롤 오버플로가 발생하면 도 4(c)의 오른쪽에 도시한 것처럼 새로 나타날 UI 콘텐츠(ex, 5)를 시작으로 확장 프레임의 높이만큼의 UI 콘텐츠(ex, 6 ~ 10)를 포함하는 확장 프레임을 렌더링 한다. 새로운 확장 프레임이 생성되면 총 스크롤 거리를 초기화한다(단계 270 참조).
도 4(d)는 도 4(c)의 반대 방향으로 스크롤 할 때의 출력 과정을 나타낸다. 이 방향의 스크롤 동작을 다운 스크롤이라고 정의한다. 스크롤 시 화면 꼭대기에 새롭게 나타날 UI 콘텐츠(ex, 4)가 프레임에 포함되지 않기 때문에 해당 UI 콘텐츠를 가지는 확장 프레임을 새로 생성해야 한다. 이 현상을 다운 스크롤 오버플로로 정의한다. 도 4(d)의 중간에 도시한 것처럼 스크롤 방향 때문에 새롭게 보일 UI 콘텐츠로부터 위쪽 영역의 UI 콘텐츠(ex, 1 ~ 3)가 선-렌더링 될 것으로 기대할 수 있다. 그러나 실시 예에 따라서, 예를 들면 안드로이드 그래픽스 파이프라인의 정책으로 인해서, 위쪽 영역으로 선-렌더링하지 않고, 도 4(d)의 오른쪽에 도시한 것처럼 새롭게 보일 UI 콘텐츠(ex, 4 ~ 6)를 시작으로 아래쪽 UI 콘텐츠(ex, 7 ~ 9)를 선-렌더링한다.
결국, 다운 스크롤 시 확장 프레임의 선-렌더링 된 UI 콘텐츠를 재사용할 수 없음에도 불구하고, 재사용할 수 없는 확장 프레임을 렌더링 한다면 CPU와 GPU 부하를 불필요하게 증가시킨다. 본 특허는 이러한 문제를 방지하기 위해 다운 스크롤 발생 시에는 도 4(e)에 도시한 것처럼 확장 프레임에서 선-렌더링 영역을 제외한 화면에 보일 UI 콘텐츠만 렌더링할 것을 제안한다(단계 280 참조).
본 특허의 실효성을 실험은 안드로이드 버전 Pie의 소스 코드를 수정하여 수행하였다. 이를 탑재한 Google Pixel 3XL 스마트폰에서 성능을 측정한 결과, 연속적인 업 스크롤 동작에서 확장 프레임의 재사용을 통해 평균 초당 프레임 렌더링 횟수를 1fps 이하까지 낮추었고, CPU 및 GPU 부하를 기존보다 각각 최대 62% 및 100%까지 감소시켰다. 이런 개선으로 인해 전력 소모를 최대 30%까지 개선하였다.
상기의 설명에는 사용자의 업 스크롤 시에 대해서는 선-렌더링을 수행하지만 다운 스크롤 시에 대응해서는 선-렌더링을 수행하지 않는 것으로 기재하였지만, 상기의 내용을 확장하면, 선-렌더링의 대상이 되는 프레임을 업 스크롤 시뿐만 아니라 다운 스크롤 시에도 적용할 수 있도록 하는 실시 예도 가능할 것이다.
본 발명에 따른 프레임 확장을 통한 렌더링 최소화 방법(200)을 수행하는 복수의 기능 블록들은 도 1에 도시된 종래의 기능 블록(110~180)을 그대로 사용하므로 상기의 설명에는 추가하지 않았다. 다만, 상술한 바와 같이, 각 기능블록(110~180)은 본 발명에 따른 프레임 확장을 통한 렌더링 최소화 방법(200)을 수행할 때의 기능이 차이가 있고, 그 차이는 상기의 설명으로부터 쉽게 유추할 수 있으므로, 여기서는 자세하게 설명하지 않았다.
스마트폰에는 고성능 하드웨어를 탑재되고 있으나 배터리 용량의 증가는 크지 않다. 본 발명은 하드웨어의 추가 없이 안드로이드 운영체제를 최적화하기 때문에 배터리 수명을 연장할 수 있고, 사용자의 보조배터리 구매를 줄일 수 있다. 따라서, 가정·산업체의 전력 소비를 크게 줄임으로써 전력 생산과 환경에 대한 비용을 줄일 수 있다.
본 특허는 구글 안드로이드 운영체제, 애플의 iOS 운영체제에 적용할 수 있으며, 적용 가능한 제품은 다음과 같다.
- 삼성전자 안드로이드 계열 스마트폰: 갤럭시 S21, 갤럭시노트, 갤럭시 Z 폴드2
- 구글 안드로이드 계열 스마트폰: Pixel 4 및 4XL, Pixel 5 및 5XL
- 애플의 아이폰 계열 스마트폰: 아이폰 12, 아이폰 13
또한, 본 기술이 일부 응용될 가능성이 있는 제품, 서비스는 스마트폰 웹 브라우저: 크롬, 오페라 Mini, 마이크로소프트 Edge가 될 것이다. 스마트폰에서 그래픽스 파이프라인과 웹 브라우저의 렌더링 파이프라인은 분리되어 구동된다. 웹 브라우저의 렌더링 파이프라인에서도 스크롤 시 지속적인 렌더링이 발생하여 전력 소모를 증가시킬 수 있다. 본 특허는 크롬, 오페라 Mini, 마이크로소프트 Edge 등의 렌더링 파이프라인에 응용될 수 있다.
안드로이드 그래픽스 파이프라인은 안드로이드 운영체제에 포함된 중요한 모듈이다. 2021년 1/4분기에 세계 스마트폰 운영체제의 점유율은 안드로이드가 71.81% 그리고 iOS가 27.43%를 차지한다. 국내의 스마트폰 운영체제는 안드로이드가 74.03% 그리고 iOS가 25.63%를 차지한다. 결국, 국내/국외에서 안드로이드 스마트 폰의 시장규모가 매우 높음을 확인할 수 있으므로, 본 발명의 산업상 이용 가능성은 충분하다는 것을 알 수 있다.
상술한 본 발명은, 프로그램이 기록된 매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 매체는, 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 매체의 예로는, HDD(Hard Disk Drive), SSD(Solid State Disk), SDD(Silicon Disk Drive), ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있다.
이상에서는 본 발명에 대한 기술사상을 첨부 도면과 함께 서술하였지만 이는 본 발명의 바람직한 실시 예를 예시적으로 설명한 것이지 본 발명을 한정하는 것은 아니다. 또한, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 기술자라면 누구나 본 발명의 기술적 사상의 범주를 이탈하지 않는 범위 내에서 다양한 변형 및 모방 가능함은 명백한 사실이다.
110: 화면
120: UI 스레드 및 렌더 스레드
130: GPU
140: 버퍼 큐(buffer queue)
150: 그래픽버퍼
160: 버퍼 아이템(buffer item) 또는 버퍼 아이템 메시지(buffer item messages)
170: 서피스플링거(SurfaceFlinger)
180: 그래픽버퍼의 주소를 관리하는 테이블

Claims (14)

  1. 화면에 바로 재생되어야 할 UI 콘텐츠에 포함되는 프레임 및 상기 프레임의 재생 후 추가로 재생되어야 할 UI 콘텐츠에 포함되는 프레임을 동시에 렌더링하고 이를 각각 대상 프레임 및 확장 프레임으로 저장하는 단계; 및
    사용자가 상기 화면에 스크롤 명령을 인가하였을 때, 현재 화면에 재생 중인 상기 대상 프레임 중 일부 또는 전부를 상기 확장 프레임으로 교체하여 상기 화면에 재생하는 단계를 포함하는, 프레임 확장을 통한 렌더링 최소화 방법.
  2. 제 1 항에 있어서,
    상기 화면에 재생하는 단계는,
    상기 사용자가 인가한 스크롤 거리만큼 상기 확장 프레임을 배치하여 재생하는, 프레임 확장을 통한 렌더링 최소화 방법.
  3. 제 2 항에 있어서,
    상기 확장 프레임은,
    상기 스크롤 명령이 업 스크롤 일 때 상기 대상 프레임을 교체하여 상기 화면에 재생될 프레임을 포함하는, 프레임 확장을 통한 렌더링 최소화 방법.
  4. 제 2 항에 있어서,
    상기 스크롤 명령이 다운 스크롤 일 때,
    상기 다운 스크롤 명령에 따라 재생되어야 할 프레임에 대해 렌더링을 수행한 후 재생하는, 프레임 확장을 통한 렌더링 최소화 방법.
  5. 제 4 항에 있어서,
    상기 다운 스크롤 명령에 따라 재생되어야 할 프레임에 대해 렌더링을 수행할 때 추가 다운 스크롤 명령에 대응하는 프레임에 대해서는 선-렌더링을 수행하지 않는, 프레임 확장을 통한 렌더링 최소화 방법.
  6. 제 1 항 내지 제 5 항 중 어느 한 항에 따른 프레임 확장을 통한 렌더링 최소화 방법을 실행하기 위한 프로그램.
  7. 화면에 바로 재생되어야 할 UI 콘텐츠에 포함되는 프레임 및 사용자가 화면을 스크롤 하였을 때 재생되어야 할 UI 콘텐츠에 포함되는 프레임을 함께 렌더링하고 그래픽버퍼에 각각 대상 프레임 및 확장 프레임으로 저장하는 단계;
    상기 화면에 스크롤 명령을 인가하고 있는가를 판단하는 단계;
    상기 사용자가 인가한 스크롤 동작이 업 스크롤 동작인가를 판단하는 단계;
    상기 사용자가 인가한 업 스크롤 거리를 누적하는 단계;
    상기 누적된 업 스크롤 거리가 오버플로 상태인가를 판단하는 단계;
    상기 누적된 업 스크롤 거리가 오버플로 상태가 아닐 때, 상기 그래픽버퍼에 저장해 놓은 상기 확장 프레임을 상기 사용자가 인가한 상기 업 스크롤 거리만큼 이동하여 재생하는 단계;
    상기 누적된 업 스크롤 거리가 오버플로라고 판단하면 누적 스크롤 거리를 0(zero)으로 리셋시키는 단계;
    상기 사용자가 인가한 상기 스크롤 동작이 업 스크롤이 아닐 때 이를 다운 스크롤 동작으로 판단하고, 다운 스크롤 거리만큼 이동하였을 때 재생되어야 할 UI 콘텐츠에 포함된 상기 대상 프레임을 렌더링한 후 재생하는 단계; 및
    상기 사용자가 스크롤 동작을 인가하지 않을 때 상기 대상 프레임을 재생하는 단계를 포함하는, 프레임 확장을 통한 렌더링 최소화 방법.
  8. 제 7 항에 있어서,
    상기 확장 프레임을 상기 사용자가 인가한 상기 업 스크롤 거리만큼 이동하여 재생하는 단계, 상기 누적 스크롤 거리를 0으로 리셋시키는 단계 및 상기 대상 프레임을 렌더링한 후 재생하는 단계를 수행한 후에는 상기 대상 프레임 및 상기 확장 프레임으로 저장하는 단계를 수행하도록 하고,
    상기 대상 프레임을 재생하는 단계를 수행한 후에는 상기 화면에 스크롤 명령을 인가하고 있는가를 판단하는 단계를 수행하도록 하는, 프레임 확장을 통한 렌더링 최소화 방법.
  9. 제 8 항에 있어서,
    상기 누적된 업 스크롤 거리가 오버플로상태일 때는,
    상기 누적된 업 스크롤 거리가 상기 확장 프레임의 거리보다 길 때인, 프레임 확장을 통한 렌더링 최소화 방법.
  10. 제 7 항에 있어서,
    상기 확장 프레임은,
    상기 스크롤 명령이 업 스크롤 일 때 상기 대상 프레임을 교체하여 상기 화면에 재생될 프레임을 포함하는, 프레임 확장을 통한 렌더링 최소화 방법.
  11. 제 7 항에 있어서,
    상기 대상 프레임을 렌더링한 후 재생하는 단계에서,
    상기 대상 프레임에 대해 렌더링을 수행할 때 예상되는 추가 다운 스크롤 명령에 대응하는 프레임에 대해서는 선-렌더링을 수행하지 않는, 프레임 확장을 통한 렌더링 최소화 방법.
  12. 제 7 항 내지 제 11 항 중 어느 한 항에 따른 프레임 확장을 통한 렌더링 최소화 방법을 실행하기 위한 프로그램.
  13. 제 6 항에 따른 프로그램이 기록된, 컴퓨터 판독 가능한 기록 매체.
  14. 제 12 항에 따른 프로그램이 기록된, 컴퓨터 판독 가능한 기록 매체.
KR1020220001037A 2022-01-04 2022-01-04 프레임 확장을 통한 렌더링 최소화 방법 및 동 방법을 컴퓨터에서 실행하기 위한 컴퓨터 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체 KR102640054B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220001037A KR102640054B1 (ko) 2022-01-04 2022-01-04 프레임 확장을 통한 렌더링 최소화 방법 및 동 방법을 컴퓨터에서 실행하기 위한 컴퓨터 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220001037A KR102640054B1 (ko) 2022-01-04 2022-01-04 프레임 확장을 통한 렌더링 최소화 방법 및 동 방법을 컴퓨터에서 실행하기 위한 컴퓨터 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체

Publications (2)

Publication Number Publication Date
KR20230105534A true KR20230105534A (ko) 2023-07-11
KR102640054B1 KR102640054B1 (ko) 2024-02-27

Family

ID=87159672

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220001037A KR102640054B1 (ko) 2022-01-04 2022-01-04 프레임 확장을 통한 렌더링 최소화 방법 및 동 방법을 컴퓨터에서 실행하기 위한 컴퓨터 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체

Country Status (1)

Country Link
KR (1) KR102640054B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117648153A (zh) * 2024-01-29 2024-03-05 太平金融科技服务(上海)有限公司 一种渲染展示方法、装置、电子设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130049293A (ko) * 2011-11-04 2013-05-14 삼성전자주식회사 사용자 디바이스에서 스크롤링 방법 및 장치
KR20130081838A (ko) * 2012-01-10 2013-07-18 엘지전자 주식회사 이동 단말기 및 이동 단말기의 제어 방법
KR20170040698A (ko) 2015-10-05 2017-04-13 삼성전자주식회사 그래픽스 파이프라인을 수행하는 방법 및 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130049293A (ko) * 2011-11-04 2013-05-14 삼성전자주식회사 사용자 디바이스에서 스크롤링 방법 및 장치
KR20130081838A (ko) * 2012-01-10 2013-07-18 엘지전자 주식회사 이동 단말기 및 이동 단말기의 제어 방법
KR20170040698A (ko) 2015-10-05 2017-04-13 삼성전자주식회사 그래픽스 파이프라인을 수행하는 방법 및 장치

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117648153A (zh) * 2024-01-29 2024-03-05 太平金融科技服务(上海)有限公司 一种渲染展示方法、装置、电子设备和存储介质
CN117648153B (zh) * 2024-01-29 2024-04-26 太平金融科技服务(上海)有限公司 一种渲染展示方法、装置、电子设备和存储介质

Also Published As

Publication number Publication date
KR102640054B1 (ko) 2024-02-27

Similar Documents

Publication Publication Date Title
KR102139439B1 (ko) 모바일 디바이스 상에 이미지를 애니메이팅하기 위한 방법 및 장치
US10592090B2 (en) Animations for scroll and zoom
US9373308B2 (en) Multi-viewport display of multi-resolution hierarchical image
US8284211B2 (en) Displaying user interface elements having transparent effects
KR102257262B1 (ko) 적응형 사용자 인터페이스 창 관리자
US10157593B2 (en) Cross-platform rendering engine
US11069106B1 (en) Dynamic mesh generation to minimize fillrate utilization
US10388052B2 (en) Methods and systems for adjusting animation duration
EP2997547B1 (en) Primitive-based composition
CN112463273B (zh) 一种安卓应用在pc显示器中的显示方法及装置
US11561637B2 (en) Method and device of drawing handwriting track, electronic apparatus, medium, and program product
KR102640054B1 (ko) 프레임 확장을 통한 렌더링 최소화 방법 및 동 방법을 컴퓨터에서 실행하기 위한 컴퓨터 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체
CN111542872B (zh) 任意块渲染和显示帧重构
US10599319B2 (en) Drag and drop insertion control object
CA2805308A1 (en) Methods and apparatus to perform animation smoothing
JP6264951B2 (ja) 描画装置、プログラム、描画方法
CN103165105A (zh) 移动通信终端以及图形显示方法
JP6536666B2 (ja) 描画制御装置、およびその制御プログラム、描画制御方法
KR102077146B1 (ko) 그래픽 처리 방법 및 장치
WO2014049761A1 (ja) システム、情報処理装置および画像処理方法
JP2004234496A (ja) 図形表示装置
JP5201025B2 (ja) 文書表示装置、文書表示方法およびそのプログラムならびに記憶媒体
CN114461121A (zh) 一种用于实现uefi全屏显示的虚拟图层
US20140372916A1 (en) Fixed header control for grouped grid panel
EP2535873A2 (en) Techniques for synchronizing hardware accelerated graphics rendering and surface composition

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