xref: /aosp_15_r20/external/deqp/framework/referencerenderer/design.txt (revision 35238bce31c2a825756842865a792f8cf7f89930)
1*35238bceSAndroid Build Coastguard WorkerReference Renderer Design Notes
2*35238bceSAndroid Build Coastguard Worker-------------------------------
3*35238bceSAndroid Build Coastguard Worker
4*35238bceSAndroid Build Coastguard WorkerRequirements:
5*35238bceSAndroid Build Coastguard Worker - must support arbitrary VA arrays
6*35238bceSAndroid Build Coastguard Worker - must support primitive setup reference
7*35238bceSAndroid Build Coastguard Worker - must support lines, points
8*35238bceSAndroid Build Coastguard Worker - must support instancing
9*35238bceSAndroid Build Coastguard Worker - must support vertex shading -> custom position transformations
10*35238bceSAndroid Build Coastguard Worker - flat, noperspective shading
11*35238bceSAndroid Build Coastguard Worker - multiple render targets
12*35238bceSAndroid Build Coastguard Worker - faster shading? move packet loop inside shader
13*35238bceSAndroid Build Coastguard Worker   (helper class can make shader implementation easier)
14*35238bceSAndroid Build Coastguard Worker - can be extended for tessellation and geometry shading
15*35238bceSAndroid Build Coastguard Worker
16*35238bceSAndroid Build Coastguard WorkerIntegrate with:
17*35238bceSAndroid Build Coastguard Worker - sglr
18*35238bceSAndroid Build Coastguard Worker - random shader generator
19*35238bceSAndroid Build Coastguard Worker
20*35238bceSAndroid Build Coastguard WorkerUniforms:
21*35238bceSAndroid Build Coastguard Worker - shader objects can contain parameters, renderer doesn't care about them
22*35238bceSAndroid Build Coastguard Worker - can contain simple data or references to resources (textures for example)
23*35238bceSAndroid Build Coastguard Worker
24*35238bceSAndroid Build Coastguard WorkerPipeline:
25*35238bceSAndroid Build Coastguard Worker
26*35238bceSAndroid Build Coastguard WorkerVertex cache:
27*35238bceSAndroid Build Coastguard Worker - based on indices setup transformed vertex buffer
28*35238bceSAndroid Build Coastguard Worker - in:
29*35238bceSAndroid Build Coastguard Worker   + index list
30*35238bceSAndroid Build Coastguard Worker   + VS generic output count
31*35238bceSAndroid Build Coastguard Worker - out:
32*35238bceSAndroid Build Coastguard Worker   + VS execution queue
33*35238bceSAndroid Build Coastguard Worker   + index remap information?
34*35238bceSAndroid Build Coastguard Worker - trivial implementation:
35*35238bceSAndroid Build Coastguard Worker   + run VS for all vertices at once
36*35238bceSAndroid Build Coastguard Worker
37*35238bceSAndroid Build Coastguard WorkerVertexShader:
38*35238bceSAndroid Build Coastguard Worker - provides position & point size
39*35238bceSAndroid Build Coastguard Worker - transforms other vertices
40*35238bceSAndroid Build Coastguard Worker - in:
41*35238bceSAndroid Build Coastguard Worker   + VertexAttrib array
42*35238bceSAndroid Build Coastguard Worker   + packet list:
43*35238bceSAndroid Build Coastguard Worker     + VertexID, InstanceID (pack into some accessor?)
44*35238bceSAndroid Build Coastguard Worker   + uniform ptr
45*35238bceSAndroid Build Coastguard Worker - out:
46*35238bceSAndroid Build Coastguard Worker   + position
47*35238bceSAndroid Build Coastguard Worker   + point size
48*35238bceSAndroid Build Coastguard Worker   + array of generic transformed attributes (float/int/uint)
49*35238bceSAndroid Build Coastguard Worker
50*35238bceSAndroid Build Coastguard WorkerTessellation:
51*35238bceSAndroid Build Coastguard Worker - \todo [pyry] Define
52*35238bceSAndroid Build Coastguard Worker - replaces primitive assembly?
53*35238bceSAndroid Build Coastguard Worker
54*35238bceSAndroid Build Coastguard WorkerPrimitive assembly:
55*35238bceSAndroid Build Coastguard Worker - sets up primitives
56*35238bceSAndroid Build Coastguard Worker - gl3: triangles, points, lines (adjecency?)
57*35238bceSAndroid Build Coastguard Worker - in:
58*35238bceSAndroid Build Coastguard Worker   + full primitive type
59*35238bceSAndroid Build Coastguard Worker   + index list
60*35238bceSAndroid Build Coastguard Worker   + position & point size from VS
61*35238bceSAndroid Build Coastguard Worker - out:
62*35238bceSAndroid Build Coastguard Worker   + primitive list for rasterization / geometry shading
63*35238bceSAndroid Build Coastguard Worker     + positions
64*35238bceSAndroid Build Coastguard Worker	 + provoking vertex for flatshading
65*35238bceSAndroid Build Coastguard Worker
66*35238bceSAndroid Build Coastguard WorkerGeometryShader:
67*35238bceSAndroid Build Coastguard Worker - in:
68*35238bceSAndroid Build Coastguard Worker   + primitive list
69*35238bceSAndroid Build Coastguard Worker - out:
70*35238bceSAndroid Build Coastguard Worker   + changed primitive list
71*35238bceSAndroid Build Coastguard Worker
72*35238bceSAndroid Build Coastguard WorkerCoordinate transform:
73*35238bceSAndroid Build Coastguard Worker - in:
74*35238bceSAndroid Build Coastguard Worker   + primitive list
75*35238bceSAndroid Build Coastguard Worker - out:
76*35238bceSAndroid Build Coastguard Worker   + coordinates after viewport transform
77*35238bceSAndroid Build Coastguard Worker   + z-clipping bits
78*35238bceSAndroid Build Coastguard Worker
79*35238bceSAndroid Build Coastguard WorkerRasterizer:
80*35238bceSAndroid Build Coastguard Worker - pretty much as it is currently
81*35238bceSAndroid Build Coastguard Worker
82*35238bceSAndroid Build Coastguard WorkerFragmentShader:
83*35238bceSAndroid Build Coastguard Worker - in:
84*35238bceSAndroid Build Coastguard Worker   + packet list:
85*35238bceSAndroid Build Coastguard Worker     + base coordinates
86*35238bceSAndroid Build Coastguard Worker	 + barycentrics, both perspective and non-perspective
87*35238bceSAndroid Build Coastguard Worker	 + generic attribute accessor (2 or 3 vertices)
88*35238bceSAndroid Build Coastguard Worker	 + provoking vertex index
89*35238bceSAndroid Build Coastguard Worker   + uniform ptr
90*35238bceSAndroid Build Coastguard Worker - out:
91*35238bceSAndroid Build Coastguard Worker   + shaded packet list:
92*35238bceSAndroid Build Coastguard Worker     + colors per render target
93*35238bceSAndroid Build Coastguard Worker	 + modified live mask - for discard
94*35238bceSAndroid Build Coastguard Worker - utils:
95*35238bceSAndroid Build Coastguard Worker   + compute derivatives from data in SoA form
96*35238bceSAndroid Build Coastguard Worker   + compute lod for texturing
97