CN103294473B - 用于虚拟表面压实的计算机实现的方法和设备 - Google Patents

用于虚拟表面压实的计算机实现的方法和设备 Download PDF

Info

Publication number
CN103294473B
CN103294473B CN201310211997.0A CN201310211997A CN103294473B CN 103294473 B CN103294473 B CN 103294473B CN 201310211997 A CN201310211997 A CN 201310211997A CN 103294473 B CN103294473 B CN 103294473B
Authority
CN
China
Prior art keywords
synthesis
equipment
dummy
effective coverage
calculating
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.)
Active
Application number
CN201310211997.0A
Other languages
English (en)
Other versions
CN103294473A (zh
Inventor
R.芬克
L.E.布兰科
C.伊尔根
J.W.普里斯特利
S.P.蒙卡约
B.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 CN103294473A publication Critical patent/CN103294473A/zh
Application granted granted Critical
Publication of CN103294473B publication Critical patent/CN103294473B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • 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/393Arrangements for updating the contents of the bit-mapped memory
    • 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/0407Resolution change, inclusive of the use of different resolutions for different screen areas
    • 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/045Zooming at least part of an image, i.e. enlarging it or shrinking it
    • 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
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/121Frame memory handling using a cache memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/122Tiling
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/127Updating a frame memory using a transfer of data from a source area to a destination area
    • 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/34Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators for rolling or scrolling
    • G09G5/346Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators for rolling or scrolling for systems having a bit-mapped display memory
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Processing Or Creating Images (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Generation (AREA)

Abstract

所描述的是虚拟表面更新和合成技术。这些技术包括支持更新的初始化和批处理,更新和后备列表的使用,沟槽的使用,混合和BLT操作,诸如下推和枚举、聚丛之类的表面优化技术,网孔使用以及遮挡管理技术。

Description

用于虚拟表面压实的计算机实现的方法和设备
背景技术
本公开涉及计算技术领域,尤其涉及虚拟表面技术。
计算设备配置的种类正在持续增加。从传统的台式个人计算机到移动电话、游戏控制台、机顶盒、平板计算机等等,能从这些配置中的每一种配置得到的功能有可能会有很大的变化。
因此,为一种配置研发的传统显示技术未必也会很适合另一种配置。例如,先前用于具有大量存储器资源的设备的显示技术有可能不适合资源较少的设备。
发明内容
在这里描述了虚拟表面技术。这些技术包括支持如下各项的初始化和批处理:更新,使用更新和后备列表(lookaside list),使用沟槽(gutter),混合和BLT操作,诸如下推(push down)和枚举(enumeration)、聚丛(clumping)之类的表面优化技术,使用网孔以及遮挡(occlusion)管理技术。
本发明内容部分是为了以简化形式引入精选概念而被提供的,并且在以下的具体实施方式部分中将会进一步描述这些概念。本发明内容部分的目的既不是确定请求保护的主题的关键特征或必要特征,也不是要用来帮助确定请求保护的主题的范围。
附图说明
具体实施方式部分是参考附图描述的。在附图中,处于参考数字最左侧的一个或多个数字标识该参考数字首次出现时所在的附图。在说明书和附图的不同实例中使用相同参考数字可以指示相似或相同的项目。
图1是可通过操作来执行这里描述的虚拟表面技术的例示实施方式中的环境的例图。
图2描述了调整虚拟表面大小的例示实施方式。
图3描述了显示应用与虚拟表面的逻辑表面间的交互的例示实施方式。
图4描述了更详细显示图1的合成系统(composition system)的例示实施方式。
图5示出了启动虚拟表面的合成系统操作的例示实施方式。
图6描述了显示合成系统预备表面以用于更新的例示实施方式。
图7描述了使用图6的后备列表的合成系统操作的例示实施方式。
图8描述了显示了使用沟槽的合成系统操作的例示实施方式。
图9描述了显示由合成系统实施的有效区域管理的例示实施方式。
图10描述了显示通过使用下推技术来组合表面的合成系统操作的例示实施方式。
图11描述了显示将有效区域组合成新表面的合成系统操作的例示实施方式。
图12描述了显示使用网孔的合成系统操作的例示实施方式。
图13描述了显示与遮挡有关的合成系统操作的例示实施方式。
图14是描述了为表面分配大小以便在其中再现数据的例示实施方式中的过程的流程图。
图15是描述合成系统追踪有效区域的例示实施方式中的过程的流程图。
图16是描述使用后备列表来管理表面的例示实施方式中的过程的流程图。
图17是描述基于遮挡来调整表面大小的例示实施方式中的过程的流程图。
图18是描述了包括将有效区域从一个表面下推到另一个表面的压实(compaction)技术的例示实施方式中的过程的流程图。
图19是描述了包括将有效区域组合成新的表面的压实技术的例示实施方式中的过程的流程图。
图20是描述了合成系统使用网孔来调用驱动器,从而使用网孔来再现表面的例示实施方式中的过程的流程图。
图21示出了包含例示设备中的不同组件的例示系统,其中该例示设备可以作为参考图1-20描述的任何类型的计算设备来实现,以便实现这里描述的技术的实施例。
具体实施方式
综述
虚拟表面可以被用来分配和管理用于再现视觉资料(visuals)的表面。举例来说,虚拟表面可以用于克服硬件限制,例如管理针对比硬件为视觉资料再现所分配的存储器更大的网页所进行的再现,其示例例如是管理大型网页、沉浸式应用等等。
在这里描述了虚拟表面合成和更新技术。在一个或多个实施方式中,描述了对用于再现的表面进行管理的技术。这其中包括支持如下各项的初始化和批处理的技术:在下文中进一步结合图4和5描述的更新,结合图6和7描述的使用更新和后备列表,结合图8描述的使用沟槽,结合图9描述的混合和BLT操作,例如结合图10描述的下推以及结合图11描述的枚举和聚丛之类的表面优化技术,结合图12描述的网孔使用,以及结合图13描述的遮挡管理技术。
在以下的论述中,首先描述了一个可以通过操作来执行这里描述的虚拟表面技术的例示环境。然后描述了可以在例示环境以及其他环境中工作的例示过程。同样,该例示环境并不仅限于执行这些例示过程。
例示环境
图1在100概括性地示出了根据一个或多个实施例的操作环境。环境100包括具有处理系统104的计算设备102,其中所述处理系统104可以包括一个或多个处理器,被图示成存储器106的计算机可读存储媒体示例,操作系统108以及一个或多个应用110。计算设备102可以作为任何适当的计算设备来实现,例如台式计算机、便携计算机、个人数字助理(PDA)之类的手持计算机、移动电话、平板计算机等等,但其并不局限于此。以下在图21中显示并描述了计算设备102的不同示例。
计算设备102还包括被图示成在处理系统104上运行并且可以保存在存储器106中的操作系统108。该计算设备102还包括被图示成保存在存储器106中并且也可以在处理系统104上运行的应用110。操作系统108代表可以抽象化(abstract)供应用110使用的底层硬件和软件资源的计算设备102的功能。例如,操作系统108可以抽象化如何在显示设备112上显示数据的功能,而应用110则不必“知道”如何实现这种显示。多种其他示例同样是可以设想的,例如抽象化计算设备102的处理系统104以及存储器106的资源、网络资源等等。
计算设备102还被图示成包含了合成系统114。虽然是作为操作系统108的一部分示出的,但是合成系统114可以采用多种方式实现,例如将其作为独立的模块,作为单独的应用,作为计算设备102自身硬件的一部分(例如SOC或ASIC)等等。合成系统114可以使用多种技术来再现视觉资料,例如借助一个或多个应用编程接口(API)116来表露出可供应用110用来再现视觉资料的功能。
例如,一种这样的技术可以是以名为交换链(swap chain)的对象为基础的,其中所述对象可以利用代表位图的缓冲区阵列。作为示例,其中一个缓冲区可以在任一时刻用于在显示设备112上呈现数据,由此可被称为“屏幕缓冲区(onscreen buffer)”或“前台缓冲区(front buffer)”。其他缓冲区则可以被使得对应用110是可用的,以便实施屏幕以外的光栅化(rasterization off screen)处理,由此可被称为“屏幕外缓冲区(off-screen buffer)”或“后台缓冲区(back buffer)”。
应用110可以采用多种方式来改变显示设备112上显示的内容。在第一种此类技术中,应用110可以重绘后台缓冲区之一并“翻转(flip)”内容,例如使用指针来使屏幕外缓冲区之一变成屏幕缓冲区,反之亦然。
在第二种此类技术中,所使用的可以是不同大小的缓冲区。例如,合成系统114可以使用第一缓冲区作为屏幕缓冲区。合成系统114还可以使用比第一缓冲区小的第二缓冲区作为屏幕外缓冲区。因此,在要更新内容的时候可以将所述更新光栅化到第二缓冲区。然后,该更新可以被拷贝至屏幕缓冲区,例如使用BLT来拷贝。通过这种方式,可以节约计算设备102的资源。
合成系统114还可以被配置成支持虚拟表面技术。这些技术可以被用来帮助应用110的开发人员减少计算设备102中用于再现视觉资料的资源。这其中可以包括使用虚拟表面118,由此使得应用110能够将视觉数据表面分裂成图块(tile)以及然后提前再现这些图块。如下文中进一步描述的那样,其他未使用图块划分表面(例如应用110规定大小)的实施方式也是可以想象的。
虚拟表面118可被配置成是一个或多个逻辑表面120的集合。逻辑表面120代表如应用110所看到的个别的表面,并且可以与一个或多个视觉资料相关联。例如,逻辑表面120可以被配置成是具有固定大小的图块,并且其中多个图块可以被排列在固定网格中,然而非常明显的是,未使用固定大小的图块的多个其他实例也是可以设想的。例如,图块的大小可以由希望再现视觉资料的应用规定,因此,在这个实例中,图块的大小可以由应用自身设定,所述图块在以下论述中也被称为“组块(chunk)”。
虚拟表面118可以用于代表比纹理代表的区域更大的区域。例如,应用110可以在创建时规定虚拟纹理大小。该大小确立了虚拟表面118的边界。所述表面可以与一个或多个视觉资料相关联。在一个或多个实施方式中,在最初初始化虚拟表面的时候,所述表面并未得到实际分配的支持。换句话说,在初始化的时候,虚拟表面118未必“拥有位元(hold bits)”,但其有可能在稍后的某个时间点拥有位元,例如在执行分配的时候。
在以下论述中,视觉资料可以指基本合成元素。例如,视觉资料可以包含供合成系统114处理的位图以及相关联的合成元数据。视觉资料的位图可以与交换链(例如用于视频之类的动态内容)或图谱(atlas)表面(例如用于半动态内容)相关联。在合成系统114支持的单个视觉资料树中可以支持这两种呈现模型。
对半动态内容而言,图谱可以充当视觉资料位图的更新模型,并且可以是指有可能包含多个待再现层的聚合层,然而,单个的层也是可以设想的。视觉资料及其属性操作(例如偏移、变换、效果等等)以及用于更新视觉资料的以图谱为基础的位图的方法(BeginDraw(开始绘制),SuspendDraw(中止绘制),ResumeDraw(恢复绘制),EndDraw(结束绘制))是借助应用编程接口116暴露的,然而对于应用110而言,图谱层大小、图块大小、位图更新的打包/压实/管理可以是隐藏的。
交换链指的是可以相继“翻转”至屏幕的一系列缓冲区,作为示例,这些缓冲区是通过改变指针翻转的。相应地,翻转模式是一种通过使用交换链技术来使屏幕外缓冲区变成屏幕缓冲区的模式,例如通过使用屏幕外和屏幕缓冲区之间的交换点来改变。然而,blt模式指的是一种由合成系统114的运行时发布一个从屏幕外缓冲区到屏幕缓冲区的“blt”(例如位块图像传送)的技术,其中所述blt可用于更新屏幕缓冲区。
如先前所述,在一个或多个实施方式中,在最初初始化虚拟表面118的时候,其尚未得到实际分配的支持。换句话说,其并未“拥有任何位元”。一旦应用110开始更新表面,则合成系统114可以执行图块(即合成表面对象)分配。所述应用110可以借助多种操作来更新虚拟表面118,例如针对相应操作的begin draw、suspend draw、resume draw以及end draw API调用。在一个或多个实施方式中,该映射可以由合成系统114的内部算法来确定,并且不会被应用110看到。
此外,合成系统114可以借助API 116来暴露使得应用110能够调整虚拟表面118的大小以及修整虚拟表面118的功能。例如,调整大小的操作可以被用来改变虚拟表面118的边界。这意味着新的更新和/或分配将会落入新的大小设定的边界内。应用110还可以使用该方法来向合成系统114告知虚拟表面118的区域已不再使用(例如不再有效),并且由此是可以回收的。如果调整大小的处理导致区域缩小,那么应用110将不再能够通过合成系统114的管理来更新处于新边界以外的区域。
图2描述了调整虚拟表面大小的例示实施方式200。在该图示示例中分别使用了第一和第二阶段202、204来显示将3x3的虚拟表面调整成2x2。在第二阶段204,包含交叉影线的区域代表作为调整大小操作的一部分而被丢弃的图块。如前所述,合成系统114随后可以回收用于存储这些图块的存储器106。在调整了大小之后,如果不首先对虚拟表面的大小进行再一次调整,那么应用110将不再能够更新已被丢弃的区域(即交叉影线区域)。
此外,在一个或多个实施方式中,合成系统114可以响应于接收到了关于调整大小的操作的指示来启动该操作。例如,一旦收到该指示,则合成系统114可以实现调整大小的处理,而不会等待应用调用“commit(提交)”。作为示例,应用可以调用“Resize(0, 0)”、“Resize(INT_MAX, INT_MAX)”以及“Commit()”。在这个示例中,应用110已经在第一次调整大小的时候导致内容被丢弃,因此,即使是在“Commit()”之前提交的,第二次调整大小的处理也不会产生效果。在这种情况下,由于没有可供显示的内容,因此,显示设备112不会显示内容。
修整操作可以被用来向合成系统114描述应用110请求的虚拟图谱区域。因此,修整操作可以是在未调整虚拟表面118的边界大小的情况下执行的。然而,它确实将当前将要分配哪些逻辑表面告知合成引擎114,其示例将结合以下附图描述。
图3描述了显示了应用与虚拟表面的逻辑表面间的交互的例示实施方式300。该示例也是用第一和第二阶段302、304示出的。在该示例中,在第一和第二阶段302、304全都显示了应用的视口(viewport)306。相应地,在第一阶段302,应用初始再现了虚拟表面(包含15个图块)中处于视口306内的前六个图块,其中所述图块用交叉影线显示了。
在滚动虚拟表面代表的页面时,如第二阶段304所示,应用现在可以导致最后六个图块被再现。相应地,应用110可以调用“trim(修整)”来表明当前正在使用最后六个图块定义的区域以及由此当前没有使用剩下的内容。然后,合成系统114可以选择重复利用初期代表前六个图块的逻辑表面506。
合成系统114还可以通过暴露图1的API 116来创建和删除逻辑(即物理)及虚拟表面,以及更新个别的表面。该合成系统114可以强迫区域被应用110更新,从而在绘制可更新区域以外的时候避免无关的视觉资料。
初始化和批处理
图4描述了更详细显示图1的合成系统114的例示实施方式400。在现今的计算世界中,用户往往会发现其自身正在查看和浏览大量丰富的内容,并且在任一时刻,这些内容整体上并未被显示设备完全显示。关于该内容的示例包括:复杂和动态的网页,具有照片、音乐或其他实况(live)内容的实况项目/群组的大型列表的现代应用或是大型文档的视图。
诸如以触摸和图像捕捉为基础的操作之类的用户界面允许用户在平板、电话、大尺寸电视机/投影仪上滚动、平移(pan)以及快速缩放众多的用户界面显示以及诸如此类的操作。在大多数情况下,如果预先再现全部内容以及在其活动和改变的时候将其保持最新,那么其成本有可能高得惊人,并且实际上甚至未必能被设备硬件所支持。取而代之的是,可以智能地再现和缓存进入视口的内容部分,例如在用户操作将内容带入视口之前提前推测性地再现所述内容,以及在视口离开的时候将其从缓存中丢弃,从而如上文中描述的那样减少已使用的资源。
为了向用户提供期望的响应,合成系统114可以单独执行合成和再现。这一点是通过由合成系统114包括合成引擎402、控制器404以及再现器406示出的。在一个或多个实施方式中,合成系统114的这些组件可被异步运行。通过这种方式,在再现器406继续再现的同时,响应于用户输入的控制器404以及合成引擎402可以平移/缩放预先再现的内容。
如前所述,合成系统114可以使用一个或多个虚拟表面118。虚拟表面118的使用允许缓存和合成那些已被再现的内容。再现器406更新和修整虚拟表面118上的区域的处理可以是基于推测性的再现策略执行的,而控制器404和合成引擎402则被用于变换虚拟表面118。该变换可以是基于用户输入执行的,以便基于具有已再现内容且处于视口的虚拟表面118的区域来产生用户界面更新。所述合成引擎402可以被配置成一次合成多个虚拟表面118和/或视觉资料。
在一个或多个实施方式中,合成系统114可以被配置成使用逻辑表面120作为固定或混合大小的图块,所述图块将被用作用于合成的前台缓冲区。当再现器406希望更新虚拟表面118的一部分时,再现器406既可以再现单独的更新表面,也可以直接再现图块表面。如果使用单独的更新表面,则在结束绘制时将内容从更新表面复制到前台缓冲区图块。然后,当再现器406修整掉来自图块的有效内容时,所述图块可被释放。
但是,由于改变的内容是在具有过期内容的屏幕上合成的,因此,该实施方式可能会导致结构性撕裂。此外,在虚拟表面上更新的区域图块或组块之间的接缝有可能是因为沟槽和采样处理(例如双线性)或是T形接头产生的,并且这些接缝会导致使用过多的CPU和GPU来处理沟槽、多个重叠的更新以及复杂的有效区域。更进一步,由于动态的内容改变或者内容被用户操作,可能会碰到过多存储器使用的问题。针对每个图块具有固定/混合尺寸的表面的方法,对于较大尺寸的图块有可能会因为该图块中未使用的部分而碰到存储器浪费的问题,对于较小的图块来说,有可能会因为再现/处理更新以及在合成时间对所述图块所进行的再现而碰到CPU/GPU浪费的问题,如果使用了单独的更新缓冲区,那么有可能会遭遇到从更新缓冲区到前台缓冲区的CPU/GPU拷贝成本。因此,在实现合成系统114的过程中可以在多种考虑因素之间执行权衡。
在操作不适合视口的丰富和/或动态内容时候,这些考虑因素可以包括针对用户体验质量和性能的以下原则集合。第一个此类原则被称为视觉响应。这意味着虚拟表面118可被配置得在用户“指尖”和用户操作时感觉像真实表面。该可以通过将合成系统114配置成在没有可感知的滞后的情况下对操作做出响应以及追踪所述操作来支持。再现器406与控制器404以及合成引擎402的分离可以用来以健壮的方式支持该原则。
第二个此类原则包括视觉连贯性。在该示例中,在操作表面和更新其内部的动态内容(例如动画)的时候,显示设备112上的内容不会显示出干扰用户沉浸或置信度的伪像(artifact)。例如,内容可以在没有接缝、视觉撕裂或讹误的情况下显示,用户界面的某些部分不滞后于它们所附着的其他部分等等。
第三个原则包括视觉完整性。如果用户界面在视觉上是完整的,那么用户将很少看到覆盖显示设备112的某些部分的填充符/占位符图案(例如棋盘),如果这样的话,该显示将被限制在相对较短的持续时间。此外,表面内容更新是没有明显滞后的,然而举例来说,对小功率设备上跨越缩放等级且无限制的丰富内容而言,这一点未必能得到保证。例如,再现器406更新虚拟表面118以及合成引擎402合成该表面越是优化和有效,再现器406所具有用以进一步提前推测地性执行再现的带宽也就越多,以便实现附加的视觉完整性。
第四个原则包括实况的表面。就该原则来说,在操作过程中,动画、视频及其他动态内容是持续播放和运行的,并且是不会时断时续的。如果再现器406实现了视觉完整性且具有用以实施实况表面的带宽,则可以将其实现。这可以通过有效地更新和合成虚拟表面118来支持。
合成系统114可以被配置成权衡这些原则。通过这种方式,可以实现一种全面的解决方案,该解决方案不但支持视觉正确性和连贯性,而且还支持用于管理和合成虚拟表面更新的响应,由此,再现器406具有足够带宽来确保视觉完整性以及实况的表面。
图5示出了用于启动虚拟表面118的合成系统114的操作的例示实施方式500。该实施方式是用第一和第二阶段502、504示出的。在第一阶段502,应用110请求用以再现可以与一个或多个视觉资料相关联的用户界面的表面大小。如先前所述,在这里首先会对虚拟表面118进行初始化(例如创建),由此,其并未得到实际分配的支持,因此,其在初始化时并未“拥有位元”。
然后,应用110可以规定要再现至虚拟表面118的视觉资料。相应地,合成引擎402可以合成这些供再现器406再现至虚拟表面118的视觉资料,例如图示的汽车。该处理可以通过用图块或“组块”来执行,其中所述分配的大小是由应用规定的。
在第二阶段504,再现器406可以接收更新虚拟表面118的区域的指令,例如该表面上的矩形区域。再现器406与合成引擎402之间的接口使得再现器406可以在众多虚拟表面118上实现多个更新506(例如,所述更新可以包括修整指令,改变视觉资料,创建或移除视觉资料等等),以及在那些可能将这些表面当做内容的视觉资料上变换更新。更新506的示例包括被配置成光标的视觉资料以及被配置成用户可选按钮的视觉资料。
在一个实施方式中,可以调用“提交”操作,从而使得再现器406可以再现多个更新506,例如将其作为一个批次来更新。通过这种方式,合成系统114可以避免再现不完整的更新。这样做允许再现器406具有由显示设备112依据视觉连贯性原则显示的连贯及一致的视觉资料。
此外,处理用户输入的控制器404可以在不经过再现器406的情况下,基于用户操作而在合成引擎402上直接更新视觉资料上的变换(例如用于平移或缩放)。作为示例,即使在相对较长的时段中占用再现器406,这个方面也可以提供视觉响应,以便处理动画或是动态内容的其他状态变化,和/或在处理资源有限的瘦设备上将复杂内容光栅化。
虚拟表面118的实施方式可以包括为再现器406提供再现器406能够再现到其中的表面和偏移。然后,在合成引擎402拾取和处理已经提交给再现器406的整批更新时,所述合成引擎402可以“翻转”该表面。如果再现器406使用了单独的更新表面来再现所述更新,那么可以通过使用该处理来消除原本将要执行的拷贝操作。
此外,该翻转处理还允许合成引擎402确保再现器406在单个批处理中产生的每个更新506(例如借助提交操作)都是作为一个整体到达显示设备112的。由此,合成系统114可以避免局部更新处理。
更新和后备列表
图6描述了显示合成系统114预备用于更新的表面的例示实施方式600。合成系统114可以使用多种不同的技术来预备用于更新的表面。在第一种情况中,合成系统114可以从应用接收一个要求分配用以执行更新的区域的请求,其中该区域在图示示例中是作为第一矩形602示出的。
响应于该请求,合成系统114可以分配一个比请求区域更大的区域,其中所述区域被显示成是包含了被请求的第一矩形602的第二矩形604。因此,如果随后接收到大小略有差异的更新,那么该处理将允许重新使用先前分配的表面。
举例来说,合成系统114可以保持合成系统114先前分配的表面608的后备列表606。这可以被合成系统114用来“囤积”存储器106,以便重新使用表面608以及表面608的“组块”。
作为示例,这些表面608可以保持在计算设备102的用于不再使用的表面的存储器106中。因此,一旦合成系统114接收到要求提供用于更新的表面的请求,那么合成系统114首先可以检查后备列表606来确定在计算设备102的存储器106中是否有与该请求对应的先前分配表面608可用。如果是的话,则合成系统114可以利用这些表面,由此通过不分配新的表面来提高系统总体效率。此外,通过像先前描述的那样将大于请求的尺寸分配给表面(例如具有更多像素),可以增加这些表面608与后续更新相关的可能性。
举例来说,如果在某个时段接收到大小略有差异的更新,例如,如果下一个更新针对的是宽度或高度多出数个像素的区域,那么该处理将允许更多地再次使用先前分配的表面608。因此,代替分配新表面,合成系统114可以利用关于先前提供的表面的后备列表666来定位相关表面。应该指出的是,修整以及对于表面部分的其他更新也是可用的。
这可以基于已确认的批处理并通过区域来追踪。如果更新与还具有其他有效内容的现有表面608的可用部分相适合,则可以再次使用该表面。这也可以通过避免从多个不同表面再现来降低合成侧的成本,因为每一个此类转换都会招致设置成本。后备列表606的大小(例如在列表以及计算设备102的存储器中保持的表面608的数量)可以基于历史峰值使用情况或多种其他因素来设置。
图7描述了使用了图6的后备列表606的合成系统114的操作的例示实施方式700。该实施方式是用第一、第二以及第三阶段702、704、706显示的。在第一阶段702,表面708将被分配,以便由再现器406进行再现。然后,表面708的控制权可被赋予再现器406,以便执行再现处理。
在该再现过程中,在第二阶段704,另一个表面710可被分配,以便执行更新。在该示例中,所述其他表面710与再现器406再现的表面708包含在相同的显示区域内部。因此,在再现表面708的时候可以分配和填充表面710(例如绘制)。然后,表面710可以被传递至再现器406,以便进行再现,作为示例,该表面可以是响应于如前所述的提交命令而被传递的。
在第三阶段706,用于更新用户界面的另一个更新可被接收。在本示例中,合成系统114通过使用图6的后备列表606来确定该更新包含了先前分配的表面,例如来自第一阶段702的表面708。相应地,合成系统114可以使用已经分配的表面708来包含更新712。通过这种方式,可以在没有重新分配新表面的情况下使用表面708,从而节约了计算设备102的资源。此外,多个其他示例也是可以想象的。
沟槽
图8描述了显示了使用沟槽的合成系统114的操作的例示实施方式800。在保持视觉正确性的过程中的一个问题涉及遗漏沟槽。例如,虚拟表面有可能会因为滚动等等而被定位或缩放至子像素偏移。相应地,显示设备112要显示的像素的值是根据相邻像素来确定的,例如使用双线性采样。
然而,更新802中位于该更新802的边缘804的相邻像素可能具有基于错误信息的值。举例来说,如果处于更新802以外的相邻像素包含“垃圾”(例如来自其他更新),那么光栅化器有可能从这些像素进行采样并且由此产生具有坏值的像素,在被显示设备112显示的时候,这些像素看起来会像是接缝。
一种用于处理该问题的方法是将可能处于另一个图块/聚丛表面805中的边缘上的像素的行或列拷贝至新分配的更新802的表面中的相邻像素。然而已经证明,对于计算设备的处理资源、例如于计算设备102的CPU和GPU资源这两者而言,这些附加拷贝处理的成本是惊人的高。
相应地,在一个或多个实施方式中,更新802的边缘会与表面边缘对准。然后,在采样落在该表面之外的“相邻”像素的时候将会使用箝位操作,其中所述操作将促使光栅化器使用处于表面边缘的像素的值。这可以被用来产生成本与视觉正确性之间的合理折衷,即便所产生的结果在视觉方面未必完全正确,但对用户而言,该结果可以显得足够正确。在一个或多个实施方式中,沟槽本身是不更新的。
在一些情况中,更新边缘可能不能与表面边缘对准。其原因可能在于分配了比更新更大的表面。在这种情况下,处于相同表面上的更新边缘的像素的行/列可被拷贝至相邻像素,以便实现与箝位行为类似的效果。
同样,在修整和更新时,沟槽是不会用在一个或多个实施方式中可能会被绘制的潜在的新像素来更新的,这是因为沟槽包含了先前有效且与当前有效的像素一起显示的像素。这样做支持正确性与性能之间的权衡,其在一般情况下产生最低限度的视觉伪像,在观看的时候视觉伪像会干扰到用户。
混合和 BLT
图9描述了显示合成系统114对有效区域的管理的例示实施方式900。如前所述,虚拟表面118可以包括对更新有效和无效的部分。对于图示的虚拟表面118的示例,举例来说,更新可以包括处于虚拟表面118内的光标而不包括汽车。由此可以使用光标来定义虚拟表面118的有效区域,与虚拟表面118的其他区域相对。通过追踪虚拟表面118以及其他表面的这些区域,合成系统114可以利用多种优化处理。
例如,在这里描述了一种技术用于将来自某个表面的待再现区域分成两个部分,混合和BLT。该技术可用于解决更新很小并且在虚拟表面上产生的有效区域相对复杂的情况,例如导致产生了具有众多很小的源表面的复杂网孔。
如果表面是“预先相乘”或透明的(并且不是“不透明”或是被设置成忽略α值的),那么该表面是“混合的”。如果再现器没有提供内容,那么可以通过使用这种方式来将更大的矩形形状与“已清理”和/或完全透明的像素相混合。在有些情况中,与使用概述了复杂形状的每一个路径/边缘的复杂网孔的处理以及光栅化相比,这种处理变得更为优化。
当有效区域对于不透明表面而言非常复杂时,这种方法还可以被用于沟槽。例如,内部部分可被BLT,但是围绕边缘的像素则会被混合,从而清除相邻像素。因此,在光栅化器从这些像素进行采样的时候将可以获得精确的值。在一个或多个实施方式中,该技术将被用于虚拟表面118的边缘,而不是用于构成虚拟表面的图快聚丛与表面之间的内部边缘。
比特可被拷贝以及局部清理,以便确保分配的聚丛表面与图块大小对准以及来自拥有所述图块的先前表面的内容被移动到新的表面。在一个或多个实施方式中,该处理并未针对再现器406将要更新的部分来执行,例如处于图7所示的中间位置的更新矩形。如果表面不透明,那么在更新之后可以通过“混合”来使处于边缘的像素变得不透明,也就是在那些像素的α通道中达到完全不透明度。
拷贝、清理以及不透明化这些任务中的每一个都可以使用由不重叠的矩形条纹构成的“区域”来执行。这些区域既可以相交,也可以形成并集,或是相减。更进一步,合成这些区域的不重叠矩形条纹被枚举。这样做允许有效地将不同的矩形和区域合并到单个区域中,以及提取所产生的最优的一组矩形。例如,Win32 HRGN是一个可用于利用这些设施的GDI构造。这些操作被用来识别出将被执行诸如清理或拷贝之类的操作的已合并和优化过的多组矩形,而不是确定将要单独依照每一个图块做什么。该处理可以被用于在执行这些任务的CPU和GPU这两者中实现显著的效能,并且还允许将图块/对准大小降至相对较小的值,例如32x32或16x16,由此减小先前所述的浪费。
来自再现器406的修整请求可以基于有效区域的复杂性而以不同的方式处理。在典型情况中,图块聚丛/表面的有效区域可以依照修整请求来更新。然而,如果有效区域非常复杂并且正在使用BLT/混合技术,那么可以执行附加操作。举例来说,由于有效区域的某些部分现在位于区域的边缘,因此可以混合有效区域的这些部分,以使其变得不透明。另一种对此进行处理的方式是为那些从中移除了有效部分的图块创建新的聚丛。然而,图块可以继续保留一些有效部分。对这些图块来说,剩余的有效部分可被从现有表面拷贝,变成不透明的,并且修整掉的部分可被清除。在再现器406由于例如提交操作而提交整批更新时,可以提交这些新的聚丛。该操作可以用矩形条纹区域进行优化,但是其他示例也是可以考虑的。
在再现器406提交一组更新时,可以将修整和视觉变换(例如所产生的图块聚丛/表面及其有效区域的集合)传递至合成引擎402。这些更新可以用可以被合成引擎402使用的相应令牌来传递,以便确保完成用于这些表面上的光栅化的任何未解决的CPU/GPU工作。此时,附加技术可以被用来进一步提升效率,在以下部分将对其示例进行描述。
下推
图10描述了显示使用下推技术来组合表面的合成系统114的操作的例示实施方式1000。在本示例中,合成系统114已进行了表面分配1002来显示视觉资料,其中所述视觉资料在图中用斜条标记显示成方框。然后,进行另一个表面分配1004来执行更新,其中所述更新被显示成是与斜条方框放在一起的白色方框。
通过用合成系统114来追踪表面的有效区域,可以对分配进行组合,以便提高资源使用率。例如,与从单个表面进行再现相比,从多个表面进行再现有可能是更资源密集的。
在图示示例中,表面分配1004的有效部分被“下推”至表面分配1002。这一点是用虚线框示出的,其表明来自表面分配1004的有效区域现在被包含在表面分配1002中。在下推之后,包含更新的表面分配1004可被释放,从而释放计算设备102的存储器106的某些部分。由此,该技术可以被用来通过利用已被组合的表面之一的分配而在未创建新的表面分配的情况下组合这些表面。
举个例子,在一些情况中,合成系统114有可能在当前或先前的批量更新中面临重叠的大型更新。这有可能会导致分配多个包含了相对较小的有效区域的表面。因此,合成系统114有可能会分配很大的表面,但是相对较小的有效区域有可能会阻止释放这些表面。
然而,通过将有效区域从第一表面(例如较新的较小表面)“下推”到第二表面(例如较早的较大表面),可以移除来自第一表面的有效区域。这样做将允许释放第一表面,从而在不涉及附加表面分配的情况下释放存储器,以及减少合成系统114所管理的表面分配的数量。通过这种方式,再现器406可以被分配再现较少表面的任务,从而提高了合成系统114的效率。用于进行新的表面分配的其他技术也是可以设想的,在以下的部分中将对其示例进行描述。
枚举和聚丛
图11描述了显示将有效区域合并成新表面的合成系统114的操作的例示实施方式1100。如前所述,合成系统114可以被配置成追踪表面分配的有效区域,其示例是作为具有相应有效区域的1102(1)、1102(2)以及1102(n)示出的。有效区域相对于包含该区域的表面的大小有可能因为诸如来自其他表面的更新等等原因而随时间减小。相应地,合成系统114可以被配置成将来自表面分配1102(1)-1102(n)的有效区域组合成一个或多个新的表面分配1104。
举例来说,合成系统114可以被配置成通过减少作为来源设置和再现以合成显示设备112上的显示的表面的数量来解决表面分配和合成。该处理可以通过枚举整个虚拟表面的有效区域中最优的一组矩形来执行。然后,可以为每一个这样的矩形创建一个聚丛。如果该处理导致产生大量较小的矩形,那么可以使用如上所述的混合/BLT技术。通过这种方式,可以得到要由合成引擎402恰当合成且像素区域已被清理的较大矩形。
举例来说,当合成引擎402接收到批量更新时,该引擎首先可以确定虚拟表面的“变脏的”部分和构成待更新显示树的视觉资料。这可以被执行以便包含显性计算变脏区域以及将来自更新和修整处理的所述变脏区域传递到合成器的处理,作为示例,即使底层表面或“聚丛”可能改变(例如下推或重新聚丛),也可以将具有相同内容的有效区域留到以后处理,由此不会产生新的变脏区域。在每一次更新/修整操作中可以显性地传递这些用以描述有效区域的矩形。在一个或多个实施方式中,脏的区域可以被减小以便产生数量较少的较大矩形,从而避免在设置和运行多个较小的再现操作的过程中出现很大开销。一种用于执行该处理的技术是允许最大数量的脏矩形。在碰到新的脏矩形时,这些矩形可被添加至列表或者与产生最小的总体面积提升的矩形合并(例如形成并集)。
网孔
图12描述了显示使用网孔的合成系统114的操作的例示实施方式1200。网孔(例如点的列表)可以包括多个视觉资料,可以为所述多个视觉资料执行针对GPU驱动器的单个绘制调用。通过这种方式,针对驱动器的绘制调用的数量可以减少,从而避免了每一次调用所涉及的开销。
合成引擎402具有多个用以合成虚拟表面118的聚丛/表面的选项。例如,由于合成引擎402知道每一个聚丛的有效区域,因此,合成引擎402可以以跳过这些不与将要更新的脏区域重叠的聚丛为开始。如果虚拟表面118中包含的视觉资料是像素对准的,则在不使用如上所述的沟槽技术的情况下执行平移变换。这样做允许为聚丛中的每个矩形使用简单的BLT/混合。
代替一次一个地执行这些操作,合成引擎402可以从该组矩形中创建三角形网孔,并且可以使得表面被使用该网孔来再现。例如,合成系统114可以检查具有有效区域的一组矩形1202。然后,通过将每一个矩形分成两个三角形,可以为这组矩形产生三角形网孔1204。然而,从这些矩形中有可能产生T形接头。所述T形接头可能导致三角形网孔1204例如由于浮点或舍入误差而有接缝地被光栅化。相应地,合成系统114可以改成对这组矩形进行处理,以便形成不包含T形接头的不重叠矩形的三角形网孔1206。
如果聚丛的矩形没有改变,那么可以将所产生的网孔缓存在合成帧上,并且可以再次使用所述网孔。如果存在非像素对准的变换,但是该变换仅仅包含平移,那么合成引擎402仍旧可以自己为每个聚丛产生网孔并再现所述每一个聚丛。然而,如果存在更复杂的变换,那么合成引擎402可以处理这组矩形来避免T形接头,由此确保无接缝的正确光栅化处理。
为此目的,每一个聚丛可以注册相应的一组矩形,其中网格生成器对象是由合成系统114管理的。在检查每个坐标的时候,合成系统114的网孔生成器功能可以在已注册边缘上添加一个或多个附加顶点。每一个注册边缘在该范围中有可能也具有添加到其自身的已有顶点。结果是用于具有附加顶点的每个聚丛的一组矩形。然后,通过使用这些顶点,可以将这些矩形分解成一组不重叠的三角形。由此,如三角形网孔1206所示,在非简单变换的情况下,聚丛可以用所产生的这些无T形接头的网孔来再现。
遮挡
图13描述了显示与遮挡相关的合成系统114的操作的例示实施方式1300。即使每一个聚丛都可以具有混合其表面的一些部分以及用于BLT其他部分的指令,对于不透明的虚拟表面来说,合成系统114知道每个聚丛上的有效和不透明区域。
对遮挡而言,这些区域可以在整个虚拟表面上累积,并且可供合成引擎402用以执行遮挡检测。在一个或多个实施方式中,合成引擎402可以枚举已被注册的遮挡矩形,从而识别出被z轴次序上更接近用户的不透明视觉资料遮挡的部分以便在显示设备112显示。
然而,通过遮挡传递来将矩形分解成复杂形状其成本有可能很昂贵。为了确保构成区域的不重叠矩形条纹完全遮挡将被整个区域遮挡的矩形,合成系统114可以使用矩形包容及相交技术。
在图13的例示实施方式1300中显示了这种技术的一个示例,其中该示例是通过第一和第二阶段1302、1304显示的。在第一阶段1302,第一和第二矩形1306、1308将要由合成引擎402合成。然而,合成引擎402可以确定第一矩形1306的部分1310被第二矩形1308所遮挡。
相应地,如果遮挡矩形模糊了整个边缘,那么可以将合成引擎402配置成减少已被检查的矩形,由此结果仍旧是已被减少的单个矩形。在第二阶段1306中显示了该处理的一个示例,其中第一矩形1306被减少,由此不包含被第二矩形1308遮挡的部分1310。因此,第二矩形1308的边缘可以被用来定义第一矩形1306的新的边缘,由此节约了计算设备102的资源。此外,多种其他示例同样是可以设想的。
例示过程
以下论述描述了可以使用前述系统和设备实现的技术。每一个过程的各方面都可以用硬件、固件、软件或是其组合的方式实现。这些过程被显示成是一组方框,并且这些方框规定了由一个或多个设备执行的操作,然而,所述过程不必局限于所显示的各个方框执行操作的顺序。以下论述的某些部分中参考了图1的环境100以及图2-13的系统和例示实施方式。
图14描述了为其中要再现数据的表面分配大小的例示实施方式中的过程1400。合成系统接收一个要求分配其中要再现一个或多个视觉资料的表面的请求,并且该请求规定了所述表面的大小(方框1402)。作为示例,该请求可以源于要开始“再现位元”的应用。在一个或多个实施方式中,在收到该请求时,所述表面有可能已被初始化,但是尚未被分配,由此,该表面在收到请求的时候并未“拥有位元”。
响应于对该请求的接收,该表面被合成系统分配,以便具有比请求再现一个或多个视觉资料的大小更大的大小(方框1404)。如先前所述,合成系统114可以被配置成“囤积存储器”,以便提示重新使用不再有效的已分配表面。通过使该表面大于应用请求的表面,合成系统114可以提高以后再次使用该表面的可能性。
图15描述了合成系统追踪有效区域的例示实施方式中的过程1500。包含可供显示设备显示的视觉资料的表面由合成系统来进行管理(方框1502)。举例来说,该表面可以被配置成是如前所述的虚拟表面。
在显示设备所要显示的表面内部,有效区域将被追踪(方框1504)。例如,该表面最初可以被配置成对显示的一部分进行更新。然而,其他表面可以随着时间来进一步更新已被更新的显示中的部分。相应地,对于显示而言,该表面的某些部分可以保持有效以便显示,而其他部分则无效。合成系统114可以被配置成追踪这种有效性,其中所述有效性可用于支持多种不同的功能,例如在本论述的其他位置进一步描述的遮挡管理、表面大小调整、表面压实等等。
图16描述了使用后备列表来管理表面的例示实施方式中的过程1600。合成系统接收一个要求分配其中要再现一个或多个视觉资料的表面的请求(方框1602)。与先前一样,应用110可以通过合成系统114的一个或多个API 116来进行该请求作为调用。
合成系统检查后备列表来确定计算设备的存储器中是否存在可供分配的表面,其中所述表面与接收到的请求相对应,并且不包含有效的视觉资料供计算设备的显示设备显示(方框1604)。例如,后备列表可以参考在存储器中分配但却因为随后接收的更新之类的原因而不再具有有效部分的表面。
响应于确定表面可用的检查,使得所确定的表面可用来再现一个或多个视觉资料(方框1606)。例如,如前所述,所确定的表面可能已经被分配比被请求的尺寸更大的尺寸,因此与后续更新相关联。此外,多种其他示例也是可以设想的。
图17描述了基于遮挡来调整表面大小的例示实施方式中的过程1700。确定表面的一部分被要由显示设备显示的另一个表面所遮挡(方框1702)。例如,合成引擎402可以确定用于显示表面的Z轴次序,并且可以确定其他表面的至少一部分要在该表面的所述部分之上再现。
所述部分将被从表面中移除(方框1704)。这可以用多种方式执行,例如通过使用其他表面的边缘来定义将要减小的表面的边缘,由此定义该表面的至少一个新的边缘。
具有移除部分的表面会与其他表面一起再现(方框1706)。通过这种方式,可以避免再现那些已被从表面移除的部分,由此节约了计算设备102的资源。
图18描述了例示实施方式中的过程1800,其中该过程描述了一种包括将有效区域从一个表面下推到另一个表面的压实技术。追踪可供合成系统用以再现一个或多个视觉资料的多个表面的有效区域(方框1802)。例如,合成系统114可以确定该表面的哪些部分会被显示设备显示以及不被显示。
然后,合成系统确定第一表面的第一有效区域可被包含在第二表面的分配内(方框1804)。例如,第一表面可以作为更新来配置。然后,后续更新可被执行,其中所述更新会使除了第一有效区域之外的更新部分无效。
然后,下推第一有效区域,以便将其作为第二表面的一部分来包含(方框1806)。这可以包括将有效区域的比特拷贝到第二表面。在拷贝之后,所述第一表面然后可被释放,由此可以在保持单独表面的过程中节约资源,并且可以通过使用数量较少的表面来提高再现操作的效率。因此,在该示例中不分配新的表面,由此可以在执行和保持分配的过程中节约计算设备102的资源。其他示例同样是可以考虑的,其示例如下所述。
图19描述了对包括将有效区域组合成新的表面的压实技术进行描述的例示实施方式中的过程1900。。在这里将会追踪可供合成系统用来再现一个或多个视觉资料的多个表面的有效区域(方框1902)。与先前一样,合成系统114可以确定多个表面的哪些部分会被显示设备显示以及不被显示。
然后,为新表面计算一种分配,其中所述新表面可用于包含来自多个表面的有效区域(方框1904)。作为示例,所述新表面可以被配置成具有用于包含多个有效区域的界限的矩形。然后,新的表面可以被分配用于包含来自多个表面的有效区域(方框1906),并且随后可以将这些有效区域拷贝到新的表面,由此使得合成系统115能够释放始发表面。合成系统114实施的表面压实的多种其他示例也是可以考虑的。
图20描述了合成系统114使用网孔来调用驱动器、以便使用网孔来再现表面的例示实施方式中的过程2000。网孔是由一组不包含T形接头的矩形形成的(方框2002)。如先前所述,举例来说,该网孔可以像所描述的那样由一组三角形形成,其中所述三角形被形成为避免了T形接头,并且由此可以避免在再现这些接头(例如接缝)的过程中遭遇的复杂情况。在这里将会调用驱动器来使用网孔再现表面(方框2004),作为示例,所述调用可以是针对可用于描述多个矩形的图形功能(例如GPU)的驱动器的单独调用,其中所述矩形具有用于在用户界面中更新的有效区域。由此,网孔有助于避免为每一个矩形使用调用,所述矩形被用于形成如在以上的相应部分中描述的网孔的三角形。
例示的系统和设备
图21概括性地在2100示出了一个例示系统,其中该系统包括例示的计算设备2102,所述计算设备2102代表可以实现这里描述的不同技术的一个或多个计算系统和/或设备。作为示例,计算设备2102可以是服务供应商的服务器、与客户机相关联的设备(例如客户机设备)、片上系统和/或其他任何适当的计算设备或计算系统。在这里则将计算设备2102图示成包含了图1的合成系统114。
图示的例示计算设备2102包括以可通信的方式相互耦合的处理系统2104、一个或多个计算机可读媒体2106以及一个或多个I/O接口2108。虽然没有显示,但是计算设备2102还可以包括系统总线或是将不同组件相互耦合的其他数据和命令传输系统。系统总线可以包括不同总线结构中的任一结构或是其组合,例如存储器总线或存储器控制器、外围总线、通用串行总线和/或使用了多种总线架构中的任何一种的处理器或本地总线。其他多种示例也是可以考虑的,例如控制和数据线。
处理系统2104代表使用硬件来执行一个或多个操作的功能。相应地,处理系统2104被图示成包含了可以被配置成处理器、功能块等等的硬件部件2110。这其中可以包括作为专用集成电路或是用一个或多个半导体形成的其他逻辑器件的硬件实施方式。硬件部件2110不受形成所述部件的材料或是其内部使用的处理机制的限制。例如,处理器可以包括一个或多个半导体和/或一个或多个晶体管(例如电子集成电路(IC))。在此上下文中,处理器可执行指令可以是电子可执行指令。
计算机可读存储媒体2106被图示成包含存储器2112。所述存储器/存储装置2112代表与一个或多个计算机可读媒体相关联的存储器/存储容量。存储器/存储组件2112可以包括易失媒体(例如随机存取存储器(RAM))和/或非易失媒体(例如只读存储器(ROM),闪存,光盘,磁盘等等)。所述存储器/存储组件2112可以包括固定媒体(例如RAM、ROM、固定硬盘驱动器等等)以及可移除媒体(例如闪存、可移除硬盘、光盘等等)。计算机可读媒体2106可以用以下进一步描述的多种其他方式来配置。
一个或多个输入/输出接口2108代表使用不同的输入/输出设备来允许用户将命令和信息输入计算设备2102以及还允许将信息呈现给用户和/或其他组件或设备的功能。输入设备的示例包括键盘、光标控制设备(例如鼠标)、麦克风、扫描仪、触摸功能(例如被配置成检测物理接触的电容性或其他传感器)、相机(例如可以使用可见波长或是红外频率之类的不可见波长来辨别不涉及触摸的手势之类的移动的相机)等等。输出设备的示例包括显示设备(例如监视器或投影仪)、扬声器、打印机、网卡、触觉响应设备等等。由此,计算设备2102可以用以下进一步描述的多种方式配置,以便支持用户交互。
在这里,不同的技术可以是在软件、硬件部件或程序模块的一般上下文中描述的。通常,这种模块包含执行特定任务或实现特定抽象数据类型的例程、程序、对象、元素、组件、数据结构等等。这里使用的术语“模块”、“功能”和“组件”通常代表软件、固件、硬件或是其组合。这里描述的技术特征与平台无关,这意味着这些技术可以在具有多种处理器的多种商业计算平台上实现。
所描述的模块和技术的实施方式既可以保存在某种形式的计算机可读媒体上,也可以经由所述媒体来传送。计算机可读媒体可以包括能被计算设备2102访问的多种媒体。作为示例而不是限制,计算机可读媒体可以包括“计算机可读存储媒体”以及“计算机可读信号媒体”。
“计算机可读存储媒体”可以是指与单纯的信号传输、载波或是信号本身形成对比,使得能够永久和/或非暂时性地存储信息的媒体和/或设备。因此,计算机可读存储媒体指的是非信号承载媒体。所述计算机可读存储媒体包括以适合存储诸如计算机可读指令、数据结构、程序模块、逻辑部件/电路或是其他数据之类的信息的方法或技术实现的硬件,例如易失和非易失、可移除和不可移除的媒体和/或存储设备。计算机可读存储媒体的示例可以包括但不局限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多用途盘(DVD)或其他光学存储装置、硬盘、磁带盒、磁带、磁盘存储装置或其他磁存储设备、或是适合存储期望信息并能被计算机访问的其他存储设备、有形媒体或制品。
“计算机可读信号媒体”可以是指被配置成向计算设备2102的硬件传送指令的信号承载介质,例如经由网络来传送。“信号媒体”通常可以包括计算机可读指令、数据结构、程序模块或是诸如载波、数据信号或其他传输机制之类的调制数据信号中的其他数据。信号媒体还包括任何信息递送媒体。术语“调制数据信号”意指其特性中的一个或多个被以如下方式设置或改变的信号,也就是将信息编码在该信号中的方式。作为例证而不是限制,通信媒体包括有线媒体,例如有线网络或直接线路连接,以及还包括无线媒体,例如声学、RF、红外及其他无线媒体。
如先前所述,硬件部件2110和计算机可读媒体2106代表采用硬件形式实现的模块、可编程设备逻辑和/或固定设备逻辑,其中所述模块、可编程设备逻辑和/或固定设备逻辑可以在一些实施例中使用,以便实现这里描述的技术的至少一些方面,例如执行一个或多个指令。硬件可以包括集成电路或片上系统的组件、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)以及在硅中或其他硬件上的其他实施方式。在这个上下文中,硬件可以作为执行由硬件包含的指令和/或逻辑定义的程序任务的处理设备以及用于存储指令以便运行的硬件(例如先前描述的计算机可读存储媒体)来工作。
前述各项的组合还可以用于实现这里描述的不同技术。相应地,软件、硬件或是可执行模块可以作为包含在某种形式的计算机可读存储媒体上的一个或多个指令和/或逻辑来实现,和/或可以由一个或多个硬件部件2110来实现。计算设备2102可以被配置成实现与软件和/或硬件模块对应的特定指令和/或功能。相应地,可以由计算设备2102作为软件运行的模块的实施方式至少可以部分用硬件实现,例如通过使用计算机可读存储媒体和/或处理系统2104的硬件部件2110来实现。这些指令和/或功能可以由一个或多个制品执行/操作(例如一个或多个计算设备2102和/或处理系统2104),以便实现这里描述的技术、模块和示例。
如图21中进一步示出的那样,当在个人计算机(PC)、电视设备和/或移动设备上运行应用时,例示系统2100使得能够实现用于无缝用户体验的普适环境。在使用应用、运行视频游戏、观看视频等等时候,如果从一个设备转换到下一个设备,那么对于普通用户体验而言,服务和应用在所有这三种环境中会以基本相似的方式运行。
在例示系统2100中,多个设备通过中央计算设备相互连接。所述中央计算设备既可以位于多个设备本地,也可以远离所述多个设备。在一个实施例中,中央计算设备可以是通过网络、因特网或其他数据通信链路连接到所述多个设备的一个或多个服务器计算机的云。
在一个实施例中,这种互连架构使得功能能够在多个设备中递送,以便向多个设备的用户提供共同和无缝的体验。多个设备中的每一个可以具有不同的物理需求和能力,并且中央计算设备可以使用平台来使得能够将针对一个设备定制但是对所有设备通用的体验递送给设备。在一个实施例中,创建目标设备的分类,并且体验是针对设备的通用分类定制的。所述设备分类可以通过物理特征、使用类型或设备的其他共同特性来定义。
在不同的实施方式中,计算设备2102可以采用多种不同的配置,例如供计算机2114、移动站2116以及电视2118使用。这些配置中的每一种配置都包括通常可以具有不同构造和能力的设备,由此可以依照一个或多个不同的设备分类来配置计算设备2102。例如,计算设备2102可以作为设备分类中的计算机2114来实现,其中所述设备分类包含个人计算机、台式计算机、多屏计算机、膝上型计算机、上网本等等。
计算设备2102还可以作为设备分类中的移动站2116来实现,其中该设备分类包含移动设备,例如移动电话、便携式音乐播放器、便携式游戏设备、平板计算机、多屏计算机等等。计算设备2102也可以作为设备分类中的电视2118来实现,其中该设备分类包含处于不定观看环境中且具有较大屏幕或者通常与较大屏幕相连的设备。这些设备包括电视机、机顶盒、游戏控制台等等。
计算设备2102的这些不同的配置可以支持这里描述的技术,并且这里描述的技术并不仅限于这里描述的技术的具体示例。所述功能还可以全部或者部分通过使用分布式系统来实现,例如借助如下所述的平台2122而在“云”2120上实现。
云2120包括和/或代表资源2124的平台2122。平台2122抽象化云2120的硬件(例如服务器)和软件资源的底层功能。所述资源2124可以包括能在远离计算设备2102的服务器上运行计算机处理时被使用的应用和/或数据。资源2124还可以包括经由因特网和/或通过蜂窝或Wi-Fi网络之类的订户网络提供的服务。
平台2122可以抽象化资源和功能来将计算设备2102连接到其他计算设备。所述平台2122还可以服务用于抽象化资源扩展,以便为所遭遇的针对经由平台2122实现的资源2124的请求提供相应的扩展等级。相应地,在互联设备的实施例中,这里描述的功能的实施方式可以分布在整个系统2100中。例如,该功能可以部分在计算设备2102上实现,并且可以经由抽象化云2120的功能的平台2122实现。
结论
虽然以特定于结构特征和/或方法操作的语言描述了本发明,但是应该理解,在所附权利要求中定义的发明不必局限于上述具体特征或操作。相反,所述具体特征和操作是作为实现请求保护的发明的例示形式公开的。

Claims (16)

1.一种由计算设备实现的方法,该方法包括:
由计算设备的应用指定一个或多个视觉资料作为包括位图和相关联的合成元数据的合成元素,以用于多个虚拟合成表面,每个虚拟合成表面包括一个或多个逻辑合成表面,逻辑合成表面表示所述应用所看到的具有相应存储器分配的各个表面,所述虚拟合成表面不会被所述计算设备显示;
由计算设备的合成系统追踪所述虚拟合成表面内的多个有效区域,每个有效区域包括可供合成系统用来再现的一个或多个当前视觉资料;
由合成系统追踪所述虚拟合成表面内的无效区域,无效区域包括不可供合成系统用来再现的一个或多个非当前视觉资料;
由合成系统确定所述多个虚拟合成表面中的第一虚拟合成表面的第一有效区域可以包含在所述多个虚拟合成表面中的第二虚拟合成表面内;以及
响应于所述确定,由合成系统将第一有效区域从对应于包含第一虚拟合成表面的该有效区域的逻辑合成表面的存储器分配组合到对应于第二虚拟合成表面的逻辑合成表面的存储器分配中。
2.如权利要求1所述的方法,其中有效区域是有效的以便被计算设备的显示设备作为用户界面的一部分来显示,以及无效区域不会被作为用户界面的一部分来显示。
3.如权利要求1所述的方法,其中组合是通过将所述第一有效区域从对应于包含第一虚拟合成表面的该有效区域的逻辑合成表面的存储器分配拷贝至对应于第二虚拟合成表面的逻辑合成表面的存储器分配来执行的。
4.如权利要求1所述的方法,其中对应于第一虚拟合成表面的一个或多个逻辑合成表面是由计算设备作为对应于第二虚拟表面的一个或多个逻辑合成表面的存储器分配之后的更新来分配的存储器。
5.如权利要求1所述的方法,还包括由计算设备移除一个表明第一虚拟合成表面的第一有效区域有效的指示。
6.如权利要求5所述的方法,还包括由计算设备释放对应于包含第一虚拟合成表面的该有效区域的逻辑合成表面的存储器分配。
7.如权利要求6所述的方法,其中所述释放是响应于确定第一虚拟合成表面在组合之后不再包括有效的区域而执行的。
8.一种由计算设备实现的方法,所述方法包括:
由计算设备的应用指定一个或多个视觉资料作为包括位图和相关联的合成元数据的合成元素,以用于多个虚拟合成表面,每个虚拟合成表面包括一个或多个逻辑合成表面,逻辑合成表面表示所述应用所看到的具有相应存储器分配的各个表面,所述虚拟合成表面不会被所述计算设备显示;
由计算设备的合成系统追踪所述虚拟合成表面内的多个有效区域,每个有效区域包括可供合成系统用来再现的一个或多个当前视觉资料;
由合成系统追踪所述虚拟合成表面内的无效区域,无效区域包括不可供合成系统用来再现的一个或多个非当前视觉资料;
由合成系统为对应于可用于包含有效区域的新虚拟合成表面的一个或多个逻辑合成表面计算一种存储器分配;以及
由合成系统为对应于新虚拟合成表面的逻辑合成表面分配存储器,以便包含来自与对应于包含有效区域的虚拟合成表面的相应逻辑合成表面相对应的相应存储器分配的有效区域。
9.一种由计算设备实现的设备,该设备包括:
用于由计算设备的应用指定一个或多个视觉资料作为包括位图和相关联的合成元数据的合成元素,以用于多个虚拟合成表面的装置,每个虚拟合成表面包括一个或多个逻辑合成表面,逻辑合成表面表示所述应用所看到的具有相应存储器分配的各个表面,所述虚拟合成表面不会被所述计算设备显示;
用于由计算设备的合成系统追踪所述虚拟合成表面内的多个有效区域的装置,每个有效区域包括可供合成系统用来再现的一个或多个当前视觉资料;
用于由合成系统追踪所述虚拟合成表面内的无效区域的装置,无效区域包括不可供合成系统用来再现的一个或多个非当前视觉资料;
用于由合成系统确定所述多个虚拟合成表面中的第一虚拟合成表面的第一有效区域可以包含在所述多个虚拟合成表面中的第二虚拟合成表面内的装置;以及
用于响应于所述确定,由合成系统将第一有效区域从对应于包含第一虚拟合成表面的该有效区域的逻辑合成表面的存储器分配组合到对应于第二虚拟合成表面的逻辑合成表面的存储器分配中的装置。
10.如权利要求9所述的设备,其中有效区域是有效的以便被计算设备的显示设备作为用户界面的一部分来显示,以及无效区域不会被作为用户界面的一部分来显示。
11.如权利要求9所述的设备,其中用于组合的装置还包括用于将所述第一有效区域从对应于包含第一虚拟合成表面的该有效区域的逻辑合成表面的存储器分配拷贝至对应于第二虚拟合成表面的逻辑合成表面的存储器分配的装置。
12.如权利要求9所述的设备,其中对应于第一虚拟合成表面的一个或多个逻辑合成表面是由计算设备作为对应于第二虚拟表面的一个或多个逻辑合成表面的存储器分配之后的更新来分配的存储器。
13.如权利要求9所述的设备,还包括用于由计算设备移除一个表明第一虚拟合成表面的第一有效区域有效的指示的装置。
14.如权利要求13所述的设备,还包括用于由计算设备释放对应于包含第一虚拟合成表面的该有效区域的逻辑合成表面的存储器分配的装置。
15.如权利要求14所述的设备,其中所述用于释放的装置响应于确定第一虚拟合成表面在组合之后不再包括有效的区域来执行所述释放。
16.一种由计算设备实现的设备,所述设备包括:
用于由计算设备的应用指定一个或多个视觉资料作为包括位图和相关联的合成元数据的合成元素,以用于多个虚拟合成表面的装置,每个虚拟合成表面包括一个或多个逻辑合成表面,逻辑合成表面表示所述应用所看到的具有相应存储器分配的各个表面,所述虚拟合成表面不会被所述计算设备显示;
用于由计算设备的合成系统追踪所述虚拟合成表面内的多个有效区域的装置,每个有效区域包括可供合成系统用来再现的一个或多个当前视觉资料;
用于由合成系统追踪所述虚拟合成表面内的无效区域的装置,无效区域包括不可供合成系统用来再现的一个或多个非当前视觉资料;
用于由合成系统为对应于可用于包含有效区域的新虚拟合成表面的一个或多个逻辑合成表面计算一种存储器分配的装置;以及
用于由合成系统为对应于新虚拟合成表面的逻辑合成表面分配存储器,以便包含来自与对应于包含有效区域的虚拟合成表面的相应逻辑合成表面相对应的相应存储器分配的有效区域的装置。
CN201310211997.0A 2012-05-31 2013-05-31 用于虚拟表面压实的计算机实现的方法和设备 Active CN103294473B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/485,815 US9177533B2 (en) 2012-05-31 2012-05-31 Virtual surface compaction
US13/485,815 2012-05-31
US13/485815 2012-05-31

Publications (2)

Publication Number Publication Date
CN103294473A CN103294473A (zh) 2013-09-11
CN103294473B true CN103294473B (zh) 2016-12-28

Family

ID=49095413

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310211997.0A Active CN103294473B (zh) 2012-05-31 2013-05-31 用于虚拟表面压实的计算机实现的方法和设备

Country Status (2)

Country Link
US (2) US9177533B2 (zh)
CN (1) CN103294473B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9384711B2 (en) 2012-02-15 2016-07-05 Microsoft Technology Licensing, Llc Speculative render ahead and caching in multiple passes
US9286122B2 (en) 2012-05-31 2016-03-15 Microsoft Technology Licensing, Llc Display techniques using virtual surface allocation
US9235925B2 (en) 2012-05-31 2016-01-12 Microsoft Technology Licensing, Llc Virtual surface rendering
US9230517B2 (en) 2012-05-31 2016-01-05 Microsoft Technology Licensing, Llc Virtual surface gutters
US9307007B2 (en) 2013-06-14 2016-04-05 Microsoft Technology Licensing, Llc Content pre-render and pre-fetch techniques
US10535114B2 (en) * 2015-08-18 2020-01-14 Nvidia Corporation Controlling multi-pass rendering sequences in a cache tiling architecture
TWI698845B (zh) * 2019-02-12 2020-07-11 聯陽半導體股份有限公司 時序控制器、顯示裝置及其操作方法
CN112070873B (zh) * 2020-08-26 2021-08-20 完美世界(北京)软件科技发展有限公司 一种模型的渲染方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101874233A (zh) * 2007-11-26 2010-10-27 微软公司 逻辑结构设计表面

Family Cites Families (202)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0418638A (ja) 1990-05-11 1992-01-22 Fujitsu Ltd 静的メモリ割当て処理方法
US5270103A (en) 1990-11-21 1993-12-14 Xerox Corporation Coated receiver sheets
EP0620520A1 (en) 1993-03-30 1994-10-19 AT&T Corp. Method for making persistent data objects having hidden pointers
US5729704A (en) 1993-07-21 1998-03-17 Xerox Corporation User-directed method for operating on an object-based model data structure through a second contextual image
WO1995022104A1 (en) 1994-02-14 1995-08-17 Ni-Tech Pty. Limited Use of multiple applications and allocation of memory or other resources in a gui environment
JP3346513B2 (ja) 1994-07-01 2002-11-18 ミノルタ株式会社 マップ記憶方法及びそのマップを使用する経路作成方法
AUPM701394A0 (en) 1994-07-22 1994-08-18 Monash University A graphical display system
AUPM704194A0 (en) 1994-07-25 1994-08-18 Canon Information Systems Research Australia Pty Ltd Efficient methods for the evaluation of a graphical programming language
US5564002A (en) * 1994-08-01 1996-10-08 International Business Machines Corporation Method and apparatus for implementing a virtual desktop through window positioning
US5588071A (en) 1994-10-26 1996-12-24 Minnesota Mining And Manufacturing Company Identifying an area of interest using histogram data arranged in predetermined sequence
US5929852A (en) 1995-05-05 1999-07-27 Apple Computer, Inc. Encapsulated network entity reference of a network component system
US6525722B1 (en) * 1995-08-04 2003-02-25 Sun Microsystems, Inc. Geometry compression for regular and irregular mesh structures
US5781195A (en) 1996-04-16 1998-07-14 Microsoft Corporation Method and system for rendering two-dimensional views of a three-dimensional surface
US5844569A (en) 1996-04-25 1998-12-01 Microsoft Corporation Display device interface including support for generalized flipping of surfaces
US5801717A (en) 1996-04-25 1998-09-01 Microsoft Corporation Method and system in display device interface for managing surface memory
US5784699A (en) 1996-05-24 1998-07-21 Oracle Corporation Dynamic memory allocation in a computer using a bit map index
US5870769A (en) 1996-06-07 1999-02-09 At&T Corp. Internet access system and method with active link status indicators
US6067093A (en) 1996-08-14 2000-05-23 Novell, Inc. Method and apparatus for organizing objects of a network map
US5986670A (en) * 1996-09-13 1999-11-16 Dries; Roberta L. Method and apparatus for producing a computer generated display that permits visualization of changes to the interior or exterior of a building structure shown in its actual environment
US6249289B1 (en) 1996-11-27 2001-06-19 Silicon Graphics, Inc. Multi-purpose high resolution distortion correction
US5918239A (en) 1997-01-21 1999-06-29 International Business Machines Corporation Deferred display of web pages corresponding to links selected by user
US6191796B1 (en) 1998-01-21 2001-02-20 Sensable Technologies, Inc. Method and apparatus for generating and interfacing with rigid and deformable surfaces in a haptic virtual reality environment
US6182133B1 (en) 1998-02-06 2001-01-30 Microsoft Corporation Method and apparatus for display of information prefetching and cache status having variable visual indication based on a period of time since prefetching
US6278479B1 (en) 1998-02-24 2001-08-21 Wilson, Hewitt & Associates, Inc. Dual reality system
JP4434355B2 (ja) 1998-03-27 2010-03-17 キヤノン株式会社 アニメ―ションフォント作成装置
US6091422A (en) 1998-04-03 2000-07-18 Avid Technology, Inc. System for editing complex visual data providing a continuously updated rendering
US6426750B1 (en) 1998-07-14 2002-07-30 Microsoft Corporation Run-time geomorphs
US6552722B1 (en) 1998-07-17 2003-04-22 Sensable Technologies, Inc. Systems and methods for sculpting virtual objects in a haptic virtual reality environment
US7409694B2 (en) 1998-09-09 2008-08-05 Microsoft Corporation Highly componentized system architecture with loadable virtual memory manager
US7031517B1 (en) 1998-10-02 2006-04-18 Canon Kabushiki Kaisha Method and apparatus for segmenting images
US6853385B1 (en) 1999-11-09 2005-02-08 Broadcom Corporation Video, audio and graphics decode, composite and display system
US6411302B1 (en) 1999-01-06 2002-06-25 Concise Multimedia And Communications Inc. Method and apparatus for addressing multiple frame buffers
US7013021B2 (en) 1999-03-19 2006-03-14 Digimarc Corporation Watermark detection utilizing regions with higher probability of success
US6636633B2 (en) 1999-05-03 2003-10-21 Intel Corporation Rendering of photorealistic computer graphics images
US6657645B2 (en) 1999-06-11 2003-12-02 Microsoft Corporation System, method, and computer-readable medium for displaying keyboard cues in a window
US6542160B1 (en) 1999-06-18 2003-04-01 Phoenix Technologies Ltd. Re-generating a displayed image
US6226017B1 (en) 1999-07-30 2001-05-01 Microsoft Corporation Methods and apparatus for improving read/modify/write operations
US6330003B1 (en) 1999-07-30 2001-12-11 Microsoft Corporation Transformable graphical regions
US6335765B1 (en) 1999-11-08 2002-01-01 Weather Central, Inc. Virtual presentation system and method
US6501474B1 (en) 1999-11-29 2002-12-31 Ati International Srl Method and system for efficient rendering of image component polygons
US6894698B2 (en) 2000-01-11 2005-05-17 Sun Microsystems, Inc. Recovering added precision from L-bit samples by dithering the samples prior to an averaging computation
US6850967B1 (en) * 2000-02-19 2005-02-01 Hewlett-Packard Development Company, L.P. System and method for ensuring transparent sychronization of multiple applications across remote systems
US7738688B2 (en) 2000-05-03 2010-06-15 Aperio Technologies, Inc. System and method for viewing virtual slides
US6704024B2 (en) 2000-08-07 2004-03-09 Zframe, Inc. Visual content browsing using rasterized representations
US6864886B1 (en) 2000-08-10 2005-03-08 Sportvision, Inc. Enhancing video using a virtual surface
JP4595228B2 (ja) 2000-08-24 2010-12-08 ソニー株式会社 受信装置および方法、送信装置および方法、記録媒体、並びに通信システム
US7756391B1 (en) 2000-09-01 2010-07-13 Matrox Electronic Systems Ltd. Real-time video editing architecture
US6900813B1 (en) 2000-10-04 2005-05-31 Ati International Srl Method and apparatus for improved graphics rendering performance
US6954218B2 (en) * 2000-10-30 2005-10-11 Microsoft Corporation Method and apparatus for high-performance rendering and hit-testing of a window tree
US6762776B2 (en) * 2000-11-10 2004-07-13 Microsoft Corporation Mouse input panel windows class list
US6906985B2 (en) 2001-01-25 2005-06-14 Dphi Acquisitions, Inc. Calibration of tracking error signal gain in a tracking servo system
JP4551018B2 (ja) 2001-04-05 2010-09-22 富士通株式会社 画像結合装置
US6885374B2 (en) 2001-06-29 2005-04-26 Intel Corporation Apparatus, method and system with a graphics-rendering engine having a time allocator
US6809745B1 (en) * 2001-10-01 2004-10-26 Adobe Systems Incorporated Compositing two-dimensional and 3-dimensional images
US6904169B2 (en) 2001-11-13 2005-06-07 Nokia Corporation Method and system for improving color images
JP2003233809A (ja) * 2002-02-07 2003-08-22 Matsushita Electric Ind Co Ltd 画像合成装置および画像合成方法
US7010755B2 (en) 2002-04-05 2006-03-07 Microsoft Corporation Virtual desktop manager
CN1659589A (zh) 2002-04-19 2005-08-24 电脑联合想象公司 用于提供推理服务的系统和方法
US6894692B2 (en) * 2002-06-11 2005-05-17 Hewlett-Packard Development Company, L.P. System and method for sychronizing video data streams
US7069396B2 (en) 2002-06-27 2006-06-27 Hewlett-Packard Development Company, L.P. Deferred memory allocation for application threads
US20040008212A1 (en) 2002-07-11 2004-01-15 Sun Microsystems, Inc., A Delaware Corporation Reshaping irregularly-shaped images for improved compression
US7051040B2 (en) 2002-07-23 2006-05-23 Lightsurf Technologies, Inc. Imaging system providing dynamic viewport layering
US7130890B1 (en) 2002-09-04 2006-10-31 Hewlett-Packard Development Company, L.P. Method and system for adaptively prefetching objects from a network
JP4158462B2 (ja) 2002-09-04 2008-10-01 ソニー株式会社 画面表示処理装置及び画面表示処理方法、並びにコンピュータ・プログラム
US8961316B2 (en) 2002-12-10 2015-02-24 Ol2, Inc. System and method for improving the graphics performance of hosted applications
US7127592B2 (en) 2003-01-08 2006-10-24 Sun Microsystems, Inc. Method and apparatus for dynamically allocating registers in a windowed architecture
US6992675B2 (en) 2003-02-04 2006-01-31 Ati Technologies, Inc. System for displaying video on a portable device and method thereof
US7673304B2 (en) 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US6947051B2 (en) 2003-02-18 2005-09-20 Microsoft Corporation Video memory management
US7133054B2 (en) 2004-03-17 2006-11-07 Seadragon Software, Inc. Methods and apparatus for navigating an image
US7126606B2 (en) 2003-03-27 2006-10-24 Microsoft Corporation Visual and scene graph interfaces
US7088374B2 (en) 2003-03-27 2006-08-08 Microsoft Corporation System and method for managing visual structure, timing, and animation in a graphics processing system
EP1465116A1 (en) 2003-03-31 2004-10-06 STMicroelectronics Limited Computer graphics
NO20031586L (no) 2003-04-08 2004-10-11 Favourite Systems As Vindussystem for datainnretning
JP3966832B2 (ja) * 2003-04-28 2007-08-29 株式会社東芝 描画処理装置、及び、描画処理方法
US7215801B2 (en) 2003-06-05 2007-05-08 General Electric Company Method, system and apparatus for processing radiographic images of scanned objects
DE10326811A1 (de) 2003-06-13 2005-01-20 Siemens Ag Verfahren zur Darstellung von Grafikobjekten und Kommunikationsgerät
US7391424B2 (en) 2003-08-15 2008-06-24 Werner Gerhard Lonsing Method and apparatus for producing composite images which contain virtual objects
US7219209B2 (en) 2003-08-29 2007-05-15 Motorola, Inc. Bus filter for memory address translation
US20050283566A1 (en) 2003-09-29 2005-12-22 Rockwell Automation Technologies, Inc. Self testing and securing ram system and method
US7949960B2 (en) 2003-09-30 2011-05-24 Sap Ag Predictive rendering of user interfaces
US7511718B2 (en) 2003-10-23 2009-03-31 Microsoft Corporation Media integration layer
US7839419B2 (en) * 2003-10-23 2010-11-23 Microsoft Corporation Compositing desktop window manager
US7369134B2 (en) 2003-12-29 2008-05-06 Anark Corporation Methods and systems for multimedia memory management
US7313668B2 (en) 2004-01-29 2007-12-25 Hewlett-Packard Development Company, L.P. Immediate virtual memory
US7986328B2 (en) 2004-02-26 2011-07-26 Hewlett-Packard Development Company, L.P. Graphics optimization system and method
US7342580B1 (en) * 2004-04-02 2008-03-11 Pacific Data Images Llc Surface compression based on reference geometry in animation models
US7484065B2 (en) 2004-04-20 2009-01-27 Hewlett-Packard Development Company, L.P. Selective memory allocation
US7950026B1 (en) 2004-06-24 2011-05-24 Julian Michael Urbach Virtual application execution system and method
US20060107229A1 (en) * 2004-11-15 2006-05-18 Microsoft Corporation Work area transform in a graphical user interface
GB0502844D0 (en) 2005-02-11 2005-03-16 Univ Edinburgh Storing digital content for access using a captured image
US7624354B2 (en) * 2005-04-29 2009-11-24 Microsoft Corporation Efficient workspace management using content groups
US7404152B2 (en) 2005-06-03 2008-07-22 Research In Motion Limited Displaying messages on handheld devices
US20060290705A1 (en) 2005-06-24 2006-12-28 Microsoft Corporation Performing a pre-rendering pass in digital image processing
US9041744B2 (en) 2005-07-14 2015-05-26 Telecommunication Systems, Inc. Tiled map display on a wireless device
US7681200B2 (en) 2005-07-22 2010-03-16 Microsoft Corporation Secure hardware desktop buffer composition
US20070040788A1 (en) 2005-08-17 2007-02-22 Texas Instruments, Inc. Modular Graphics Stack With Video Support
US7535480B2 (en) * 2005-08-24 2009-05-19 Microsoft Corporation Compositing rendering layers
JP4305431B2 (ja) 2005-09-06 2009-07-29 ソニー株式会社 画像処理装置、マスク作成方法及びプログラム
EP1770954A1 (en) 2005-10-03 2007-04-04 Amadeus S.A.S. System and method to maintain coherence of cache contents in a multi-tier software system aimed at interfacing large databases
WO2007047349A2 (en) 2005-10-14 2007-04-26 Symantec Operating Corporation Technique for improving scalability and portability of a storage management system
TWI322354B (en) 2005-10-18 2010-03-21 Via Tech Inc Method and system for deferred command issuing in a computer system
US7383393B2 (en) 2005-10-28 2008-06-03 Freescale Semiconductor, Inc. System and method for cooperative prefetching
US8255818B2 (en) 2005-11-17 2012-08-28 Oracle International Corporation System and method for providing drag and drop functionality in a communities framework
JP2007157063A (ja) 2005-12-08 2007-06-21 Sony Corp 画像処理装置及び画像処理方法、並びにコンピュータ・プログラム
KR101256548B1 (ko) 2005-12-30 2013-04-19 삼성전자주식회사 영상 부호화 및 복호화 장치 및 그 방법
US8244051B2 (en) 2006-03-15 2012-08-14 Microsoft Corporation Efficient encoding of alternative graphic sets
US7880745B2 (en) 2006-06-20 2011-02-01 Via Technologies, Inc. Systems and methods for border color handling in a graphics processing unit
US7401199B2 (en) 2006-06-28 2008-07-15 Motorola, Inc Method and system for allocating memory to an electronic device
US7733350B2 (en) 2006-06-30 2010-06-08 Microsoft Corporation Anisometric texture synthesis
US7594093B1 (en) 2006-10-12 2009-09-22 Foundry Networks, Inc. Virtual memory mapping for efficient memory usage
KR101217559B1 (ko) 2006-10-27 2013-01-02 삼성전자주식회사 전력 소모를 최소화하는 그래픽스 데이터 렌더링 방법 및장치
KR20080051484A (ko) 2006-12-06 2008-06-11 삼성전자주식회사 휴대단말기의 응용프로그램 인터페이스 제공 시스템 및방법
CN101197044B (zh) 2006-12-06 2011-02-02 鸿富锦精密工业(深圳)有限公司 图像合成系统及方法
JP4860488B2 (ja) * 2007-01-04 2012-01-25 ルネサスエレクトロニクス株式会社 画像表示制御装置
US20090213081A1 (en) 2007-01-10 2009-08-27 Case Jr Charlie W Portable Electronic Device Touchpad Input Controller
US8203564B2 (en) 2007-02-16 2012-06-19 Qualcomm Incorporated Efficient 2-D and 3-D graphics processing
US20080238928A1 (en) 2007-03-30 2008-10-02 Bimal Poddar Frame buffer compression for desktop composition
US8108799B2 (en) 2007-03-30 2012-01-31 Microsoft Corporation Remoting of windows presentation framework based applications in a non-composed desktop
US20080285074A1 (en) 2007-04-20 2008-11-20 Global Graphics Software Limited Systems, devices, and methods for variable data printing
US7843451B2 (en) 2007-05-25 2010-11-30 Google Inc. Efficient rendering of panoramic images, and applications thereof
US7941758B2 (en) 2007-09-04 2011-05-10 Apple Inc. Animation of graphical objects
US8368692B2 (en) * 2007-10-19 2013-02-05 Siemens Aktiengesellschaft Clipping geometries in ray-casting
EP2235713A4 (en) 2007-11-29 2012-04-25 Oculis Labs Inc METHOD AND APPARATUS FOR SECURE VISUAL CONTENT DISPLAY
KR100932634B1 (ko) 2007-12-27 2009-12-21 팅크웨어(주) 증강 현실을 이용한 3차원 웹 지도 서비스 방법 및 그시스템
US20090172331A1 (en) 2007-12-31 2009-07-02 Balaji Vembu Securing content for playback
US8555193B2 (en) 2008-01-17 2013-10-08 Google Inc. System for intelligent automated layout and management of interactive windows
US8204338B2 (en) 2008-02-14 2012-06-19 Microsoft Corporation Factoring repeated content within and among images
US7937452B2 (en) 2008-02-19 2011-05-03 Microsoft Corporation Framework for rendering plug-ins in remote access services
US8525825B2 (en) 2008-02-27 2013-09-03 Google Inc. Using image content to facilitate navigation in panoramic image data
US8010624B2 (en) 2008-03-27 2011-08-30 Amazon Technologies, Inc. Dynamic composition for image transmission
US8125495B2 (en) * 2008-04-17 2012-02-28 Microsoft Corporation Displaying user interface elements having transparent effects
US8307300B1 (en) 2008-05-13 2012-11-06 Google Inc. Content resizing and caching in multi-process browser architecture
JP5043748B2 (ja) * 2008-05-19 2012-10-10 キヤノン株式会社 コンテンツ管理装置、コンテンツ管理装置の制御方法、プログラム及び記録媒体
US8184120B2 (en) 2008-05-19 2012-05-22 Siemens Aktiengesellschaft Framework for processing and rendering large volume data
US8432405B2 (en) 2008-06-26 2013-04-30 Microsoft Corporation Dynamically transitioning between hardware-accelerated and software rendering
US8176433B2 (en) 2008-08-18 2012-05-08 International Business Machines Corporation Application window area change surveillance
WO2010030712A1 (en) 2008-09-09 2010-03-18 Citrix Systems, Inc. Methods and systems for per pixel alpha-blending of a parent window and a portion of a background image
US20100073379A1 (en) 2008-09-24 2010-03-25 Sadan Eray Berger Method and system for rendering real-time sprites
US20100162126A1 (en) 2008-12-23 2010-06-24 Palm, Inc. Predictive cache techniques
US8161087B2 (en) 2008-12-30 2012-04-17 Sap France Displaying and manipulating virtual objects on virtual surfaces
EP2375404A4 (en) 2009-01-06 2013-03-06 Mitsubishi Electric Corp DEVICE FOR CONTROLLING DRAWING PLATES
US8448090B2 (en) 2009-01-23 2013-05-21 Hewlett-Packard Development Company, L.P. Selective plug-in activation for resource-limited platforms
US20100169059A1 (en) * 2009-02-13 2010-07-01 Grant Thomas-Lepore Layered Personalization
US8207983B2 (en) 2009-02-18 2012-06-26 Stmicroelectronics International N.V. Overlaying videos on a display device
WO2010124397A1 (en) 2009-04-29 2010-11-04 Torch Mobile Inc. Software-based asynchronous tiled backingstore
JP4676011B2 (ja) * 2009-05-15 2011-04-27 株式会社東芝 情報処理装置、表示制御方法およびプログラム
US8368707B2 (en) 2009-05-18 2013-02-05 Apple Inc. Memory management based on automatic full-screen detection
US8368694B2 (en) 2009-06-04 2013-02-05 Autodesk, Inc Efficient rendering of multiple frame buffers with independent ray-tracing parameters
US9009612B2 (en) 2009-06-07 2015-04-14 Apple Inc. Devices, methods, and graphical user interfaces for accessibility using a touch-sensitive surface
US8896505B2 (en) 2009-06-12 2014-11-25 Global Oled Technology Llc Display with pixel arrangement
US8907941B2 (en) 2009-06-23 2014-12-09 Disney Enterprises, Inc. System and method for integrating multiple virtual rendering systems to provide an augmented reality
US9298345B2 (en) 2009-06-23 2016-03-29 Microsoft Technology Licensing, Llc Block view for geographic navigation
US8223180B2 (en) 2009-08-24 2012-07-17 Samsung Electronics Co., Ltd. Gamut mapping which takes into account pixels in adjacent areas of a display unit
JP5451285B2 (ja) * 2009-09-24 2014-03-26 キヤノン株式会社 画像処理装置、画像処理方法
KR101718533B1 (ko) 2009-09-25 2017-03-21 톰슨 라이센싱 그리드 내비게이션을 위한 장치 및 방법
US8832585B2 (en) * 2009-09-25 2014-09-09 Apple Inc. Device, method, and graphical user interface for manipulating workspace views
AU2009225336B2 (en) * 2009-10-13 2011-08-04 Canon Kabushiki Kaisha Method of compositing variable alpha fills supporting group opacity
CN102044191A (zh) * 2009-10-19 2011-05-04 郑阿奇 含有自我认证信息防伪的方法
US8497876B2 (en) 2009-11-02 2013-07-30 Pacific Data Images Llc Infinite complexity deep-framebuffer rendering
US9268466B2 (en) * 2009-12-09 2016-02-23 Citrix Systems, Inc. Methods and systems for updating a dock with a user interface element representative of a remote application
US9146884B2 (en) 2009-12-10 2015-09-29 Microsoft Technology Licensing, Llc Push pull adaptive capture
JP4818427B2 (ja) * 2009-12-22 2011-11-16 株式会社東芝 情報処理装置及び画面選択方法
US20110173569A1 (en) 2010-01-13 2011-07-14 Rockmelt, Inc. Preview Functionality for Increased Browsing Speed
KR101661931B1 (ko) 2010-02-12 2016-10-10 삼성전자주식회사 3차원 그래픽스 랜더링 장치 및 그 방법
EP2558956B1 (en) 2010-04-12 2019-06-12 Google LLC Synthetic navigation elements for electronic documents
JP5541974B2 (ja) 2010-06-14 2014-07-09 任天堂株式会社 画像表示プログラム、装置、システムおよび方法
US8839112B2 (en) 2010-08-10 2014-09-16 Microsoft Corporation Cloning or extending a computer desktop on a wireless display surface
US8493404B2 (en) * 2010-08-24 2013-07-23 Qualcomm Incorporated Pixel rendering on display
KR101705581B1 (ko) * 2010-09-30 2017-02-22 삼성전자주식회사 데이터 처리 장치 및 방법
EP2622490B1 (en) 2010-10-01 2018-12-05 Z124 Cross-environment communication framework
US8860716B2 (en) 2010-10-13 2014-10-14 3D Nuri Co., Ltd. 3D image processing method and portable 3D display apparatus implementing the same
KR101174216B1 (ko) * 2010-10-25 2012-08-14 엔에이치엔(주) 지역기반의 검색어를 추천하는 시스템 및 그 방법
US8799759B2 (en) 2010-12-13 2014-08-05 International Business Machines Corporation Pre-rendering web content
US10109065B2 (en) 2011-01-25 2018-10-23 Qualcomm Incorporated Using occlusions to detect and track three-dimensional objects
US20120206471A1 (en) * 2011-02-11 2012-08-16 Apple Inc. Systems, methods, and computer-readable media for managing layers of graphical object data
US9147264B2 (en) 2011-02-23 2015-09-29 Nvidia Corporation Method and system for quantizing and squeezing base values of associated tiles in an image
US9077970B2 (en) 2011-02-25 2015-07-07 Adobe Systems Incorporated Independent layered content for hardware-accelerated media playback
GB201104066D0 (en) * 2011-03-09 2011-04-20 Imagination Tech Ltd Compression of a tessellated primitive index list in a tile rendering system
JP2012194794A (ja) 2011-03-16 2012-10-11 Fujitsu Ltd 携帯端末及びコンテンツ表示プログラム
GB2489272B (en) 2011-03-23 2013-03-13 Toshiba Res Europ Ltd An image processing system and method
US9383917B2 (en) 2011-03-28 2016-07-05 Microsoft Technology Licensing, Llc Predictive tiling
EP2691935A1 (en) 2011-03-29 2014-02-05 Qualcomm Incorporated System for the rendering of shared digital interfaces relative to each user's point of view
US8438474B1 (en) 2011-04-27 2013-05-07 Google Inc. Speculative rendering during cache revalidation
US8788711B2 (en) 2011-06-14 2014-07-22 Google Inc. Redacting content and inserting hypertext transfer protocol (HTTP) error codes in place thereof
US8996987B2 (en) 2011-06-30 2015-03-31 Apple Inc. List view optimization
US8745212B2 (en) 2011-07-01 2014-06-03 Google Inc. Access to network content
US8612418B2 (en) 2011-07-14 2013-12-17 Google Inc. Mobile web browser for pre-loading web pages
US8810533B2 (en) 2011-07-20 2014-08-19 Z124 Systems and methods for receiving gesture inputs spanning multiple input devices
US8384726B1 (en) 2011-08-31 2013-02-26 Google Inc. Selective rendering of off-screen content
US20130073670A1 (en) * 2011-09-15 2013-03-21 Microsoft Corporation Geo-Migration Of User State
US8600921B2 (en) 2011-09-15 2013-12-03 Google Inc. Predicting user navigation events in a browser using directed graphs
US20130069981A1 (en) * 2011-09-15 2013-03-21 Research In Motion Limited System and Methods for Managing Composition of Surfaces
US9229770B2 (en) 2011-09-16 2016-01-05 Skype Invoking timed iterator for executing tasks within timeout constraint without spawning new thread
US8341245B1 (en) 2011-09-26 2012-12-25 Google Inc. Content-facilitated speculative preparation and rendering
US20130093750A1 (en) 2011-10-12 2013-04-18 Google Inc. Use of banding to optimize map rendering in a three-dimensional tilt view
US20130147787A1 (en) * 2011-12-12 2013-06-13 Sergey Ignatchenko Systems and Methods for Transmitting Visual Content
US9384711B2 (en) 2012-02-15 2016-07-05 Microsoft Technology Licensing, Llc Speculative render ahead and caching in multiple passes
US9286122B2 (en) 2012-05-31 2016-03-15 Microsoft Technology Licensing, Llc Display techniques using virtual surface allocation
US9230517B2 (en) 2012-05-31 2016-01-05 Microsoft Technology Licensing, Llc Virtual surface gutters
US9235925B2 (en) 2012-05-31 2016-01-12 Microsoft Technology Licensing, Llc Virtual surface rendering
US9307007B2 (en) 2013-06-14 2016-04-05 Microsoft Technology Licensing, Llc Content pre-render and pre-fetch techniques

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101874233A (zh) * 2007-11-26 2010-10-27 微软公司 逻辑结构设计表面

Also Published As

Publication number Publication date
US20160189424A1 (en) 2016-06-30
US9177533B2 (en) 2015-11-03
US20130321471A1 (en) 2013-12-05
US9959668B2 (en) 2018-05-01
CN103294473A (zh) 2013-09-11

Similar Documents

Publication Publication Date Title
CN103294473B (zh) 用于虚拟表面压实的计算机实现的方法和设备
CN103268628B (zh) 虚拟表面渲染
CN104321752B (zh) 虚拟表面分配
CN103294360B (zh) 虚拟表面后备列表和沟槽
CN107438861B (zh) 用于图像生成器的数据片生成器
CN113132558A (zh) 用于高性能功率高效的可编程图像处理的架构
CN105190701B (zh) 基于原语的合成系统及方法
CN1329870C (zh) 任意形状图像的基于块的旋转
US9324299B2 (en) Atlasing and virtual surfaces
CN107329654A (zh) 绘制元素浮层的方法、装置以及计算机可读存储介质
CN105164723A (zh) 共享合成资源
US11348287B2 (en) Rendering of graphic objects with pattern paint using a graphics processing unit
US10657705B2 (en) System and method for rendering shadows for a virtual environment
CN102592261A (zh) 矢量图展现方法及系统
CN102881037B (zh) 一种在地图中绘制动态海洋的方法及装置
CN116627372B (zh) Pnl物料对齐预览显示方法、装置、设备及存储介质
WO2024078111A1 (zh) 界面渲染的方法及电子设备
CN116700850A (zh) 显示方法及电子设备
CN114003156A (zh) 显示方法、装置、存储介质及电子设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1189289

Country of ref document: HK

ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150706

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150706

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1189289

Country of ref document: HK