CN110494837A - 使用高优先级队列进行墨水渲染 - Google Patents

使用高优先级队列进行墨水渲染 Download PDF

Info

Publication number
CN110494837A
CN110494837A CN201880023149.8A CN201880023149A CN110494837A CN 110494837 A CN110494837 A CN 110494837A CN 201880023149 A CN201880023149 A CN 201880023149A CN 110494837 A CN110494837 A CN 110494837A
Authority
CN
China
Prior art keywords
digital ink
frame
input
ink
line segment
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
CN201880023149.8A
Other languages
English (en)
Other versions
CN110494837B (zh
Inventor
M·A·麦克马伦
B·H·索伯
N·D·菲尼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN110494837A publication Critical patent/CN110494837A/zh
Application granted granted Critical
Publication of CN110494837B publication Critical patent/CN110494837B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/0416Control or interface arrangements specially adapted for digitisers
    • 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/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • 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
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves
    • 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/003Details of a display terminal, the details relating to the control arrangement of the display terminal and to the interfaces thereto
    • G09G5/006Details of the interface to the display terminal
    • 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/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04883Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2320/00Control of display operating conditions
    • G09G2320/02Improving the quality of display appearance
    • G09G2320/0252Improving the response speed
    • 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/12Overlay of images, i.e. displayed pixel being the result of switching between the corresponding input pixels

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 Hardware Design (AREA)
  • Image Generation (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

本文中所描述的示例通常涉及在计算机设备的显示器上绘制数字墨水。该计算机设备可以经由图形处理单元(GPU)的图形队列来渲染帧。计算机设备可以在至少扫描帧的包括数字墨水的一部分之前的指定时间,从输入缓冲器获取经更新的数字墨水输入。计算机设备可以在至少显示帧的包括数字墨水的一部分之前,基于经更新的数字墨水输入经由GPU的优先级队列来在渲染的帧上绘制数字墨水。优先级队列可以提供命令以调度GPU的计算着色器来绘制数字墨水。

Description

使用高优先级队列进行墨水渲染
背景技术
本公开涉及一种计算机图形***,并且更具体地涉及显示对数字墨水的更新。
数字墨水允许用户使用诸如数字笔之类的设备在显示设备的屏幕上进行绘制。通常,来自设备的输入从CPU生成命令,以更新屏幕以包括数字墨水。屏幕更新被提供至图形处理器(GPU),后者渲染包括数字墨水的经更新的屏幕。GPU通常会将数字墨水连同其他更新一起排队到屏幕,并且当更新屏幕时渲染墨水。通常屏幕刷新率约为30Hz至90Hz。用户可以在方向快速改变的情况下以高速(相对于屏幕刷新率)移动数字笔尖。例如,数字笔可提供以240Hz的位置更新。由于渲染管线的长度,在接收到数字墨水输入的时间到GPU能够渲染输入的时间之间可能有至少50ms的延迟。因而,当使用数字墨水进行绘制时,用户可能会注意到笔输入的尖端与渲染的数字墨水之间的间隙。用户可能会觉得与传统墨水相比,使用数字墨水进行绘制的体验响应速度较慢。
处理数字墨水的一种解决方案是在显示设备中使用定制处理硬件,其处理输入并且渲染数字墨水。例如,显示设备可以使用定制处理硬件检测笔的位置并且对像素着色。虽然有效,但是该解决方案针对特定硬件定制,而定制的处理硬件会使成本显着增加。
因此,本领域中需要改进图形处理以更新显示设备上的数字墨水。
发明内容
下面给出了本公开的一个或多个实现方式的简化概述,以便提供对这种实现方式的基本理解。该概述不是所有预期实现方式的广泛概述,并且既不旨在标识所有实现方式的关键或核心元素,也不旨在描绘任何或所有实现方式的范围。其唯一目的是以简化形式呈现本公开的一个或多个实现方式的一些概念,作为稍后所呈现的更详细描述的序言。
在示例中,提供了一种用于在显示器上绘制数字墨水的方法。该方法包括:经由图形处理单元(GPU)的图形队列渲染帧。该方法包括:在至少将帧的包括数字墨水的一部分扫描到显示器之前的指定时间,从输入缓冲器获取数字墨水输入。该方法包括:在至少将帧的包括数字墨水的所述一部分显示到显示器之前,基于数字墨水输入经由GPU的高优先级队列在渲染的帧上绘制数字墨水。
在另一示例中,提供了一种用于绘制数字墨水的计算设备。该计算机设备包括存储器,其存储用于执行操作***以及一个或多个应用的一个或多个参数或指令。该计算机设备包括GPU,其用于渲染一个或多个应用的帧以在耦合到计算设备的显示设备上显示,该GPU包括图形队列和优先级队列。该计算机设备包括耦合到存储器的至少一个处理器、以及GPU。至少一个处理器被配置为经由GPU的图形队列渲染帧。至少一个处理器被配置为在扫描帧的包括数字墨水的至少一部分之前的指定时间,从输入缓冲器获取数字墨水输入。至少一个处理器被配置为在至少将帧的包括数字墨水的所述一部分扫描到显示器之前,基于数字墨水输入经由GPU的优先级队列在渲染的帧上绘制数字墨水。
在另一示例中,提供了一种非暂态计算机可读介质,其包括可由一个或多个处理器执行,以使用计算设备中的GPU绘制数字墨水的代码。该代码包括用于经由GPU的图形队列渲染帧的代码。该代码包括用于在至少将帧的包括数字墨水的一部分扫描到显示器之前的指定时间,从输入缓冲器获取数字墨水输入的代码。该代码包括用于在至少将帧的包括数字墨水的一部分扫描到显示器之前,基于数字墨水输入经由GPU的高优先级队列来在渲染的帧上绘制数字墨水的代码。
与本公开的实现方式有关的其他优点和新颖特征在下面的描述中进行部分阐述,并且在对以下内容进行检查或通过其实践学习后,对于本领域技术人员而言,其部分将变得更加显而易见。
附图说明
在附图中:
图1是使用数字笔和常规技术在显示器上绘制数字墨水的图;
图2是根据本公开的实现方式的用于在显示器上绘制数字墨水的示例***的示意性框图;
图3是根据本公开的实现方式的使用数字笔在显示器上绘制数字墨水的图;
图4是根据本公开的实现方式的在显示器上绘制数字墨水的示例方法的流程图;
图5是使用图形队列在显示器上渲染数字墨水的时序图;
图6是根据本公开的实现方式的使用优先级队列绘制数字墨水的时序图;
图7是根据本公开的实现方式的使用优先级队列和预测的定时来绘制数字墨水的时序图;
图8是根据本公开的实现方式的使用计算着色器在显示器的像素上绘制数字墨水的示例的示意图;
图9是根据本公开的实现方式的使用计算着色器绘制数字墨水的示例方法的流程图;
图10是根据本公开的实现方式的使用计算着色器在显示器的像素上绘制数字墨水的另一示例的示意图;
图11是根据本公开的实现方式的使用计算着色器绘制数字墨水的另一示例方法的流程图;以及
图12是根据本公开的实现方式的示例计算机设备的示意框图。
具体实施方式
本公开提供了用于以相对较低的延迟(与当前解决方案相比较)在显示器上绘制数字墨水的***和方法。如本文中所使用的,术语数字墨水包括基于用户相对于显示器的指示来在显示器上对像素的任何上色。例如,用户可以使用数字笔、触笔(stylus)或手指来绘制数字墨水。
例如,在实现方式中,本公开提供了用于使用优先级队列在屏幕上渲染数字墨水以将最新墨水输入添加到渲染的帧中的***和方法。优先级队列可以是计算着色器的队列。计算着色器可以是可编程着色器阶段,其提供高速通用计算并且利用图形处理单元(GPU)上的大量并行处理器。计算着色器可以在单个阶段中执行操作,并且可以具有与图形管线分离的优先级队列。优先级队列的特点如下:与图形管线中的图形处理工作相比,优先级队列中的图形处理工作可以更快地被处理。与定制处理硬件不同,计算着色器可以是许多计算机设备上GPU的非定制部件。例如,可以在包括能够至少运行MICROSOFT Direct3D10的GPU的计算机设备上找到这种计算着色器。***和方法使用优先级队列和计算着色器来对数字墨水的最新更新(例如,至少关于位置)进行处理,并且将其绘制到将要显示的帧,同时传统图形管线用于在后续帧中渲染先前接收的数字墨水。
在实现方式中,可以将最新数字墨水的输入放在相对较快的路径上(与到图形管线的路径相比较),以更新该高优先级的计算着色器的绘制。例如,笔输入可以直接提供给墨水功能,从而绕过应用和2D合成器。墨水功能可以向计算着色器提供命令,以使用计算着色器绘制墨水更新。命令可以添加到计算着色器的优先级队列。用于数字墨水更新的定时可以由受监测的围栏(fence)提供,该围栏提供关于与呈现下一帧的期限相对应的视频同步(V-SYNC)的指示。
计算着色器可以使用各种过程来将数字墨水添加到帧。通常,计算着色器不像传统图形处理那样使用三角形。在示例过程中,进入墨水功能的输入可以是数字墨水的线段的起点和末端点。CPU可以确定沿着线段的长轴的多个像素。然后,CPU可以使用指派命令来执行任何数目的计算着色器线程,每个计算着色器线程都确定沿着短轴的哪个像素要针对长轴上的像素进行调整。可以使用其他技术以对计算着色器进行编程,以将数字墨水的段添加到帧。因为计算着色器是可编程的,所以可以根据需要开发用于绘制高质量墨水的技术。经更新的墨水可以提供给传统渲染管线,以在接收到经更新的墨水之时的帧之后的帧中进行显示。
现在参考图1,示例计算机***100包括计算机设备110和数字笔120(也称为触笔)。计算机设备110可以是例如任何移动或固定计算机设备,其包括但不限于台式计算机或膝上型计算机或平板计算机、蜂窝电话、游戏设备、混合现实或虚拟现实设备、音乐设备、电视、导航***、相机、个人数字助理(PDA)、手持设备、具有与一个或多个其他设备的有线和/或无线连接能力的任何其他计算机设备、或能够从数字笔120接收输入的任何其他类型的计算机化设备。计算机设备110可以包括显示器112。显示器112可以是数字化表面,诸如触摸屏,其既执行图像的输出又接收来自用户的输入。显示器112可以包括数字转换器108,其用于检测用户和显示器112之间的交互的位置。例如,数字转换器108可以检测显示器112上的手指或数字笔120的位置或数字笔120与显示器112之间的接触点或近接触点。在一些示例中,计算机设备110可以检测悬停在数字化表面附近的数字笔120,并且响应于诸如点击数字笔120上的按钮之类的动作而记录触摸事件。
如图1所示,计算机设备110可以允许用户在显示器112上绘制数字墨水102。例如,图1图示了用连续线在显示器112上书写的单词“墨水”。可以以刷新率(例如,30Hz至90Hz)对显示器112进行周期性的更新。数字笔120和/或数字转换器108可以以比刷新率更高的速率(例如,240Hz)来提供经更新的位置信息。数字墨水102的显示部分可以在与位置的最后更新相对应的末端点104处结束,该位置的最后更新被用作渲染显示器112的图像的输入。因为数字笔120可以相对快速地移动,所以末末端点104和笔尖122之间的段106(表示为虚线)没有被包括在渲染到显示器112上的图像的数字墨水102中。因而,当用户正在使用数字笔120书写时,与段106相对应的间隙可能出现在数字墨水102和笔尖122之间。
参照图2,示例计算机***100可以包括计算机设备110,该计算机设备110使用包括优先级队列137和计算着色器138的图形处理单元(GPU)130提供图像以供在显示器112上进行显示,该优先级队列137用于从笔120接收位置更新,而该计算着色器138用于渲染笔更新。计算机设备110还可以包括CPU 114,其执行存储在存储器116中的指令。例如,CPU 114可以执行操作***140和一个或多个应用160。操作***140可以控制GPU 130,以及优先级队列137和计算着色器138的使用,以便以减少数字墨水输入(例如,来自数字笔120)和在显示器112上绘制数字墨水之间的延迟的方式绘制数字墨水,例如,以便减少与可能出现在数字墨水102和笔尖122之间的段106相对应的间隙(相对于当前解决方案)。
计算机设备110可以包括存储器116和CPU 114,后者被配置为控制计算机设备110的操作。存储器116可以被配置为用于存储限定操作***140和/或应用160、和/或与操作***140和/或应用160相关联的数据和/或计算机可执行指令,并且CPU 114可以执行操作***140和/或应用160。存储器116的示例可以包括但不限于计算机可用的存储器类型,诸如随机存取存储器(RAM)、只读存储器(ROM)、磁带、磁盘、光盘、易失性存储器、非易失性存储器、及其任意组合。存储器116可以存储由CPU 114执行的应用的本地版本。
CPU 114可以包括用于执行指令的一个或多个处理器。CPU 114的示例可以包括但不限于如本文中所描述的特别编程的任意处理器,其包括控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、片上***(SoC)、或其他可编程逻辑或状态机。CPU114可以包括其他处理部件,诸如算术逻辑单元(ALU)、寄存器、以及控制单元。
操作***140可以包括存储在存储器116中并且可由CPU 114执行的指令(诸如应用160)。操作***140可以包括显示控制器142,其用于控制GPU 130。例如,显示控制器142可以向GPU 130提供命令146以执行一个或多个特定图形处理操作,诸如渲染源图像或执行调整。显示控制器142可以包括形式为硬件和/或软件部件的合成器144,该合成器144被配置为组合多个信息源以创建完整图像以供显示。例如,在2D环境中,合成器144可以确定要在哪些窗口中渲染各种应用。
GPU 130可以包括用于图像处理的专用硬件和一个或多个处理器。在实现方式中,GPU 130可以与计算机设备的母板上的CPU 114集成在一起,或者可以是分立芯片。GPU 130可以包括专用存储器132。GPU 130可以经由显示接口133连接到显示器112。GPU 130可以根据显示器112的刷新率经由显示接口133周期性地从图像缓冲器134向显示器112扫描输出图像。GPU 130可以包括图形队列135、渲染管线136、优先级队列137、以及计算着色器138。图形队列135可以从显示控制器142接收用于渲染图像的命令。图形队列135通常可以向渲染管线136提供命令。渲染管线136可以执行图像处理的多个阶段。例如,渲染管线136可以包括输入汇编器阶段、顶点着色器阶段、外壳着色器阶段、镶嵌器阶段、域着色器阶段、几何着色器阶段、流输出阶段、光栅化(rasterizer)阶段、像素着色器阶段、以及输出合并器阶段。
优先级队列137可以从墨水功能150和/或显示控制器142接收命令。通常,优先级队列137可以向计算着色器138提供命令。计算着色器138可以作为单个处理阶段操作,其可以允许优先级队列137中的命令优先于现有命令(例如,来自图形队列)。因而,经由优先级队列137将命令传递到计算着色器138可以允许以快速且可预测的方式执行命令。在实现方式中,优先级队列137还可以向渲染管线136提供命令。例如,渲染管线硬件可以允许在渲染管线136的某些阶段中断正在进行的命令,或者可以包括用于处理高优先级命令的附加资源。因而,与由渲染管线136的多个阶段执行相同操作相比,使用优先级队列137和/或计算着色器138可以允许更快地执行相对简单的绘制墨水的操作。与渲染管线136渲染整个帧所花费的时间相比,着色器138绘制经更新的墨水的时间更少。因此,当使用优先级队列和/或计算着色器138时,用于获得用于墨水更新的输入的时间可以被移动得更接近显示墨水的时间。
在示例中,显示接口133可以与GPU 130和/或存储器132通信耦合以用于与显示器112通信。如本文所称谓的显示接口还可以包括各种类型的端口,其包括高清多媒体接口(HDMI)端口、显示串行接口(DSI)端口、移动行业处理器接口(MIPI)DSI端口、通用串行总线(USB)端口、火线(Firewire)端口、或可以允许计算机设备110和显示器112之间通信的其他嵌入式或外部有线或无线显示端口。
操作***140可以包括墨水功能150。墨水功能150可以提供用于使得墨水输入到达优先级队列137的快速路径。例如,快速路径可以在生成用于渲染墨水的命令之前,提供用于将墨水输入绘制到优先级队列而非将墨水输入提供给应用以进行处理的传统路径的命令。因而,快速路径可以绕过应用160。数字笔120和/或数字转换器108可以经由有线或无线连接124向存储器116中的输入缓冲器156提供输入信息(例如,笔坐标和特性)。当被唤醒用于输入时,墨水功能150可以访问输入缓冲器156以获得输入信息。墨水功能150可以例如基于输入是否在绘制区域中或者是否选择了上墨模式来确定输入信息是墨水输入还是另一类型的输入(例如,按钮按压)。墨水功能150可以基于墨水输入生成使得GPU 130绘制数字墨水的命令,并且将命令发送到优先级队列137。例如,墨水功能150可以基于墨水输入生成使得计算着色器138绘制数字墨水102的调度命令。墨水功能150可以向利用墨水输入的其他部件(诸如显示控制器142和应用160)提供墨水输入。例如,显示控制器142可以控制GPU 130以使用图形队列135在后续帧(相对于当前呈现的帧)中渲染墨水输入。
墨水功能150还可以控制获得墨水输入并且生成用于绘制数字墨水的命令的时序。为了最小化墨水输入与在显示器112上绘制数字墨水之间的延迟,墨水功能150可以在处理被包含在要呈现的帧中的墨水输入之前尝试尽可能晚地获取墨水输入。在实现方式中,GPU 130可以以固定图案(例如,光栅)将图像缓冲器134扫描到显示器112。如本文中所使用的,扫描可以是指更新显示器112上的像素的过程。例如,可以从视频同步(V-SYNC)处开始从顶部到底部扫描显示器112以更新每个像素。墨水功能15 0可以包括预测器152,其可以估计新数字墨水将被扫描到显示器112的时间。例如,如果墨水输入被定位在显示器112的顶部,则可以在V-SYNC之后不久扫描数字墨水。相反,如果墨水输入被定位在显示器112的底部,则可以直到更靠近帧的末端才扫描数字墨水。在将数字墨水的位置扫描到显示器112之前,墨水功能150可能能够获得附加墨水输入,并且将数字墨水绘制到图像缓冲器134。预测器152可以基于数字墨水输入的最新位置和数字笔120的速度,预测新数字墨水将被扫描的时间。预测器152可以使用预测的时间来确定用于向GPU 130提供绘制命令的安全裕度,以便在GPU 130将位置扫描到显示器112之前,完成绘制数字墨水。
墨水功能150还可以包括定时功能154,其用于唤醒墨水功能150以获得输入。定时功能154可以使用周期监测的围栏基于V-SYNC和预测的安全裕度来设置每个帧的唤醒时间。周期监测的围栏可以在诸如V-SYNC之类的硬件事件之前在配置时间提供信号。周期监测的围栏可以是同步对象,该同步对象允许处理器(例如,CPU 114或GPU130)发信号通知特定围栏对象或等待该特定围栏对象。同步对象可以等待周期性发生的等待事件,诸如与各种VSYNC的时间偏移。在示例中,定时功能154可以设置用于周期监测的围栏的偏移。定时功能154可以基于预测的安全裕度来调整周期监测的围栏,使得墨水功能150及时唤醒以获得输入信息并且生成针对GPU 130的命令。
计算机设备110还可以包括应用160,该应用160包括存储在存储器116中并且由CPU 114执行的指令。例如,应用160可以是使用数字墨水以例如做笔记的应用。用户可以使用数字墨水提供针对应用160的输入。例如,应用160可以执行字符识别以将数字墨水翻译成文本。应当注意,墨水功能150可以绕过应用160,用于首先绘制数字墨水。例如,墨水功能150可以在将墨水输入158提供给应用160之前获得墨水输入并且生成用于绘制数字墨水的命令。墨水功能150还可以与应用160通信以确定数字墨水的特性,诸如线宽和颜色。
现在参考图3,与图1相比较,本公开可以允许计算机设备110以减少段106的长度的方式在显示器112上绘制数字墨水102。例如,图3图示了使用与图1中相同的输入以连续线被书写在显示器112上单词“墨水”。末端点104仍然可以表示在V-SYNC处可用于经由图形队列135渲染帧的最后墨水输入。然而,计算机设备110可以获取V-SYNC之后的包括点172的经更新的墨水输入。然后,计算机设备110可以使用优先级队列137和/或计算着色器138来绘制线段170。因而,可以通过绘制线段170来减少与段106相对应的间隙。应当理解,尽管为了简化,图3图示了用线段170绘制经更新的数字墨水,但是还可以使用优先级队列137和/或计算着色器138绘制更复杂的曲线。
现在参考图4,示例方法300允许计算机设备110在显示器112上显示数字墨水。例如,方法300可以如同被数字笔120绘制的那样用于显示数字墨水102,使得末端点104保持靠近笔尖122。结果,与当前解决方案相比,方法300的操作可以更少的延迟绘制数字墨水102。方法300中图示的动作可以在时间上重叠。例如,在某个时刻,动作中的两个动作可以由不同部件执行。动作的执行还可以在部件上交织。附加地,可以以不同于图4所示的顺序来执行方法300中所图示的动作。下文关于图5至图7对时序的其他细节和示例进行讨论。
在302处,方法300可以包括:经由图形处理单元(GPU)的图形队列渲染帧。例如,显示控制器142可以经由GPU 130的图形队列135来渲染帧。在304处,动作302可以包括:经由GPU的渲染管线在帧内渲染数字墨水,其中数字墨水在帧之前的视频同步(V-SYNC)处可用。例如,显示控制器142可以经由GPU 130的渲染管线136在帧内渲染数字墨水。数字墨水可以是基于帧之前的视频同步之前可用的墨水输入(例如,直至末端点104的数字墨水102)。也就是说,可以经由图形队列135和渲染管线136通过正常的帧渲染过程来处理在帧之前的V-SYNC处可用的数字墨水。
在306处,方法300可以可选地包括:至少基于先前输入位置来确定用于获得针对帧的经更新的数字墨水输入的指定时间。例如,预测器152可以至少基于先前输入位置来确定用于获得帧的数字墨水输入的指定时间。在实现方式中,预测器152可以基于先前输入位置和输入速度来估计数字墨水输入的位置。预测器152可以估计V-SYNC之后何时所估计的位置将被扫描的时间。预测器152可以确定用于绘制数字墨水的所估计的扫描时间之前的安全裕度。预测器152可以设置处于安全裕度处或之前的指定时间。指定时间可以取决于墨水输入的估计位置而在V-SYNC之前或之后。在实现方式中,预测器152可以基于关于预测的准确性或GPU完成操作的时间的反馈来调整安全裕度。例如,预测器152可以接收GPU 130被唤醒之后实际上何时开始绘制操作的时间的指示和/或GPU 130使用计算着色器138何时完成帧渲染或绘制墨水的时间的指示。
在308处,方法300可以可选地包括:基于指定时间来设置周期监测的围栏。例如,定时功能154可以基于指定时间来设置周期监测的围栏。定时功能154可以设置周期监测的栅栏针对每个帧何时唤醒墨水功能150的时间。
在310处,方法300可以包括:在显示帧之前的指定时间,获得经更新的数字墨水输入。例如,墨水功能150可以在显示帧之前的指定时间,从输入缓冲器156获得经更新的数字墨水输入。获得的数字墨水输入可以包括在指定时间对数字笔120的位置的任何更新。例如,经更新的数字墨水输入可以包括针对对应帧在V-SYNC之后的输入。因而,获得的数字墨水输入可以包括先前V-SYNC之后的附加位置(例如,点172以及沿着线段170的其他点)。在一些实现方式中,获得的数字墨水输入可以包括在当前V-SYNC之后但在扫描操作到达输入位置之前输入的附加位置。
在312处,方法300可以包括:在显示包括数字墨水的帧的至少一部分之前,基于经更新的数字墨水输入经由GPU的优先级队列在渲染的帧上绘制经更新的数字墨水。例如,墨水功能150可以基于经更新的数字墨水输入经由GPU 130的优先级队列137在渲染的帧上绘制经更新的数字墨水(例如,线段170)。可以在GPU 130将包括经更新的数字墨水的帧的至少一部分(例如,包括线段170的帧的一部分)扫描到显示器112之前,执行绘制。例如,计算着色器138可以在GPU开始在V-SYNC处扫描出帧之后但在GPU 130到达末端点104之前,在图像缓冲器134中渲染的图像上绘制线段170。因而,当GPU130到达末端点104时,GPU 130可以开始扫描出线段106,就好像它已经在V-SYNC之前被渲染一样。
在314处,动作312可以包括:调度被配置为基于数字墨水输入而在渲染的帧上绘制数字墨水的计算着色器。例如,墨水功能150可以调度计算着色器138(例如,通过向优先级队列137发送命令),以基于经更新的数字墨水输入在渲染的帧上绘制数字墨水。下文关于图8和图9对使用计算着色器138绘制数字墨水的更多细节和示例进行讨论。
在316处,方法300可以可选地包括:确定渲染管线在V-SYNC之前没有完成帧,该帧包括基于在先前V-SYNC处可用的输入的数字墨水。例如,GPU 130可以指示渲染管线136在即将到来的V-SYNC之前将不完成帧。GPU 130可以替代地再次显示先前帧。因而,可能无法渲染先前帧和先前V-SYNC之间的数字墨水输入,从而导致在末端点104之前产生间隙。
在318处,方法300可以包括:调度计算着色器以绘制在先前V-SYNC处可用的数字墨水102。例如,墨水功能150可以经由优先级队列137调度计算着色器138以绘制在先前V-SYNC处可用的数字墨水102。墨水功能150可以响应于渲染管线136在V-SYNC之前将不完成帧的指示,而经由优先级队列137来调度计算着色器138。因而,计算着色器138可以绘制先前可用的数字墨水102和在V-SYNC之后获得的经更新的数字墨水(例如,线段170)两者。使用计算着色器138绘制两个数字墨水的集合可以产生连续数字墨水线。
现在参考图5,示例时序图400图示了根据常规技术的使用GPU130渲染帧并且显示数字墨水,其中由于相对较长的排队和处理时间,可能出现呈现数字墨水的延迟。显示器112可以具有周期性的V-SYNC 402(包括402-a,402-b等),其可以对应于显示器112的刷新率。例如,刷新率可以是30Hz至90Hz,这导致每11毫秒至33毫秒的V-SYNC 402。计算机设备110还可以从数字笔120接收输入更新404(例如,经更新的位置信息)。输入更新404可以比V-SYNC402更频繁。例如,输入更新404可以以240Hz的速率发生。
为了在显示器112上绘制数字墨水102,CPU 114可以获取输入更新404,并且执行命令操作410以指令GPU 130将数字墨水渲染为图形帧的一部分。例如,在V-SYNC 402-a,CPU 114可以获得墨水更新直至输入更新404-a。命令操作410可以包括:生成命令,并且将命令发送到图形队列135以由渲染管线136执行。命令可以包括用于渲染数字墨水的命令以及用于渲染显示图像的命令(例如,基于应用160和合成器144)。
渲染管线136可以执行渲染操作420以将数字墨水与图形帧一起渲染。渲染操作420可以是计算密集操作。完成渲染操作420的时间可以取决于所产生的渲染图像的质量。例如,渲染时间可以基于诸如分辨率和颜色数目以及各种视觉效果(例如,阴影或颗粒)的质量之类的因素。可以基于硬件能力来调整图像的质量,使得GPU 130通常能够以刷新率渲染新帧。
GPU 130和显示器112还可以执行显示操作430,其中GPU 130将渲染图像扫描到显示器112。例如,GPU 130可以在V-SYNC 402开始逐线更新显示器112的像素。显示操作430可以在帧的大部分上延伸。例如,基于V-SYNC 402-a的输入的帧A可以在V-SYNC 402-b开始扫描,并且可能直至V-SYNC 402-c才完成。因而,帧的一部分(例如,底部部分)可能直至帧中的稍后面才会被扫描。输入更新404-a和V-SYNC 402-b之间的时间450可以表示所绘制的数字墨水与笔尖122的位置之间的平均间隙(例如,针对显示器112中间的像素)。通常,当墨水更新的时间固定时,首先扫描的帧的部分的时间450会比最后扫描的帧的部分的时间更短。段106的长度可以与时间450成比例。
在后续帧中,可以在输入更新404-b处获得数字墨水输入。基于输入更新404-a的数字墨水可以被认为是现有数字墨水。渲染操作420-b可以包括:渲染现有数字墨水(A)和新数字墨水(B)两者作为下一帧的一部分。同样,显示操作430可以包括:扫描包括现有数字墨水(A)和新数字墨水(B)的渲染的图像。
现在参考图6,根据本公开,时序图500图示了使用GPU 130渲染帧并且显示数字墨水的另一示例,其中可以通过使用优先级队列137和计算着色器138绘制数字墨水更新来减少呈现数字墨水的延迟。V-SYNC 402和输入更新404的速率可以与图5中的速率相同。如图5所示,输入更新404-a可以由CPU 114在V-SYNC402-a获得,CPU 114可以执行命令操作410,而渲染管线136可以执行渲染操作420。
附加地,为了减少延迟,CPU 114可以在输入更新404-c处获得墨水输入,并且执行命令操作410-c以生成用于计算着色器138绘制数字墨水的命令。计算着色器138可以绘制在输入更新404-a和输入更新404-c之间变得可用的附加数字墨水(C)。例如,在绘制操作540-a中,计算着色器138可以调整由渲染操作420-a产生的渲染的帧的像素。因而,在V-SYNC 402-b,图像缓冲器134可以包括基于输入的数字墨水,直至输入更新404-c。GPU 130和显示器112可以执行显示操作430-a以显示包括数字墨水直至C(也就是说,A+C)的图像。如图6所示,最后输入更新404-c和V-SYNC 402-b之间的时间550显著短于图5的时间450(为了便于比较而添加到图6中)。因而,与图5的现有技术过程相比较,可以减少段106的长度,例如,墨水的末端和笔尖之间的间隙。
在从V-SYNC 402-b开始的后续帧中,CPU 114可以基于输入更新404-b来获得墨水输入。因而,CPU 114可以执行命令操作410-a以渲染数字墨水A+C+B。在输入更新404-d处,CPU 114可以获取新数字墨水输入,并且执行命令操作410-d以使用优先级队列137和计算着色器138来绘制数字墨水。计算着色器138可以执行绘制操作540-b以绘制数字墨水D。因而,显示操作430-b可以包括数字墨水A+C+B+D。
在第三帧中,可以在输入更新404-e处获得附加数字墨水输入。由于输入更新404-e在V-SYNC 402-c之前可用,所以数字墨水可以被排队以便经由渲染管线136进行渲染。然而,渲染管线可能启动得较晚或花费较长的时间才能完成,例如,由于较高优先级过程中断了渲染。渲染管线136可以生成指示渲染操作420-c不会由V-SYNC 402-d完成的信号。传统上,GPU 130将显示先前渲染的帧。在这种情况下,先前渲染的帧不会包括来自404-d或404-e的墨水更新。因而,响应于渲染过程不会在V-SYNC 402-d之前完成渲染操作420-c的信号,优先级队列137和/或计算着色器138可以用于基于输入更新404-d和404-e来绘制经更新的数字墨水。因而,显示操作430-c可以显示所有可用的数字墨水。
现在参考图7,时序图600图示了使用GPU 130的优先级队列137和/或计算着色器138渲染和显示数字墨水的另一示例,其中可以基于用于扫描数字墨水的预测时间来获得呈现数字墨水的延迟的进一步减少。V-SYNC 402和输入更新404的速率可以与图5的速率相同。
代替在V-SYNC 402之前的固定时间获得经更新的墨水输入,CPU 114(例如,通过执行预测器152)可以确定用于获得经更新的墨水输入的时间。例如,CPU 114可以基于输入更新404-a来确定任何附加墨水输入很可能位于显示器112的底部并且不需要被扫描,直到时间602。CPU 114还可以确定用于执行绘制任何新墨水的绘制操作540的安全裕度604。然后,CPU 114可以在安全裕度604之前获得输入更新404。在该示例中,输入更新可以是输入更新404-g。在实现方式中,如果数字墨水的预测部分直到帧的末端附近才被扫描,则可以在V-SYNC(例如,V-SYNC 402-b)之后获得经更新的数字墨水,其中GPU 130开始将图像扫描到显示器112。因而,与依据图7技术的更早的全帧相比,在输入更新404-g处获得的数字墨水(其根据图5将直到V-SYNC 402-d之后才会被渲染)可以被更多地扫描和绘制。因此,时间650可以少于图5中的时间450(为便于比较而添加到图7)和/或图5中的时间550(为了便于比较添加到图7)。附加地,应当注意,时间450,550和650表示平均场景(例如,数字墨水在中间附近)。通过预测数字墨水的显示时间,可以根据图7所示的技术改善最差情况场景,使得来自数字笔120的输入与绘制数字墨水之间的延迟始终很低(例如,小于一帧)。
现在参考图8,图示了使用计算着色器138绘制的数字墨水的示例。数字墨水可以绘制为线段。可以绘制从由第一输入更新的位置(例如,V-SYNC处可用的末端点104)指示的第一像素702到由第二输入更新的位置(例如,点172)指示的第二像素704的线段。作为参考,线段706被图示为像素702和704之间的直线路径。应当理解,因为线段706不是由像素组成,所以实际上没有在显示器112上绘制线段706。相反,针对沿着线段706的长轴的每个像素,可以通过着色一个像素来绘制数字墨水。在该示例中,线段706的长轴可以是垂直的(y轴)。包括末端点在内,线段706沿着长轴具有9个像素的长度。因而,计算着色器138可以被编程为调度9个线程,每个线程对应于沿着长轴的像素。然后,每个线程可以确定沿着短轴(x轴)的哪个像素要着色。例如,计算着色器138可以基于线段的中点来选择像素。计算着色器138可以调整渲染图像中的像素(例如,将颜色设置为墨水颜色)。
现在参考图9,示例方法800允许计算着色器138在显示器112上绘制数字墨水。例如,方法800可以被用于如同由数字笔120绘制的那样显示数字墨水102,使得末端点104保持靠近笔尖122。
在802处,方法800可以包括:确定数字墨水的在先前帧和数字墨水输入之间的一部分的线段。例如,墨水功能150可以确定数字墨水的在先前帧和数字墨水输入之间的一部分的线段。墨水功能150可以确定线段的在先前帧中渲染的数字墨水的最后位置(例如,先前V-SYNC 402处的最后输入更新404的位置)处的第一像素702。墨水功能150可以确定线段的在最新输入更新404的位置处的第二像素704。
在804处,方法800可以包括:确定沿着线段的长轴的多个像素。例如,墨水功能150可以确定沿着线段的长轴的多个像素。墨水功能150可以确定末端点的x和y坐标中的每个x和y坐标的差,以确定沿着每个轴的长度。墨水功能150可以选择较长的长度作为长轴。
在806处,方法800可以包括:基于像素的数目来调度多个计算着色器线程,以确定沿着线段的短轴的像素以沿着长轴针对每个像素进行绘制。例如,墨水功能150可以基于像素的数目来调度多个计算着色器线程,以确定沿着线段的短轴的像素以沿着长轴针对每个像素进行绘制。每个线程可以对应于沿着垂直轴的行或沿着水平轴的列。墨水功能150可以使用调度命令来调度计算着色器线程以使计算着色器138执行。在808处,动作806可以包括:调度多个计算着色器线程,以确定线段的宽度。例如,计算着色器138可以执行计算着色器线程,以确定沿着短轴要进行着色的多个像素。在810处,动作806可以包括:调度多个计算着色器线程,以调整与所绘制像素相邻的像素的着色。例如,计算着色器138可以执行计算着色器线程以对线段706部分通过的像素进行着色(例如,较浅的阴影)。
现在参考图10,图示了使用计算着色器138绘制的数字墨水的另一示例。数字转换器108可以检测显示器112的一部分中的数字墨水输入902。数字墨水输入902可以解释为线段集合916。例如,CPU 114和/或墨水功能150可以根据数字墨水输入902生成贝塞尔曲线。然后,贝塞尔曲线可以被展平到线段集合916中。为了简单起见,省略了先前渲染的数字墨水。可以基于数字墨水输入的最大值和最小值来确定边界框904。如下文所进一步详细描述的,边界框904可以用于减少GPU 130和计算着色器138上的处理负荷。
边界框904可以被分割成块集合906。每个块906可以包括多个像素。例如,块906可以是8×8像素块。如果边界框904不能均匀地划分为块,则可以在边界框的外部填充部分块以生成完整块。
计算着色器138可以使用两个遍次(pass)来绘制数字墨水902。在第一遍次中,计算着色器138可以针对每个线段916确定每个块906是否与数字墨水输入902的线段相交。块906的位掩码可以指示哪些输入线段916与块906相交。计算着色器138可以产生针对每个块906的线程组。每个线程组可以包括针对每个线段916的线程。例如,线程可以执行测试以确定相应线段916是否与相应块906的输出区域相交。如果线段916与块906相交,则线段916可以被添加到针对块906的位掩码中。可以从第二遍次中剔除未与数字墨水输入902的至少一个线段916相交的块(例如,位掩码等于0)。第一遍次可以用多个相交块910填充输出缓冲器908,并且每个相交块的条目912包括相交块的标识符(或线程组标识符)和相交块的位掩码。
计算着色器138可以在第二遍次期间对像素上色。可以使用调度间接命令来调度计算着色器138,该调度间接命令允许输出缓冲器908提供输入以确定线程组的数目。例如,在第二遍次中,计算着色器138可以基于相交块910的数目来产生针对被包括在条目912中的每个相交块的线程组。使用调度间接命令可以避免从GPU 130向CPU 114传送信息(例如,块的数目)以调度计算着色器138时的延迟。在第二遍次中,组中的每个线程可以与像素相对应。针对由位掩码标识的每个线段916,线程可以确定是否对像素上色。例如,当像素与任何线段916之间的距离小于半径914时,线程可以确定对像素上色。
现在参考图11,示例方法1000允许计算着色器138在显示器112上绘制数字墨水。例如,方法1000可以用于以被用于如同由数字笔120绘制的那样显示数字墨水102,使得末端点104保持靠近笔尖122。
在1002处,方法1000可以包括:确定数字墨水的在先前帧和数字墨水输入之间的一部分的线段集合。例如,墨水功能150可以确定数字墨水的在先前帧和数字墨水输入之间的一部分的线段集合916。墨水功能150可以基于墨水输入的点来生成贝塞尔曲线。然后,墨水功能150可以将贝塞尔曲线展平为线段集合916。
在1004处,方法1000可以包括:使用针对每个输入线段的第一计算着色器线程,确定相应输入线段是否与包括数字墨水的帧的所述部分内的块相交。例如,计算着色器138可以产生针对每个块906的线程组。线程组中的每个线程可以与线段916相对应。每个线程可以确定线段是否与相应块906相交。在1006处,动作1004可以可选地包括:生成包括相交块集合以及针对每个相交块的位掩码的输出缓冲器,该位掩码指示哪些输入线段916与相交块相交。例如,计算着色器138可以生成输出缓冲器908,该输出缓冲器908包括针对相交块集合中的每个块的条目912。在1008处,动作1004可以可选地包括:剔除未与至少一个线段916相交的块。例如,计算着色器138可以从输出缓冲器908中剔除未与至少一个线段相交的块。剔除块可以减少计算着色器在第二遍次中的工作。
在1010处,方法1000可以包括:使用针对与至少一个线段916相交的每个块的第二计算着色器线程组,基于像素相对于与相应块相交的输入线段中的每个输入线段的位置来确定相应像素的颜色,该线程组包括针对块内的每个像素的线程。例如,计算着色器138可以产生针对被包括在输出缓冲器908中的每个块906的线程组。每个线程组可以包括针对该块内的每个像素的线程(例如,针对块906的64个线程)。每个线程可以循环遍历与框906相交的线段,以确定是否对相应像素上色。例如,动作1010可以可选地包括,在1012处,确定相应像素是否在线段中的一个线段上的点的半径之内。计算着色器线程可以将从像素到线段的距离与阈值进行比较。在实现方式中,可以基于距离来选择不同的颜色阴影以使线平滑。计算着色器线程还可以检查相应像素是否在边界框904之内,以避免当块906延伸超过边界框904时,对附加像素进行着色。
现在参考图12,图示了根据实现方式的示例计算机设备110,该示例计算机设备110与图2相比,包括附加部件细节。在一个示例中,计算机设备110可以包括用于执行与本文中所描述的部件和功能中的一个或多个部件和功能相关联的处理功能的处理器48。处理器48可以包括处理器或多核处理器的单个或多个集合。而且,处理器48可以被实现为集成处理***和/或分布式处理***。在实现方式中,例如,处理器48可以包括CPU 114和/或GPU130。在示例中,计算机设备110可以包括存储器50,该存储器50用于存储可由处理器48执行以执行本文中所描述的功能的指令。在实现方式中,例如,存储器50可以包括存储器116和/或存储器132。
进一步地,计算机设备110可以包括通信部件52,该通信部件52利用本文中所描述的硬件、软件和服务来提供建立和维护与一方或多方的通信。通信部件52可以执行在计算机设备110上的部件之间以及计算机设备110与外部设备(诸如跨通信网络定位的设备和/或串行或本地连接到计算机设备110的设备)之间的通信。例如,通信部件52可以包括一个或多个总线,并且可以进一步包括分别与发射机和接收机相关联的传输链部件和接收链部件,其可操作用于与外部设备接口连接。在实现方式中,例如,通信部件52可以包括用于将数字笔120通信地连接到CPU 114和存储器116的连接124。
附加地,计算机设备110可以包括数据存储54,其可以是硬件和/或软件的任何适当的组合,其提供了对结合本文中所描述的实现方式所采用的信息、数据库和程序的大量存储。例如,数据存储54可以是用于操作***140(图2)和/或应用160(图2)的数据存储库。
计算机设备110还可以包括用户接口部件56,该用户接口部件56可操作以从计算机设备110的用户接收输入,并且还可操作以生成用于呈现给用户的输出。用户接口部件56可以包括一个或多个输入设备,其包括但不限于键盘、数字键盘、鼠标、触敏显示器、数字转换器、导航键、功能键、麦克风、语音识别部件、能够接收来自用户的输入的任何其他机构、或其任意组合。进一步地,用户接口部件56可以包括一个或多个输出设备,其包括但不限于显示器(例如,显示器112)、扬声器、触觉反馈机构、打印机、能够向用户呈现输出的任何其他机构、或其任何组合。
在实现方式中,用户接口部件56可以传送和/或接收与操作***140和/或应用160的操作相对应的消息。另外,处理器48执行操作***140和/或应用160,并且存储器50或者数据存储54可以存储它们。
如在本申请中使用的,术语“部件”、“***”等旨在包括计算机有关的实体,诸如但不限于硬件、固件、硬件和软件的组合、软件、或执行中的软件。例如,部件可以是但不限于在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。作为说明,在计算机设备上运行的应用和计算机设备都可以是部件。一个或多个部件可以驻留在进程和/或执行线程中,并且部件可以位于一个计算机上和/或分布在两个或更多个计算机之间。另外,这些部件可以从其上存储有各种数据结构的各种计算机可读介质执行。这些部件可以通过本地和/或远程进程,诸如根据具有一个或多个数据分组的信号进行通信,该一个或多个数据分组诸如为通过该信号从一个部件与本地***、分布式***中的另一部件交互的,和/或跨诸如因特网的网络与其他***进行交互的数据。
而且,术语“或”旨在表示包括性的“或”而非排他性的“或”。也就是说,除非另有说明或者从上下文中清楚得知,否则短语“X采用A或B”旨在意指自然包括性排列中的任一自然包括性排列。也就是说,短语“X采用A或B”通过以下实例中的任一实例满足:X采用A;X采用B;X采用A和B两者。另外,除非另有说明或从上下文中清楚得知其涉及单数形式,否则在本申请和所附权利要求书中所使用的冠词“一”和“一个”通常应当解释为意指“一个或多个”。
各种实现方式或特征可能已经在可以包括多个设备、部件、模块等的***方面中有所呈现。应当理解和领会,各种***可以包括附加设备、部件、模块等,和/或可以不包括结合附图所讨论的所有设备、部件、模块等。还可以使用这些途径的组合。
结合本文中所公开的实施例所描述的方法的动作、逻辑块和各种说明性逻辑可以用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑设备、分立门或晶体管逻辑、分立硬件部件或被设计为执行本文中所描述的功能的其任何组合中的特别编程的一项来实现或执行。通用处理器可以是微处理器,但可替代地,处理器可以是任何常规处理器、控制器、微控制器、或状态机。处理器还可以被实现为计算机设备的组合,例如,DSP和微处理器的组合、多个微处理器、与DSP核结合的一个或多个微处理器、或任何其他这样的配置。附加地,至少一个处理器可以包括一个或多个部件,该一个或多个部件可操作以执行上文所描述的步骤和/或动作中的一个或多个步骤和/或动作。
进一步地,结合本文中所公开的实现方式所描述的方法或过程的步骤和/或动作可以直接体现在硬件中,在由处理器执行的软件模块中,或在两者的组合中。软件模块可以驻留在RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM、或本领域已知的任何其他形式的存储介质中。示例性存储介质可以耦合到处理器,使得处理器可以从该存储介质中读取信息,以及可以向该存储介质写入信息。可替代地,存储介质可以与处理器集成在一起。进一步地,在一些实现方式中,处理器和存储介质可以驻留在ASIC中。附加地,ASIC可以驻留在用户终端中。可替代地,处理器和存储介质可以作为分立部件驻留在用户终端中。附加地,在一些实现方式中,方法或过程的步骤和/或动作可以作为代码和/或指令的一个或任意个的组合或集合驻留在机器可读介质和/或计算机可读介质上,该机器可读介质和/或计算机可读介质可以并入计算机程序产品中。
在一个或多个实现方式中,所描述的功能可以以硬件、软件、固件或其任何组合来实现。如果以软件实现,则功能可以作为一个或多个指令或代码进行传输或存储在计算机可读介质上。计算机可读介质包括计算机存储介质和通信介质,其包括有助于将计算机程序从一个地方转移到另一地方的任何介质。存储介质可以是计算机可以访问的任何可用介质。通过示例而非限制,这种计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM、或其他光盘存储装置、磁盘存储装置、或其他磁性存储设备、或可以用于承载或存储形式为指令或数据结构的所需程序代码并且可以由计算机访问的任何其他介质。如本文中所使用的磁盘和光盘包括:光盘(CD)、激光光盘、光学盘、数字多功能光盘(DVD)、软盘、以及蓝光光盘,其中磁盘通常以磁性方式复制数据,而光盘通常通过激光器以光学方式复制数据。上述的组合还应当包括在计算机可读介质的范围之内。
虽然已经结合本公开的示例对其实现方式进行了描述,但是本领域技术人员将理解,可以在不脱离其范围的情况下做出上文所描述的实现方式的变化和修改。通过考虑说明书或根据本文中所公开的示例的实践,其他实现方式对于本领域技术人员而言将是显而易见的。

Claims (15)

1.一种在显示器上绘制数字墨水的方法,包括:
经由图形处理单元(GPU)的图形队列渲染帧;
在将所述帧的包括所述数字墨水的一部分扫描到所述显示器之前的指定时间,从输入缓冲器获取经更新的数字墨水输入;以及
在扫描所述帧的包括所述数字墨水的至少所述一部分之前,基于所述经更新的数字墨水输入,经由所述GPU的优先级队列在所述渲染的帧上绘制所述数字墨水。
2.根据权利要求1所述的方法,其中在所述渲染的帧上绘制所述数字墨水包括:调度被配置为基于所述经更新的数字墨水输入而在渲染的所述帧上绘制所述数字墨水的计算着色器。
3.根据权利要求1所述的方法,其中渲染所述帧包括:
经由所述GPU的渲染管线在所述帧内渲染数字墨水,其中所述数字墨水在所述帧之前的视频同步(V-SYNC)处可用,并且其中所述经更新的数字墨水输入在所述V-SYNC之后获取。
4.根据权利要求1所述的方法,还包括:至少基于先前输入位置来确定针对所述帧的所述指定时间。
5.根据权利要求4所述的方法,其中确定所述指定时间基于所述先前输入位置、输入速度、以及预测的绘制时间。
6.根据权利要求4所述的方法,还包括:基于所述指定时间来设置周期监测的围栏。
7.根据权利要求2所述的方法,还包括:
确定与所述图形队列相关联的渲染管线将不会在即将到来的V-SYNC之前完成所述帧,所述帧包括在先前V-SYNC处可用的数字墨水;以及
其中绘制所述数字墨水包括:调度所述计算着色器以绘制在所述先前V-SYNC处可用的所述数字墨水。
8.根据权利要求2所述的方法,其中调度所述计算着色器包括:
基于所述经更新的数字墨水输入来确定输入线段的集合;
使用针对每个输入线段的第一计算着色器线程,确定相应的所述输入线段是否与所述帧的包括所述数字墨水的所述一部分内的块相交;以及
使用针对被至少一个线段相交的每个块的第二计算着色器线程组,基于所述像素相对于与相应块相交的所述输入线段中的每个线段的位置来确定相应像素的颜色,所述线程组包括针对所述块内的每个像素的线程。
9.根据权利要求8所述的方法,其中确定所述相应像素的所述颜色包括:确定所述相应像素是否在所述输入线段中的一个输入线段上的点的半径之内。
10.根据权利要求8所述的方法,其中确定相应的输入线段是否与块相交包括:生成输出缓冲器,所述输出缓冲器包括相交块列表以及针对每个相交块的位掩码,所述位掩码指示所述输入线段中的哪些输入线段与所述相交块相交,其中所述输出缓冲器用作所述第二计算着色器线程组的输入。
11.一种用于绘制数字墨水的计算机设备,包括:
存储器,其存储用于执行操作***以及一个或多个应用的一个或多个参数或指令;
图形处理单元(GPU),其用于渲染所述一个或多个应用的帧以用于在耦合到所述计算机设备的显示设备上的显示,所述GPU包括图形队列和优先级队列;以及
至少一个处理器,其耦合到所述存储器、以及所述GPU,其中所述至少一个处理器被配置为:
经由所述GPU的所述图形队列渲染帧;
在至少将所述帧的包括所述数字墨水的一部分扫描到所述显示设备之前的指定时间,从输入缓冲器获取经更新的数字墨水输入;以及
在扫描所述帧的包括所述数字墨水的至少所述一部分之前,基于所述经更新的数字墨水输入,经由所述GPU的所述优先级队列在所述渲染的帧上绘制所述数字墨水。
12.根据权利要求11所述的计算机设备,其中所述至少一个处理器被配置为通过调度计算着色器来在所述渲染的帧上绘制所述数字墨水,所述计算着色器被配置为基于所述经更新的数字墨水输入来在所述渲染的帧上绘制所述数字墨水。
13.根据权利要求12所述的计算机设备,其中所述至少一个处理器被配置为确定与所述图形队列相关联的渲染管线将不会在即将到来的V-SYNC之前完成所述帧,所述帧包括在先前V-SYNC处可用的数字墨水;以及
调度所述计算着色器以绘制在所述先前V-SYNC处可用的所述数字墨水。
14.根据权利要求12所述的计算机设备,其中所述至少一个处理器被配置为调度所述计算着色器以:
基于所述经更新的数字墨水输入来确定输入线段的集合;
使用针对每个输入线段的第一计算着色器线程,确定所述相应输入线段是否与所述帧的包括所述数字墨水的所述一部分内的块相交;以及
使用针对被至少一个线段相交的每个块的第二计算着色器线程组,基于所述像素相对于与相应块相交的所述输入线段中的每个输入线段的位置来确定相应像素的颜色,所述线程组包括所述块内的每个像素的线程。
15.一种计算机可读介质,包括能够由一个或多个处理器执行以使用计算机设备中的图形处理单元(GPU)在显示器上绘制数字墨水的代码,所述代码包括用于执行根据权利要求1至10中任一项所述的方法的代码。
CN201880023149.8A 2017-04-07 2018-03-29 使用高优先级队列进行墨水渲染 Active CN110494837B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/482,373 2017-04-07
US15/482,373 US10147159B2 (en) 2017-04-07 2017-04-07 Ink render using high priority queues
PCT/US2018/024986 WO2018187130A1 (en) 2017-04-07 2018-03-29 Ink render using high priority queues

Publications (2)

Publication Number Publication Date
CN110494837A true CN110494837A (zh) 2019-11-22
CN110494837B CN110494837B (zh) 2023-05-02

Family

ID=62002449

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880023149.8A Active CN110494837B (zh) 2017-04-07 2018-03-29 使用高优先级队列进行墨水渲染

Country Status (4)

Country Link
US (1) US10147159B2 (zh)
EP (1) EP3607422A1 (zh)
CN (1) CN110494837B (zh)
WO (1) WO2018187130A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10388055B2 (en) * 2017-06-02 2019-08-20 Apple Inc. Rendering animated user input strokes
US10679316B2 (en) * 2018-06-13 2020-06-09 Advanced Micro Devices, Inc. Single pass prefix sum in a vertex shader
CN111489411B (zh) * 2019-01-29 2023-06-20 北京百度网讯科技有限公司 线条绘制方法、装置、图像处理器、显卡及车辆
KR102657681B1 (ko) * 2020-08-04 2024-04-16 삼성전자 주식회사 화면의 부분 영역을 빠르게 업데이트하는 전자 장치 및 방법
CN114327103B (zh) * 2020-09-25 2023-04-28 福建天泉教育科技有限公司 一种触屏延时优化方法及终端

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101425175A (zh) * 2007-12-06 2009-05-06 威盛电子股份有限公司 着色器处理***与方法
CN102870106A (zh) * 2010-04-30 2013-01-09 微软公司 所选择的数据的临时格式化和绘制
US20130076424A1 (en) * 2011-09-23 2013-03-28 Qualcomm Incorporated System and method for reducing cross coupling effects
CN104111793A (zh) * 2013-04-22 2014-10-22 三星显示有限公司 利用图像覆盖来减小显示滞后的***、方法和装置
CN105683994A (zh) * 2013-10-28 2016-06-15 微软技术许可有限责任公司 针对降低延迟的数字着墨的湿墨纹理引擎
CN107680153A (zh) * 2017-09-14 2018-02-09 深圳市彬讯科技有限公司 一种基于三维模型替换指定部位材质的渲染出图方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5252951A (en) * 1989-04-28 1993-10-12 International Business Machines Corporation Graphical user interface with gesture recognition in a multiapplication environment
US6396481B1 (en) * 1999-04-19 2002-05-28 Ecrio Inc. Apparatus and method for portable handwriting capture
US6707473B2 (en) 2001-08-01 2004-03-16 Microsoft Corporation Dynamic rendering of ink strokes with transparency
US7075541B2 (en) * 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
US7548892B2 (en) 2004-04-30 2009-06-16 Microsoft Corporation Processing machine learning techniques using a graphics processing unit
US7852341B1 (en) 2004-10-05 2010-12-14 Nvidia Corporation Method and system for patching instructions in a shader for a 3-D graphics pipeline
US8847961B2 (en) 2010-06-14 2014-09-30 Microsoft Corporation Geometry, speed, pressure, and anti-aliasing for ink rendering
US20130074088A1 (en) 2011-09-19 2013-03-21 Timothy John Purcell Scheduling and management of compute tasks with different execution priority levels
US20130155077A1 (en) 2011-12-14 2013-06-20 Advanced Micro Devices, Inc. Policies for Shader Resource Allocation in a Shader Core
US9508166B2 (en) 2014-09-15 2016-11-29 Microsoft Technology Licensing, Llc Smoothing and GPU-enabled rendering of digital ink
US9529463B1 (en) 2014-09-24 2016-12-27 Amazon Technologies, Inc. Method and device for reducing latency for rendering and displaying stylus strokes
US9633466B2 (en) 2014-09-29 2017-04-25 Microsoft Technology Licensing, Llc Low latency ink rendering pipeline
US9721365B2 (en) 2014-12-09 2017-08-01 Synaptics Incorporated Low latency modification of display frames
US9950542B2 (en) 2015-03-12 2018-04-24 Microsoft Technology Licensing, Llc Processing digital ink input subject to monitoring and intervention by an application program
US9842416B2 (en) * 2015-05-05 2017-12-12 Google Llc Animated painterly picture generation

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101425175A (zh) * 2007-12-06 2009-05-06 威盛电子股份有限公司 着色器处理***与方法
CN102870106A (zh) * 2010-04-30 2013-01-09 微软公司 所选择的数据的临时格式化和绘制
US20130076424A1 (en) * 2011-09-23 2013-03-28 Qualcomm Incorporated System and method for reducing cross coupling effects
CN104111793A (zh) * 2013-04-22 2014-10-22 三星显示有限公司 利用图像覆盖来减小显示滞后的***、方法和装置
CN105683994A (zh) * 2013-10-28 2016-06-15 微软技术许可有限责任公司 针对降低延迟的数字着墨的湿墨纹理引擎
CN107680153A (zh) * 2017-09-14 2018-02-09 深圳市彬讯科技有限公司 一种基于三维模型替换指定部位材质的渲染出图方法

Also Published As

Publication number Publication date
US20180293689A1 (en) 2018-10-11
US10147159B2 (en) 2018-12-04
EP3607422A1 (en) 2020-02-12
CN110494837B (zh) 2023-05-02
WO2018187130A1 (en) 2018-10-11

Similar Documents

Publication Publication Date Title
CN110494837A (zh) 使用高优先级队列进行墨水渲染
US10115230B2 (en) Run-time optimized shader programs
US9443332B2 (en) Redrawing recent curve sections for real-time smoothing
US20200090022A1 (en) Efficient transferring of human experiences to robots and other autonomous machines
US8624899B2 (en) Arc spline GPU rasterization for cubic Bezier drawing
CN103810742B (zh) 图像渲染方法和***
US20200175396A1 (en) Deterministic neural networking interoperability
US20190066257A1 (en) Efficient memory layout for enabling smart data compression in machine learning environments
TWI393067B (zh) 具有電源閘控功能之繪圖處理系統及電源閘控方法,及其電腦程式產品
US20090322760A1 (en) Dynamic animation scheduling
JP2007264989A (ja) 図形描画装置、図形描画方法、およびプログラム
KR20140109431A (ko) 커맨드 프로세서를 갖는 그래픽 프로세싱 유닛
JP2008176788A (ja) 3次元グラフィック加速器及びそのピクセル分配方法
US11640537B2 (en) Mechanism to perform non-linear functions in a machine learning accelerator
US20140015826A1 (en) Method and apparatus for synchronizing an image with a rendered overlay
CN109213607B (zh) 一种多线程渲染的方法和装置
CN106605211A (zh) 着色器的渲染时间链接
US20240053985A1 (en) Sharing register file usage between fused processing resources
CN109978749A (zh) 图形处理器、渲染***及操作图形处理器的方法
CN107615229B (zh) 用户界面装置和用户界面装置的画面显示方法
US10546399B2 (en) Pencil ink render using high priority queues
CN110047030A (zh) 周期性特效生成方法及装置、电子设备、存储介质
US20190108037A1 (en) Pro-Active GPU Hardware Bootup
JPH0528276A (ja) マルチプロセツサシステムにおける図形描画方式
CN115588076A (zh) 一种解决三维人体模型与衣服模型穿模的方法及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant