Allow early z-test and early-lrz (if applicable)
Disable early z-test and early-lrz test (if applicable)
A special mode that allows early-lrz test but disables
early-z test. Which might sound a bit funny, since
lrz-test happens before z-test. But as long as a couple
conditions are maintained this allows using lrz-test in
cases where fragment shader has kill/discard:
1) Disable lrz-write in cases where it is uncertain during
binning pass that a fragment will pass. Ie. if frag
shader has-kill, writes-z, or alpha/stencil test is
enabled. (For correctness, lrz-write must be disabled
when blend is enabled.) This is analogous to how a
z-prepass works.
2) Disable lrz-write and test if a depth-test direction
reversal is detected. Due to condition (1), the contents
of the lrz buffer are a conservative estimation of the
depth buffer during the draw pass. Meaning that geometry
that we know for certain will not be visible will not pass
lrz-test. But geometry which may be (or contributes to
blend) will pass the lrz-test.
This allows us to keep early-lrz-test in cases where the frag
shader does not write-z (ie. we know the z-value before FS)
and does not have side-effects (image/ssbo writes, etc), but
does have kill/discard. Which turns out to be a common
enough case that it is useful to keep early-lrz test against
the conservative lrz buffer to discard fragments that we
know will definitely not be visible.
b0..7 seems to contain the size of buffered by not yet processed
RB level cmdstream.. it's possible that it is a low threshold
and b8..15 is a high threshold?
b16..23 identifies where IB1 data starts (and RB data ends?)
b24..31 identifies where IB2 data starts (and IB1 data ends)
low bits identify where CP_SET_DRAW_STATE stateobj
processing starts (and IB2 data ends). I'm guessing
b8 is part of this since (from downstream kgsl):
/* ROQ sizes are twice as big on a640/a680 than on a630 */
if (adreno_is_a640(adreno_dev) || adreno_is_a680(adreno_dev)) {
kgsl_regwrite(device, A6XX_CP_ROQ_THRESHOLDS_2, 0x02000140);
kgsl_regwrite(device, A6XX_CP_ROQ_THRESHOLDS_1, 0x8040362C);
} ...
number of remaining dwords incl current dword being consumed?
number of remaining dwords incl current dword being consumed?
Configures the mapping between VSC_PIPE buffer and
bin, X/Y specify the bin index in the horiz/vert
direction (0,0 is upper left, 0,1 is leftmost bin
on second row, and so on). W/H specify the number
of bins assigned to this VSC_PIPE in the horiz/vert
dimension.
Seems to be a bitmap of which tiles mapped to the VSC
pipe contain geometry.
I suppose we can connect a maximum of 32 tiles to a
single VSC pipe.
Has the size of data written to corresponding VSC_PRIM_STRM
buffer.
Has the size of data written to corresponding VSC pipe, ie.
same thing that is written out to VSC_DRAW_STRM_SIZE_ADDRESS_LO/HI
LRZ write also disabled for blend/etc.
update MAX instead of MIN value, ie. GL_GREATER/GL_GEQUAL
Z_TEST_ENABLE bit is set for zfunc other than GL_ALWAYS or GL_NEVER
also set when Z_BOUNDS_ENABLE is set
stride of depth/stencil buffer
size of layer
stride of stencil buffer
size of layer
For clearing depth/stencil
1 - depth
2 - stencil
3 - depth+stencil
For clearing color buffer:
then probably a component mask, I always see 0xf
num of varyings plus four for gl_Position (plus one if gl_PointSize)
plus # of transform-feedback (streamout) varyings if using the
hw streamout (rather than stg instructions in shader)
num of varyings plus four for gl_Position (plus one if gl_PointSize)
plus # of transform-feedback (streamout) varyings if using the
hw streamout (rather than stg instructions in shader)
domain shader version of VPC_PACK
vertex shader
num of varyings plus four for gl_Position (plus one if gl_PointSize)
plus # of transform-feedback (streamout) varyings if using the
hw streamout (rather than stg instructions in shader)
geometry shader
hull shader?
num of varyings plus four for gl_Position (plus one if gl_PointSize)
plus # of transform-feedback (streamout) varyings if using the
hw streamout (rather than stg instructions in shader)
domain shader
num of varyings plus four for gl_Position (plus one if gl_PointSize)
plus # of transform-feedback (streamout) varyings if using the
hw streamout (rather than stg instructions in shader)
geometry shader
size in vec4s of per-primitive storage for gs
per MRT
Texture sampler dwords
Texture constant dwords
Pitch in bytes (so actually stride)
Pitch in bytes (so actually stride)