freedreno: Fix layered rendering to just Z/S and not color.
We would try to take the gmem path which can't do layered rendering. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13653>
This commit is contained in:
parent
7c8fee6049
commit
14fca01b32
|
@ -313,10 +313,6 @@ spec@ext_packed_float@query-rgba-signed-components,Fail
|
|||
spec@ext_packed_float@texwrap formats bordercolor-swizzled,Fail
|
||||
spec@ext_packed_float@texwrap formats bordercolor-swizzled@GL_R11F_G11F_B10F- swizzled- border color only,Fail
|
||||
|
||||
# "../src/gallium/drivers/freedreno/a6xx/fd6_gmem.c:976:emit_blit: Assertion `psurf->u.tex.first_layer == psurf->u.tex.last_layer' failed."
|
||||
spec@ext_texture_array@fbo-depth-array depth-layered-clear,Crash
|
||||
spec@ext_texture_array@fbo-depth-array stencil-layered-clear,Crash
|
||||
|
||||
spec@ext_texture_compression_rgtc@texwrap formats bordercolor-swizzled,Fail
|
||||
spec@ext_texture_compression_rgtc@texwrap formats bordercolor-swizzled@GL_COMPRESSED_RED_RGTC1- swizzled- border color only,Fail
|
||||
spec@ext_texture_compression_rgtc@texwrap formats bordercolor-swizzled@GL_COMPRESSED_RG_RGTC2- swizzled- border color only,Fail
|
||||
|
@ -606,6 +602,3 @@ spec@!opengl 3.0@clearbuffer-depth-cs-probe,Timeout
|
|||
spec@!opengl 3.0@clearbuffer-depth,Fail
|
||||
spec@!opengl 3.0@clearbuffer-stencil,Fail
|
||||
spec@!opengl 3.1@primitive-restart-xfb generated,Fail
|
||||
|
||||
# "../src/gallium/drivers/freedreno/a6xx/fd6_gmem.c:976:emit_blit: Assertion `psurf->u.tex.first_layer == psurf->u.tex.last_layer' failed."
|
||||
spec@!opengl 3.2@layered-rendering@clear-depth,Crash
|
||||
|
|
|
@ -78,6 +78,10 @@ emit_mrt(struct fd_ringbuffer *ring, struct pipe_framebuffer_state *pfb,
|
|||
unsigned srgb_cntl = 0;
|
||||
unsigned i;
|
||||
|
||||
/* Note, GLES 3.2 says "If the fragment’s layer number is negative, or
|
||||
* greater than or equal to the minimum number of layers of any attachment,
|
||||
* the effects of the fragment on the framebuffer contents are undefined."
|
||||
*/
|
||||
unsigned max_layer_index = 0;
|
||||
enum a6xx_format mrt0_format = 0;
|
||||
|
||||
|
@ -139,6 +143,8 @@ emit_mrt(struct fd_ringbuffer *ring, struct pipe_framebuffer_state *pfb,
|
|||
if (i == 0)
|
||||
mrt0_format = format;
|
||||
}
|
||||
if (pfb->zsbuf)
|
||||
max_layer_index = pfb->zsbuf->u.tex.last_layer - pfb->zsbuf->u.tex.first_layer;
|
||||
|
||||
OUT_REG(ring, A6XX_GRAS_LRZ_MRT_BUF_INFO_0(.color_format = mrt0_format));
|
||||
|
||||
|
|
|
@ -709,6 +709,8 @@ fd_gmem_render_tiles(struct fd_batch *batch)
|
|||
if (psurf->u.tex.first_layer < psurf->u.tex.last_layer)
|
||||
sysmem = true;
|
||||
}
|
||||
if (pfb->zsbuf && pfb->zsbuf->u.tex.first_layer < pfb->zsbuf->u.tex.last_layer)
|
||||
sysmem = true;
|
||||
|
||||
/* Tessellation doesn't seem to support tiled rendering so fall back to
|
||||
* bypass.
|
||||
|
|
Loading…
Reference in New Issue