CN117409088A - 可编程的像素混合流水线、方法、装置和计算机设备 - Google Patents
可编程的像素混合流水线、方法、装置和计算机设备 Download PDFInfo
- Publication number
- CN117409088A CN117409088A CN202210801663.8A CN202210801663A CN117409088A CN 117409088 A CN117409088 A CN 117409088A CN 202210801663 A CN202210801663 A CN 202210801663A CN 117409088 A CN117409088 A CN 117409088A
- Authority
- CN
- China
- Prior art keywords
- thread
- unit
- triangle
- pixel
- information
- 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.)
- Pending
Links
- 238000002156 mixing Methods 0.000 title claims abstract description 75
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000012163 sequencing technique Methods 0.000 claims abstract description 57
- 238000004590 computer program Methods 0.000 claims abstract description 20
- 238000012545 processing Methods 0.000 claims abstract description 16
- 238000012360 testing method Methods 0.000 claims description 37
- 238000009877 rendering Methods 0.000 claims description 19
- 238000001514 detection method Methods 0.000 claims description 15
- 238000004364 calculation method Methods 0.000 claims description 12
- 238000006243 chemical reaction Methods 0.000 claims description 7
- 239000003086 colorant Substances 0.000 claims description 5
- 238000010276 construction Methods 0.000 claims description 5
- 230000011218 segmentation Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 239000000203 mixture Substances 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/90—Determination of colour characteristics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/001—Texturing; Colouring; Generation of texture or colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/32—Image data format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/44—Morphing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Graphics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Human Computer Interaction (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
本申请涉及一种可编程的像素混合方法、装置、计算机设备、存储介质和计算机程序产品。所述方法包括:通过光栅化单元对第一三角形、第二三角形和第三三角形进行光栅化处理,获取各三角形对应的三角形覆盖信息;将三角形覆盖信息分别发送至线程组装单元和线程排序单元,线程组装单元将所述第一三角形和第二三角形组装成为第一线程,并根据第一线程信息向申请线程接口申请线程,基于线程信息缓存器、线程同步单元、线程排序单元、像素写回单元、插值单元和执行单元对所述第一线程进行执行,在第一线程执行完毕后,线程组装单元继续对所述第三三角形进行组装,完成对第三三角形的绘制,提高了像素混合的灵活性和拓展性。
Description
技术领域
本申请涉及图形绘制技术领域,特别是涉及一种可编程的像素混合流水线、方法、装置和计算机设备、存储介质和计算机程序产品。
背景技术
像素混合是在图形绘制流水线的输出合并阶段,常规方法是通过固定函数、对源值、和目标值进行指定的算术运算。
在图形绘制过程中,每个像素会调用一次像素着色器,并执行着色器中指令,最终会输出一个或零个像素。输出合并阶段从功能上可以划分为,深度测试单元和像素操作单元。深度测试单元的功能是根据当前像素的深度值以及存储单元中的深度值进行深度测试,如果测试结果成功,则将该像素传递给像素操作单元,否则丢掉该像素。像素操作单元的功能是将有效的像素的颜色值写入绘制对象中,存储深度值和颜色值的存储空间通常被称为帧缓冲,帧缓冲的数据经过交换后显示在屏幕上就称为一帧图像。
现有的像素混合技术可以支持常规的混合操作公式,而有些图形库还需要硬件支持更为复杂的混合操作公式,如OpenGL中需要支持高级混合,这些混合操作公式较多,同时会涉及复杂的数学计算,如在SOFTLIGHT_KHR混合操作模式中,需要计算平方根。现有的像素混合方法不能任意设定混合方程,灵活性和拓展性较差。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高灵活性和拓展性的可编程的像素混合流水线、方法、装置和计算机设备、存储介质和计算机程序产品。
第一方面,本申请提供了一种可编程的像素混合流水线。包括:
光栅化单元,用于对三角形进行光栅化;
输出合并单元,用于将在像素着色器上生成的单个片段的深度和着色与帧缓冲进行结合;
线程组装单元,用于组装硬件线程;
插值单元,用于根据像素着色器的输入属性进行插值,以及向执行单元发送线程结束的信号;
像素着色器构造单元,用于分配线程所需要的资源;
执行单元,用于执行各种着色器中的指令;
线程重叠检测单元,用于检测线程中的不同像素是否存在重叠;
线程排序单元,用于对不同线程进行排序,保证存在重叠像素的多个线程按照线程启动的顺序执行;
像素写回单元,用于从帧缓冲中读取当前线程中像素的颜色值并组装成为Quad返回给执行单元。
在其中一个实施例中,所述线程重叠检测单元具体包括:
三角形存储器,用于存储当前正在组装的线程中的三角形;其中,存储信息包括但不限于位置信息、像素的覆盖信息以及当前三角形是否有效的信息;
控制单元,用于接收输入三角形,并向所述三角形存储器发送读请求;
存储器读接口和存储器写接口,用于表示三角形存储器的读写接口;其中,存储器写接口还用于接收外部模块发送的释放请求,将待释放的三角形标记无效;
三角形重叠比较器,用于判断两个三角形之间在屏幕空间中是否存在重叠,若存在像素的重叠,则强制启动当前正在组装的线程;否则该输入三角形会被写入存储器,同时将该三角形转发至下级模块。
在其中一个实施例中,所述线排序单元具体包括:输入缓冲器,用于接收和存储输入三角形;
线程切分单元,用于根据线程信息中的Quad数目判断输入缓冲器中属于当前线程的三角形数量;若1个三角形跨越了2个线程,则将该三角形切分为两部分,前部分的子三角形属于当前线程,后半部分的子三角形属于后一个线程;
中间缓冲器,用于存储当前线程所包含的所有三角形;
三角形存储器,用于存储之前线程中的所有三角形;存储信息包括但不限于:位置信息、像素的覆盖信息以及当前三角形是否有效的信息;
三角形存储器控制单元,用于控制存储器的读写以及释放指定的三角形;
Hit/miss测试单元,用于将当前线程中的三角形和三角形存储器中的三角形进行比较,若二者在屏幕空间存在重叠,则认为Hit,否则为miss;若结果为Hit,则当前线程会被阻挡进入三角形存储器;若结果为miss,则将当前线程的所有三角形写入三角形存储器,同时向像素写回单元发送启动信号;
遍历单元,用于遍历中间缓冲器的所有三角形并写入三角形存储器中,同时向下级模块发送启动信号。
在其中一个实施例中,所述像素写回单元具体包括:地址计算单元,用于计算每个像素在存储空间中的地址;
内存访问接口是访问帧缓冲所在的物理空间的接口;
像素颜色缓存器,用于接收和存储帧缓冲返回的数据;
Quad组装单元,用于从像素缓存器中读取当前Quad的颜色数值,然后将颜色数值组装在Quad中;
格式转换单元,用于将渲染对象的像素存储格式转换为执行单元所需要的数据格式;
Quad合并单元,用于根据接口的宽度,组装最大数目的Quad数据,并发送给执行单元;在当前线程中的所有像素的颜色都返回给执行单元后,发送线程结束的信号给执行单元,执行单元接收到该信号之后开始执行线程中的指令
第二方面,本申请提供了一种可编程的像素混合方法。所述方法包括:
通过光栅化单元对第一三角形、第二三角形和第三三角形进行光栅化处理,获取各三角形对应的三角形覆盖信息;
将所述三角形覆盖信息分别发送至线程组装单元和线程排序单元,所述线程组装单元将所述第一三角形和第二三角形组装成为第一线程,并根据所述第一线程信息向申请线程接口申请线程;
基于线程信息缓存器、线程同步单元、线程排序单元、像素写回单元、插值单元和执行单元对所述第一线程进行执行;
所述第一线程执行完毕后,线程组装单元继续对所述第三三角形进行组装,完成对所述第三三角形的绘制。
在其中一个实施例中,所述基于第一线程信息缓存器、线程同步单元、线程排序单元、像素写回单元、插值单元和执行单元对所述第一线程进行执行包括:
第一线程信息缓存器接收并存储所述第一线程信息,线程同步单元根据所述第一线程信息从输入缓冲器中读取对应的三角形,同时将所述第一线程信息发送至线程排序单元和插值单元;
线程排序单元根据接收到的第一线程信息进行Hit/miss测试,若测试结果为miss,向像素写回单元发送启动信号;
像素写回单元从帧缓冲中读取所述第一线程中像素的颜色值,并将所述颜色值发送至执行单元;
插值单元根据接收到的所述第一线程的三角形信息,根据像素着色器中指定的输入属性的插值方式对三角形内部的像素点进行插值,并将插值结果发送至执行单元;
执行单元基于第一线程信息中各Quad的输入属性值以及像素写回单元返回的颜色值,执行像素着色器中的各指令,并在执行完成以后将颜色值发送至输出合并单元;
输出合并单元将颜色数据写入帧缓冲中,并向线程排序单元发送释放第一线程的请求信息。
在其中一个实施例中,所述线程组装单元继续对所述第三三角形进行组装,完成对所述第三三角形的绘制包括:
线程组装单元将所述第三三角形组装成为第二线程,线程排序单元根据接收到的第二线程信息进行Hit/miss测试,若测试结果为miss,向像素写回单元发送启动信号;
像素写回单元从帧缓冲中读取所述第二线程中像素的颜色值,并将所述颜色值发送至执行单元;
插值单元根据接收到的所述第二线程的三角形信息,根据像素着色器中指定的输入属性的插值方式对三角形内部的像素点进行插值,并将插值结果发送至执行单元;
执行单元基于第二线程信息中各Quad的输入属性值以及像素写回单元返回的颜色值,执行像素着色器中的各指令,并在执行完成以后将颜色值发送至输出合并单元;
输出合并单元将颜色数据写入帧缓冲中,并向线程排序单元发送释放第二线程的请求信息。
第三方面,本申请还提供了一种可编程的像素混合装置。所述装置包括:
光栅化模块,用于通过光栅化单元对第一三角形、第二三角形和第三三角形进行光栅化处理,获取各三角形对应的三角形覆盖信息;
组装模块,用于将所述三角形覆盖信息分别发送至线程组装单元和线程排序单元,所述线程组装单元将所述第一三角形和第二三角形组装成为第一线程,并根据所述第一线程信息向申请线程接口申请线程;
执行模块,用于基于线程信息缓存器、线程同步单元、线程排序单元、像素写回单元、插值单元和执行单元对所述第一线程进行执行;
输出合并模块,用于在所述第一线程执行完毕后,线程组装单元继续对所述第三三角形进行组装,完成对所述第三三角形的绘制。
第四方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
通过光栅化单元对第一三角形、第二三角形和第三三角形进行光栅化处理,获取各三角形对应的三角形覆盖信息;
将所述三角形覆盖信息分别发送至线程组装单元和线程排序单元,所述线程组装单元将所述第一三角形和第二三角形组装成为第一线程,并根据所述第一线程信息向申请线程接口申请线程;
基于线程信息缓存器、线程同步单元、线程排序单元、像素写回单元、插值单元和执行单元对所述第一线程进行执行;
所述第一线程执行完毕后,线程组装单元继续对所述第三三角形进行组装,完成对所述第三三角形的绘制。
第五方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:通过光栅化单元对第一三角形、第二三角形和第三三角形进行光栅化处理,获取各三角形对应的三角形覆盖信息;将所述三角形覆盖信息分别发送至线程组装单元和线程排序单元,所述线程组装单元将所述第一三角形和第二三角形组装成为第一线程,并根据所述第一线程信息向申请线程接口申请线程;基于线程信息缓存器、线程同步单元、线程排序单元、像素写回单元、插值单元和执行单元对所述第一线程进行执行;所述第一线程执行完毕后,线程组装单元继续对所述第三三角形进行组装,完成对所述第三三角形的绘制。
上述可编程的像素混合方法、装置、计算机设备、存储介质和计算机程序产品,通过光栅化单元对第一三角形、第二三角形和第三三角形进行光栅化处理,获取各三角形对应的三角形覆盖信息;将三角形覆盖信息分别发送至线程组装单元和线程排序单元,线程组装单元将所述第一三角形和第二三角形组装成为第一线程,并根据第一线程信息向申请线程接口申请线程,基于线程信息缓存器、线程同步单元、线程排序单元、像素写回单元、插值单元和执行单元对所述第一线程进行执行,在第一线程执行完毕后,线程组装单元继续对所述第三三角形进行组装,完成对第三三角形的绘制,提高了像素混合的灵活性和拓展性。
附图说明
图1为现有技术中图形绘制流水线的示意图;
图2为现有技术中实现颜色混合的硬件流水线示意图;
图3为一个实施例中可编程的像素混合流水线;
图4为现有技术中不支持可编程混合操作的流水线;
图5为一个实施例中线程重叠检测单元;
图6为一个实施例中线程排序单元示意图;
图7为一个实施例中像素写回单元示意图;
图8为一个实施例中一种可编程的像素混合方法;
图9为一个实施例中可编程的像素混合装置;
图10为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图形绘制流水线的示意图如图1所示,图1中的应用程序特指图形学绘制相关的应用程序;显卡驱动程序是硬件厂商根据操作系统编写的配置文件,是上层应用和显卡进行交互的桥梁;命令解析以及顶点组装单元具有两个功能,其一是接收显卡驱动程序发送的命令并派发给指定的硬件模块,另外一个功能是根据应用程序设定的拓扑类型组装图元并发送顶点给下级模块;顶点着色器接收一个顶点,并输出一个顶点;几何处理单元负责图元剪裁,视口转换以及三角形建立;光栅化单元负责计算图元中不同的点在屏幕空间中的覆盖信息;像素着色器接收一个像素,输出一个或零个像素;深度测试单元负责深度值的测试,并根据测试结果判断是否丢掉该像素;像素写回单元负责将有效的像素写入渲染对象。
像素混合通常是在像素写回单元进行的,它会将像素着色器输出的颜色值和渲染对象中的数值进行算术运算,并将运算后的结果作为最终的颜色值写入渲染对象中。像素混合是用来解决图形学中半透明物体的绘制问题,不同的像素可以有不同的透明度,其范围可以在完全透明和不透明中变化,因此,每个像素的颜色值,除了包括红绿蓝(RGB)三个颜色通道,还会有一个alpha通道,用来表示当前像素的透明度,取值范围为0到1,0代表完全透明,1代表不透明。因此,在Direct3D中像素混合被称为透明度混合。比如在屏幕的相同位置绘制两个三角形,第一个三角形颜色是纯白色,alpha数值是1,而第二个三角形是纯黑色,alpha数值是0.5,如果没有像素混合,那么最终画出来的颜色值是黑色,显然是不正确的;而通过像素混合之后颜色就变为了灰色。
针对图形绘制流水线中的颜色混合问题,图形处理单元(GPU)可以在像素写回单元通过设计算术逻辑单元(ALU)完成颜色混合公式的计算,并向渲染对象中写入最终的结果。对常规的颜色混合的公式进行描述:
其中,A表示源值,即像素着色器输出的颜色值;B表示源值的权重系数;C表示目标值,即渲染对象存储空间中的颜色值;D表示目标值的权重系数;表示操作码,包括加,减,最大,最小。
图2为实现颜色混合的硬件流水线示意图。图2中的地址计算及RAW检测单元的功能包括两部分,地址计算是根据当前像素的空间坐标以及渲染对象的其他属性计算当前像素在帧缓冲空间的存储地址,而RAW检测单元是为了保证从帧缓冲中读出来的数值是最新的值,即如果该像素在进行了写操作,则需要等到写操作完成以后,才可以向存储单元发送读操作,否则,读回来的值是错误的,将会导致混合的结果不正确。数据格式转换单元,是指将像素着色器输出的数值按照其存储格式转换为混合操作的ALU所需要的数据格式,这样设计的目的在于将着色器输出的颜色数据类型与ALU运算的数据类型解耦合,使之不依赖于像素着色器的输出数据格式。混合参数计算单元可以根据应用程序中指定的混合系数以及输入的源值和目标值,计算出源值和目标值的混20合系数,用于流水线下一阶段的输入。ALU是可以根据混合操作码的数值对输入值进行运算,并将结果传递给写回单元。
图2中的运算结果选择单元的功能是根据混合操作码的类型以及加法器的输出值选择最终的运算结果,并传递给写回单元。写回单元接收混合操作的输出结果,并对其进行格式转换,目标格式是渲染对象的存储格式,而数据的源格式为ALU运算所采用的数据格式。图2中的方法可以支持常规的混合操作公式,而有些图形库还需要硬件支持更为复杂的混合操作公式,如OpenGL中需要支持高级混合,这些混合操作公式较多,同时会涉及复杂的数学计算,如在SOFTLIGHT_KHR混合操作模式中,需要计算平方根。图2中的混合操作如果要支持该特性,则需要复杂的运算单元以及控制逻辑,而可编程的像素混合方法能够很好的解决这个问题。
因此,固定流水线的混合操作流水线方法通常存在以下不足:从芯片设计角度分析,固定ALU只能支持特定的操作码和数据格式,对于新增的数据格式和操作码,ALU通常需要重新设计;从芯片功耗角度分析,需要支持的操作码越多,则ALU中的晶体管数目越多,会增加芯片的功耗。
在一个实施例中,如图3所示,提供了一种可编程的像素混合流水线包括:
光栅化单元,用于对三角形进行光栅化;
输出合并单元,用于将在像素着色器上生成的单个片段的深度和着色与帧缓冲进行结合;
线程组装单元,用于组装硬件线程;
插值单元,用于根据像素着色器的输入属性进行插值,以及向执行单元发送线程结束的信号;
像素着色器构造单元,用于分配线程所需要的资源;
执行单元,用于执行各种着色器中的指令;
线程重叠检测单元,用于检测线程中的不同像素是否存在重叠;
线程排序单元,用于对不同线程进行排序,保证存在重叠像素的多个线程按照线程启动的顺序执行;
像素写回单元,用于从帧缓冲中读取当前线程中像素的颜色值并组装成为Quad返回给执行单元。
具体地,如图4所示为不支持可编程混合操作的流水线,具体包括:1、光栅化单元,其功能是对三角形进行光栅化,确定屏幕坐标中的哪些整型栅格区域被三角形占用。2、输出合并单元,其功能是将在像素着色器中生成的单个片段的深度和着色与帧缓冲结合在一起,在硬件中通常可以划为两部分,即深度测试单元和像素颜色操作单元;3、线程组装单元,其功能是组装硬件线程(Warp),基本流程如下:Quad统计单元会统计当前三角形中有多少个有效的Quad(2x2像素块),并更新quad总数;如果Quad总数大于等于Warp中所能容纳的Quad数目,或者满足其他边界条件(如当前三角形是绘制命令中最后一个三角形),则向申请线程接口发送申请线程请求。4、申请线程接口负责向像素着色器构造单元发出申请线程的请求,线程组装单元之后会收到线程构造单元返回的线程ID,并将线程ID和线程中的quad数目一并写入线程信息缓冲器中。线程同步单元收到线程信息后,则会从输入三角形缓冲器中读取输入当前线程的所有三角形,并将三角形信息和线程信息打包发送给插值单元。5、插值单元根据像素着色器的输入属性的插值模式进行插值,插值的方法是根据三角形三个顶点的属性插值计算当前线程所包含的Tile中的每个像素的属性值。向执行单元发送线程结束的信号,即发送完最后一笔数据之后,会通知执行单元该线程的属性值已经传输完毕。6、像素着色器构造单元是负责分配线程所需要的各种资源,如通用寄存器,线程槽等。7、执行单元,用于负责执行各种着色器中指令的单元,它会接收外部模块的输入值,并将最终计算结果输出给下级模块,如像素着色器会接收上级模块发送的每个quad的输入属性数值,并向下级模块输出颜色以及深度。
与图4的不支持可编程混合操作的流水线相比,图3的可编程的像素混合流水线还包括:线程重叠检测单元,用于检测线程中的不同像素是否存在重叠;线程排序单元,用于对不同线程进行排序,保证存在重叠像素的多个线程按照线程启动的顺序执行;像素写回单元,用于从帧缓冲中读取当前线程中像素的颜色值并组装成为Quad返回给执行单元。
本实施例中,在像素混合流水线中通过线程重叠检测单元检测线程中的不同像素是否存在重叠,通过线程排序单元对不同线程进行排序,保证存在重叠像素的多个线程按照线程启动的顺序执行,通过像素写回单元从帧缓冲中读取当前线程中像素的颜色值并组装成为Quad返回给执行单元,提高了像素混合操作公式的多样性及可拓展性,使得像素混合流水线能够适应未来图形库所需要的混合操作新特性,提高了像素混合流水线的灵活性和拓展性。
在一个实施例中,所述线程重叠检测单元具体包括:
三角形存储器,用于存储当前正在组装的线程中的三角形;其中,存储信息包括但不限于位置信息、像素的覆盖信息以及当前三角形是否有效的信息;
控制单元,用于接收输入三角形,并向所述三角形存储器发送读请求;
存储器读接口和存储器写接口,用于表示三角形存储器的读写接口;其中,存储器写接口还用于接收外部模块发送的释放请求,将待释放的三角形标记无效;
三角形重叠比较器,用于判断两个三角形之间在屏幕空间中是否存在重叠,若存在像素的重叠,则强制启动当前正在组装的线程;否则该输入三角形会被写入存储器,同时将该三角形转发至下级模块。
具体地,图5为线程重叠检测单元示意图,如图5所示,线程重叠检测单元包括三角形存储器,通过线程重叠检测单元存储当前正在组装的线程中的三角形;存储信息包括但不限于位置信息、像素的覆盖信息以及当前三角形是否有效的信息;通过控制单元接收输入三角形,并向所述三角形存储器发送读请求;通过存储器读接口和存储器写接口表示三角形存储器的读写接口;其中,存储器写接口还用于接收外部模块发送的释放请求,将待释放的三角形标记无效;以及通过三角形重叠比较器判断两个三角形之间在屏幕空间中是否存在重叠,若存在像素的重叠,则强制启动当前正在组装的线程;否则该输入三角形会被写入存储器,同时将该三角形转发至下级模块。
本实施例中,通过线程重叠检测单元对两个三角形之间是否存在屏幕空间中存在重叠进行检测,当存在像素的重叠,强制启动当前正在组装的线程;否则该输入三角形会被写入存储器,同时将三角形转发给下级模块,实现了将不同三角形组装进线程。
在一个实施例中,所述线程排序单元具体包括:输入缓冲器,用于接收和存储输入三角形;
线程切分单元,用于根据线程信息中的Quad数目判断输入缓冲器中属于当前线程的三角形数量;若1个三角形跨越了2个线程,则将该三角形切分为两部分,前部分的子三角形属于当前线程,后半部分的子三角形属于后一个线程;
中间缓冲器,用于存储当前线程所包含的所有三角形;
三角形存储器,用于存储之前线程中的所有三角形;存储信息包括但不限于:位置信息、像素的覆盖信息以及当前三角形是否有效的信息;
三角形存储器控制单元,用于控制存储器的读写以及释放指定的三角形;
Hit/miss测试单元,用于将当前线程中的三角形和三角形存储器中的三角形进行比较,若二者在屏幕空间存在重叠,则认为Hit,否则为miss;若结果为Hit,则当前线程会被阻挡进入三角形存储器;若结果为miss,则将当前线程的所有三角形写入三角形存储器,同时向像素写回单元发送启动信号;
遍历单元,用于遍历中间缓冲器的所有三角形并写入三角形存储器中,同时向下级模块发送启动信号。
具体地,图6为线程排序单元示意图,如图6所示,线排序单元包括输入缓冲器用于接收和存储输入三角形;线程切分单元用于根据线程信息中的Quad数目判断输入缓冲器中属于当前线程的三角形数量;若1个三角形跨越了2个线程,则将该三角形切分为两部分,前部分的子三角形属于当前线程,后半部分的子三角形属于后一个线程;中间缓冲器用于存储当前线程所包含的所有三角形;三角形存储器用于存储之前线程中的所有三角形;存储信息包括但不限于:位置信息、像素的覆盖信息以及当前三角形是否有效的信息;三角形存储器控制单元,用于控制存储器的读写以及释放指定的三角形;Hit/miss测试单元,用于将当前线程中的三角形和三角形存储器中的三角形进行比较,若二者在屏幕空间存在重叠,则认为Hit,否则为miss;若结果为Hit,则当前线程会被阻挡进入三角形存储器;若结果为miss,则将当前线程的所有三角形写入三角形存储器,同时向像素写回单元发送启动信号。遍历单元,用于遍历中间缓冲器的所有三角形并写入三角形存储器中,同时向下级模块发送启动信号。由于不同线程中可能存在重叠像素,处于就绪状态的线程会被挡住直到前面的线程执行完成后,该线程才可以去渲染对象存储空间读取数据。因此,硬件在线程执行过程中需要排序单元保证线程执行的先后顺序。
本实施例中,硬件在线程执行过程中通过设置排序单元保证线程执行的先后顺序,使得像素混合流水线能够适应未来图形库所需要的混合操作新特性,提高了像素混合流水线的灵活性和拓展性。
在一个实施例中,所述像素写回单元具体包括:地址计算单元,用于计算每个像素在存储空间中的地址;
内存访问接口是访问帧缓冲所在的物理空间的接口;
像素颜色缓存器,用于接收和存储帧缓冲返回的数据;
Quad组装单元,用于从像素缓存器中读取当前Quad的颜色数值,然后将颜色数值组装在Quad中;
格式转换单元,用于将渲染对象的像素存储格式转换为执行单元所需要的数据格式;
Quad合并单元,用于根据接口的宽度,组装最大数目的Quad数据,并发送给执行单元;在当前线程中的所有像素的颜色都返回给执行单元后,发送线程结束的信号给执行单元,执行单元接收到该信号之后开始执行线程中的指令。
具体地,图7为像素写回单元示意图,如图7所示,对于当前线程,需要硬件模块从帧缓冲中读取每个渲染对象的颜色,并将颜色写回到执行单元中的通用寄存器,当该线程中的最后一笔数据返回给写入通用寄存器后,需要通知执行单元需要数据读取结束,执行单元才可以开始执行线程中的指令。像素写回单元包括地址计算单元,用于计算每个像素在存储空间中的地址;内存访问接口是访问帧缓冲所在的物理空间的接口;像素颜色缓存器,用于接收和存储帧缓冲返回的数据;Quad组装单元,用于从像素缓存器中读取当前Quad的颜色数值,然后将颜色数值组装在Quad中;格式转换单元,用于将渲染对象的像素存储格式转换为执行单元所需要的数据格式;Quad合并单元,用于根据接口的宽度,组装最大数目的Quad数据,并发送给执行单元;在当前线程中的所有像素的颜色都返回给执行单元后,发送线程结束的信号给执行单元,执行单元接收到该信号之后开始执行线程中的指令。
本实施例中,对于当前线程,通过像素写回单元从帧缓冲中读取每个渲染对象的颜色,并将颜色写回到执行单元中的通用寄存器,当该线程中的最后一笔数据返回给写入通用寄存器后,需要通知执行单元需要数据读取结束,执行单元才可以开始执行线程中的指令,提高了像素混合流水线的灵活性和拓展性。
在一个实施例中,如图8所示,提供了一种可编程的像素混合方法,包括以下步骤:
步骤802,通过光栅化单元对第一三角形、第二三角形和第三三角形进行光栅化处理,获取各三角形对应的三角形覆盖信息。
具体地,通过光栅化单元对第一三角形、第二三角形和第三三角形进行光栅化处理,获取各三角形对应的三角形覆盖信息。例如将三角形1,三角形2和三角形3分别命名为T0,T1,T2,光栅化单元的功能是对三角形进行光栅化,即确定屏幕坐标中的哪些整型栅格区域被三角形占用。使用光栅化单元对T0,T1,T2进行光栅化,将三角形覆盖信息依次发送给线程组装单元和线程排序单元,获取第一三角形、第二三角形和第三三角形对应的三角形覆盖信息。
步骤804,将所述三角形覆盖信息分别发送至线程组装单元和线程排序单元,所述线程组装单元将所述第一三角形和第二三角形组装成为第一线程,并根据所述第一线程信息向申请线程接口申请线程。
具体地,T0,T1,T2分别进入输入缓冲器,将三角形覆盖信息分别发送至线程组装单元和线程排序单元,线程组装单元将第一三角形(T0)和第二三角形(T1)组装成为第一线程,并根据第一线程信息向申请线程接口申请线程,线程组装单元会将T0和T1组装为一个新线程,记为第一线程Warp0,并向申请线程接口发送申请线程。
步骤806,基于线程信息缓存器、线程同步单元、线程排序单元、像素写回单元、插值单元和执行单元对所述第一线程进行执行。
具体地,通过线程信息缓存器接收并存储第一线程信息,线程同步单元根据第一线程信息从输入缓冲器中读取对应的三角形,同时将第一线程信息发送至线程排序单元和插值单元,之后线程排序单元根据接收到的第一线程信息进行Hit/miss测试,若测试结果为miss,向像素写回单元发送启动信号,之后像素写回单元从帧缓冲中读取第一线程中像素的颜色值,并将颜色值发送至执行单元。插值单元根据接收到的第一线程的三角形信息,根据像素着色器中指定的输入属性的插值方式对三角形内部的像素点进行插值,并将插值结果发送至执行单元,执行单元基于第一线程信息中各Quad的输入属性值以及像素写回单元返回的颜色值,执行像素着色器中的各指令,并在执行完成以后将颜色值发送至输出合并单元。最后,输出合并单元将颜色数据写入帧缓冲中,并向线程排序单元发送释放第一线程的请求信息。
步骤808,所述第一线程执行完毕后,线程组装单元继续对所述第三三角形进行组装,完成对所述第三三角形的绘制。
具体地,第一线程Warp0执行完毕后,线程组装单元将所述第三三角形T2组装成为第二线程Warp1,线程排序单元根据接收到的第二线程信息进行Hit/miss测试,若测试结果为miss,向像素写回单元发送启动信号,像素写回单元从帧缓冲中读取所述第二线程Warp1中像素的颜色值,并将颜色值发送至执行单元。插值单元根据接收到的第二线程Warp1的三角形信息,根据像素着色器中指定的输入属性的插值方式对三角形内部的像素点进行插值,并将插值结果发送至执行单元,最后执行单元基于第二线程信息中各Quad的输入属性值以及像素写回单元返回的颜色值,执行像素着色器中的各指令,并在执行完成以后将颜色值发送至输出合并单元,输出合并单元将颜色数据写入帧缓冲中,并向线程排序单元发送释放第二线程Warp1的请求信息,完成对第三三角形T2的绘制。
上述可编程的像素混合方法中,通过光栅化单元对第一三角形、第二三角形和第三三角形进行光栅化处理,获取各三角形对应的三角形覆盖信息;将三角形覆盖信息分别发送至线程组装单元和线程排序单元,线程组装单元将所述第一三角形和第二三角形组装成为第一线程,并根据第一线程信息向申请线程接口申请线程,基于线程信息缓存器、线程同步单元、线程排序单元、像素写回单元、插值单元和执行单元对所述第一线程进行执行,在第一线程执行完毕后,线程组装单元继续对所述第三三角形进行组装,完成对第三三角形的绘制,提高了像素混合的灵活性和拓展性。
在一个实施例中,所述基于线程信息缓存器、线程同步单元、线程排序单元、像素写回单元、插值单元和执行单元对所述第一线程进行执行包括:
线程信息缓存器接收并存储所述第一线程信息,线程同步单元根据所述第一线程信息从输入缓冲器中读取对应的三角形,同时将所述第一线程信息发送至线程排序单元和插值单元;
线程排序单元根据接收到的第一线程信息进行Hit/miss测试,若测试结果为miss,向像素写回单元发送启动信号;
像素写回单元从帧缓冲中读取所述第一线程中像素的颜色值,并将所述颜色值发送至执行单元;
插值单元根据接收到的所述第一线程的三角形信息,根据像素着色器中指定的输入属性的插值方式对三角形内部的像素点进行插值,并将插值结果发送至执行单元;
执行单元基于第一线程信息中各Quad的输入属性值以及像素写回单元返回的颜色值,执行像素着色器中的各指令,并在执行完成以后将颜色值发送至输出合并单元;
输出合并单元将颜色数据写入帧缓冲中,并向线程排序单元发送释放第一线程的请求信息。
具体地,线程信息缓存器接收并存储第一线程信息,线程同步单元根据第一线程信息从输入缓冲器中读取对应的三角形即第一三角形和第二三角形,同时将第一线程信息发送至线程排序单元和插值单元。线程排序单元根据接收到的第一线程信息进行Hit/miss测试,经过测试,若测试结果为miss,向像素写回单元发送启动信号;插值单元根据接收到的第一线程的三角形信息,根据像素着色器中指定的输入属性的插值方式对三角形内部的像素点进行插值,并将插值结果发送至执行单元。像素写回单元从帧缓冲中读取所述第一线程中像素的颜色值,并将颜色值发送至执行单元;执行单元基于第一线程信息中各Quad的输入属性值以及像素写回单元返回的颜色值,执行像素着色器中的各指令,并在执行完成以后将颜色值发送至输出合并单元;输出合并单元将颜色数据写入帧缓冲中,并向线程排序单元发送释放第一线程的请求信息。
本实施例中,线程信息缓存器接收并存储所述第一线程信息,线程同步单元根据所述第一线程信息从输入缓冲器中读取对应的三角形,同时将所述第一线程信息发送至线程排序单元和插值单元,之后通过像素写回单元、插值单元以及执行单元执行获取颜色值,最后将颜色数据写入帧缓冲中,并申请释放第一线程,实现了对第一线程的执行。
在一个实施例中,所述线程组装单元继续对所述第三三角形进行组装,完成对所述第三三角形的绘制包括:
线程组装单元将所述第三三角形组装成为第二线程,线程排序单元根据接收到的第二线程信息进行Hit/miss测试,若测试结果为miss,向像素写回单元发送启动信号;
像素写回单元从帧缓冲中读取所述第二线程中像素的颜色值,并将所述颜色值发送至执行单元;
插值单元根据接收到的所述第二线程的三角形信息,根据像素着色器中指定的输入属性的插值方式对三角形内部的像素点进行插值,并将插值结果发送至执行单元;
执行单元基于第二线程信息中各Quad的输入属性值以及像素写回单元返回的颜色值,执行像素着色器中的各指令,并在执行完成以后将颜色值发送至输出合并单元;
输出合并单元将颜色数据写入帧缓冲中,并向线程排序单元发送释放第二线程的请求信息。
具体地,第一线程执行完成以后,线程组装单元将第三三角形T2组装成为第二线程Warp1,线程排序单元根据接收到的第二线程信息进行Hit/miss测试,若测试结果为miss,向像素写回单元发送启动信号;像素写回单元从帧缓冲中读取第二线程Warp1中像素的颜色值,并将颜色值发送至执行单元;插值单元根据接收到的第二线程的三角形信息,根据像素着色器中指定的输入属性的插值方式对三角形内部的像素点进行插值,并将插值结果发送至执行单元,执行单元基于第二线程信息中各Quad的输入属性值以及像素写回单元返回的颜色值,执行像素着色器中的各指令,并在执行完成以后将颜色值发送至输出合并单元,输出合并单元将颜色数据写入帧缓冲中,并向线程排序单元发送释放第二线程Warp1的请求信息。
本实施例中,在第一线程执行完成以后,基于线程信息缓存器、线程同步单元、线程排序单元、像素写回单元、插值单元和执行单元对所述第二线程进行执行完成对第三三角形的绘制,提高了像素混合的灵活性和拓展性。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的可编程的像素混合方法的可编程的像素混合装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个可编程的像素混合装置实施例中的具体限定可以参见上文中对于可编程的像素混合方法的限定,在此不再赘述。
在一个实施例中,如图9所示,提供了一种可编程的像素混合装置,包括:光栅化模块901、组装模块902和输出合并模块903,其中:
光栅化模块901,用于通过光栅化单元对第一三角形、第二三角形和第三三角形进行光栅化处理,获取各三角形对应的三角形覆盖信息;
组装模块902,用于将所述三角形覆盖信息分别发送至线程组装单元和线程排序单元,所述线程组装单元将所述第一三角形和第二三角形组装成为第一线程,并根据所述第一线程信息向申请线程接口申请线程;
执行模块903,用于基于线程信息缓存器、线程同步单元、线程排序单元、像素写回单元、插值单元和执行单元对所述第一线程进行执行;
输出合并模块904,用于在所述第一线程执行完毕后,线程组装单元继续对所述第三三角形进行组装,完成对所述第三三角形的绘制。
上述可编程的像素混合装置,通过光栅化单元对第一三角形、第二三角形和第三三角形进行光栅化处理,获取各三角形对应的三角形覆盖信息;将三角形覆盖信息分别发送至线程组装单元和线程排序单元,线程组装单元将所述第一三角形和第二三角形组装成为第一线程,并根据第一线程信息向申请线程接口申请线程,基于线程信息缓存器、线程同步单元、线程排序单元、像素写回单元、插值单元和执行单元对所述第一线程进行执行,在第一线程执行完毕后,线程组装单元继续对所述第三三角形进行组装,完成对第三三角形的绘制,提高了像素混合的灵活性和拓展性。
上述可编程的像素混合装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种可编程的像素混合方法。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:通过光栅化单元对第一三角形、第二三角形和第三三角形进行光栅化处理,获取各三角形对应的三角形覆盖信息;将所述三角形覆盖信息分别发送至线程组装单元和线程排序单元,所述线程组装单元将所述第一三角形和第二三角形组装成为第一线程,并根据所述第一线程信息向申请线程接口申请线程;基于线程信息缓存器、线程同步单元、线程排序单元、像素写回单元、插值单元和执行单元对所述第一线程进行执行;所述第一线程执行完毕后,线程组装单元继续对所述第三三角形进行组装,完成对所述第三三角形的绘制。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:线程组装单元将所述第三三角形组装成为第二线程,线程排序单元根据接收到的第二线程信息进行Hit/miss测试,若测试结果为miss,向像素写回单元发送启动信号;像素写回单元从帧缓冲中读取所述第二线程中像素的颜色值,并将所述颜色值发送至执行单元;插值单元根据接收到的所述第二线程的三角形信息,根据像素着色器中指定的输入属性的插值方式对三角形内部的像素点进行插值,并将插值结果发送至执行单元;执行单元基于第二线程信息中各Quad的输入属性值以及像素写回单元返回的颜色值,执行像素着色器中的各指令,并在执行完成以后将颜色值发送至输出合并单元;输出合并单元将颜色数据写入帧缓冲中,并向线程排序单元发送释放第二线程的请求信息。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:通过光栅化单元对第一三角形、第二三角形和第三三角形进行光栅化处理,获取各三角形对应的三角形覆盖信息;将所述三角形覆盖信息分别发送至线程组装单元和线程排序单元,所述线程组装单元将所述第一三角形和第二三角形组装成为第一线程,并根据所述第一线程信息向申请线程接口申请线程;基于线程信息缓存器、线程同步单元、线程排序单元、像素写回单元、插值单元和执行单元对所述第一线程进行执行;所述第一线程执行完毕后,线程组装单元继续对所述第三三角形进行组装,完成对所述第三三角形的绘制。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:线程组装单元将所述第三三角形组装成为第二线程,线程排序单元根据接收到的第二线程信息进行Hit/miss测试,若测试结果为miss,向像素写回单元发送启动信号;像素写回单元从帧缓冲中读取所述第二线程中像素的颜色值,并将所述颜色值发送至执行单元;插值单元根据接收到的所述第二线程的三角形信息,根据像素着色器中指定的输入属性的插值方式对三角形内部的像素点进行插值,并将插值结果发送至执行单元;执行单元基于第二线程信息中各Quad的输入属性值以及像素写回单元返回的颜色值,执行像素着色器中的各指令,并在执行完成以后将颜色值发送至输出合并单元;输出合并单元将颜色数据写入帧缓冲中,并向线程排序单元发送释放第二线程的请求信息。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种可编程的像素混合流水线,其特征在于,包括:
光栅化单元,用于对三角形进行光栅化;
输出合并单元,用于将在像素着色器上生成的单个片段的深度和着色与帧缓冲进行结合;
线程组装单元,用于组装硬件线程;
插值单元,用于根据像素着色器的输入属性进行插值,以及向执行单元发送线程结束的信号;
像素着色器构造单元,用于分配线程所需要的资源;
执行单元,用于执行各种着色器中的指令;
线程重叠检测单元,用于检测线程中的不同像素是否存在重叠;
线程排序单元,用于对不同线程进行排序,保证存在重叠像素的多个线程按照线程启动的顺序执行;
像素写回单元,用于从帧缓冲中读取当前线程中像素的颜色值并组装成为Quad返回给执行单元。
2.根据权利要求1所述的可编程的像素混合流水线,其特征在于,所述线程重叠检测单元具体包括:
三角形存储器,用于存储当前正在组装的线程中的三角形;其中,存储信息包括但不限于位置信息、像素的覆盖信息以及当前三角形是否有效的信息;
控制单元,用于接收输入三角形,并向所述三角形存储器发送读请求;
存储器读接口和存储器写接口,用于表示三角形存储器的读写接口;其中,存储器写接口还用于接收外部模块发送的释放请求,将待释放的三角形标记无效;
三角形重叠比较器,用于判断两个三角形之间在屏幕空间中是否存在重叠,若存在像素的重叠,则强制启动当前正在组装的线程;否则该输入三角形会被写入存储器,同时将该三角形转发至下级模块。
3.根据权利要求2所述的可编程的像素混合流水线,其特征在于,所述线排序单元具体包括:
输入缓冲器,用于接收和存储输入三角形;
线程切分单元,用于根据线程信息中的Quad数目判断输入缓冲器中属于当前线程的三角形数量;若1个三角形跨越了2个线程,则将该三角形切分为两部分,前部分的子三角形属于当前线程,后半部分的子三角形属于后一个线程;
中间缓冲器,用于存储当前线程所包含的所有三角形;
三角形存储器,用于存储之前线程中的所有三角形;存储信息包括但不限于:位置信息、像素的覆盖信息以及当前三角形是否有效的信息;
三角形存储器控制单元,用于控制存储器的读写以及释放指定的三角形;
Hit/miss测试单元,用于将当前线程中的三角形和三角形存储器中的三角形进行比较,若二者在屏幕空间存在重叠,则认为Hit,否则为miss;若结果为Hit,则当前线程会被阻挡进入三角形存储器;若结果为miss,则将当前线程的所有三角形写入三角形存储器,同时向像素写回单元发送启动信号;
遍历单元,用于遍历中间缓冲器的所有三角形并写入三角形存储器中,同时向下级模块发送启动信号。
4.根据权利要求3所述的可编程的像素混合流水线,其特征在于,所述像素写回单元具体包括:
地址计算单元,用于计算每个像素在存储空间中的地址;
内存访问接口是访问帧缓冲所在的物理空间的接口;
像素颜色缓存器,用于接收和存储帧缓冲返回的数据;
Quad组装单元,用于从像素缓存器中读取当前Quad的颜色数值,然后将颜色数值组装在Quad中;
格式转换单元,用于将渲染对象的像素存储格式转换为执行单元所需要的数据格式;
Quad合并单元,用于根据接口的宽度,组装最大数目的Quad数据,并发送给执行单元;在当前线程中的所有像素的颜色都返回给执行单元后,发送线程结束的信号给执行单元,执行单元接收到该信号之后开始执行线程中的指令。
5.一种可编程的像素混合方法,适用于权利要求1中的可编程的像素混合流水线,其特征在于,所述方法包括:
通过光栅化单元对第一三角形、第二三角形和第三三角形进行光栅化处理,获取各三角形对应的三角形覆盖信息;
将所述三角形覆盖信息分别发送至线程组装单元和线程排序单元,所述线程组装单元将所述第一三角形和第二三角形组装成为第一线程,并根据所述第一线程信息向申请线程接口申请线程;
基于线程信息缓存器、线程同步单元、线程排序单元、像素写回单元、插值单元和执行单元对所述第一线程进行执行;
所述第一线程执行完毕后,线程组装单元继续对所述第三三角形进行组装,完成对所述第三三角形的绘制。
6.根据权利要求5所述的方法,其特征在于,所述基于线程信息缓存器、线程同步单元、线程排序单元、像素写回单元、插值单元和执行单元对所述第一线程进行执行包括:
线程信息缓存器接收并存储所述第一线程信息,线程同步单元根据所述第一线程信息从输入缓冲器中读取对应的三角形,同时将所述第一线程信息发送至线程排序单元和插值单元;
线程排序单元根据接收到的第一线程信息进行Hit/miss测试,若测试结果为miss,向像素写回单元发送启动信号;
像素写回单元从帧缓冲中读取所述第一线程中像素的颜色值,并将所述颜色值发送至执行单元;
插值单元根据接收到的所述第一线程的三角形信息,根据像素着色器中指定的输入属性的插值方式对三角形内部的像素点进行插值,并将插值结果发送至执行单元;
执行单元基于第一线程信息中各Quad的输入属性值以及像素写回单元返回的颜色值,执行像素着色器中的各指令,并在执行完成以后将颜色值发送至输出合并单元;
输出合并单元将颜色数据写入帧缓冲中,并向线程排序单元发送释放第一线程的请求信息。
7.根据权利要求6所述的方法,其特征在于,所述线程组装单元继续对所述第三三角形进行组装,完成对所述第三三角形的绘制包括:
线程组装单元将所述第三三角形组装成为第二线程,线程排序单元根据接收到的第二线程信息进行Hit/miss测试,若测试结果为miss,向像素写回单元发送启动信号;
像素写回单元从帧缓冲中读取所述第二线程中像素的颜色值,并将所述颜色值发送至执行单元;
插值单元根据接收到的所述第二线程的三角形信息,根据像素着色器中指定的输入属性的插值方式对三角形内部的像素点进行插值,并将插值结果发送至执行单元;
执行单元基于第二线程信息中各Quad的输入属性值以及像素写回单元返回的颜色值,执行像素着色器中的各指令,并在执行完成以后将颜色值发送至输出合并单元;
输出合并单元将颜色数据写入帧缓冲中,并向线程排序单元发送释放第二线程的请求信息。
8.一种可编程的像素混合装置,其特征在于,所述装置包括:
光栅化模块,用于通过光栅化单元对第一三角形、第二三角形和第三三角形进行光栅化处理,获取各三角形对应的三角形覆盖信息;
组装模块,用于将所述三角形覆盖信息分别发送至线程组装单元和线程排序单元,所述线程组装单元将所述第一三角形和第二三角形组装成为第一线程,并根据所述第一线程信息向申请线程接口申请线程;
执行模块,用于基于线程信息缓存器、线程同步单元、线程排序单元、像素写回单元、插值单元和执行单元对所述第一线程进行执行;
输出合并模块,用于在所述第一线程执行完毕后,线程组装单元继续对所述第三三角形进行组装,完成对所述第三三角形的绘制。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求5至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求5至7中任一项所述的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210801663.8A CN117409088A (zh) | 2022-07-08 | 2022-07-08 | 可编程的像素混合流水线、方法、装置和计算机设备 |
US18/219,441 US20240013469A1 (en) | 2022-07-08 | 2023-07-07 | Programmable pixel blending pipeline, programmable pixel blending method and apparatus, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210801663.8A CN117409088A (zh) | 2022-07-08 | 2022-07-08 | 可编程的像素混合流水线、方法、装置和计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117409088A true CN117409088A (zh) | 2024-01-16 |
Family
ID=89431717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210801663.8A Pending CN117409088A (zh) | 2022-07-08 | 2022-07-08 | 可编程的像素混合流水线、方法、装置和计算机设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20240013469A1 (zh) |
CN (1) | CN117409088A (zh) |
-
2022
- 2022-07-08 CN CN202210801663.8A patent/CN117409088A/zh active Pending
-
2023
- 2023-07-07 US US18/219,441 patent/US20240013469A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240013469A1 (en) | 2024-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11954803B2 (en) | Generation of a control stream for a tile | |
US9449421B2 (en) | Method and apparatus for rendering image data | |
US9953455B2 (en) | Handling post-Z coverage data in raster operations | |
US9412193B2 (en) | Run-time optimized shader program | |
US9495721B2 (en) | Efficient super-sampling with per-pixel shader threads | |
KR100909153B1 (ko) | 그래픽 파이프라인 서브유닛을 디버깅하기 위한 방법 및시스템 | |
JP3030206B2 (ja) | グラフィック多角形をクリップ領域にクリップする方法および装置 | |
CN103810669B (zh) | 在统一l2高速缓存中高速缓存经适应性定制大小的高速缓存像素块 | |
JP3885262B2 (ja) | テクスチャマップ上の複数画素を混合する方法及び、これを用いた複数画素混合回路と画像処理装置 | |
WO2006051330A1 (en) | Processing of 3-dimensional graphics | |
KR20080067840A (ko) | 3차원 그래픽 가속기 및 그것의 픽셀 분배 방법 | |
US9747692B2 (en) | Rendering apparatus and method | |
CN103871019B (zh) | 用于处理路径图像以促进光栅化的方法和设备 | |
TWI425440B (zh) | 複合多重樣本/超樣本抗頻疊 | |
US10825129B2 (en) | Eliminating off screen passes using memoryless render target | |
KR100823373B1 (ko) | 3차원 그래픽 서브시스템들에서의 텍스쳐 맵 데이터의프로그램 가능 필터링을 위한 방법 및 메카니즘 | |
JP4637640B2 (ja) | 図形描画装置 | |
US20150049110A1 (en) | Rendering using multiple render target sample masks | |
US9082212B2 (en) | Programmable blending via multiple pixel shader dispatches | |
TWI395152B (zh) | 繪圖處理單元及處理邊框顏色資訊之方法 | |
JP2023525725A (ja) | データ圧縮の方法及び装置 | |
CN116385253B (zh) | 图元绘制方法、装置、计算机设备和存储介质 | |
US11107264B2 (en) | Graphics processing systems for determining blending operations | |
US20160267702A1 (en) | Graphics processing systems | |
CN117409088A (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Country or region after: China Address after: 200135, 11th Floor, Building 3, No. 889 Bibo Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai Applicant after: Granfei Intelligent Technology Co.,Ltd. Address before: 200135 Room 201, No. 2557, Jinke Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai Applicant before: Gryfield Intelligent Technology Co.,Ltd. Country or region before: China |