From 1db3ebd8a582e490a2ec32df14009125bddd7d4d Mon Sep 17 00:00:00 2001 From: Jordan Justen Date: Wed, 21 May 2014 22:34:26 +0000 Subject: meta blit: Set Z texcoord during meta blit to sample the correct layer If the source renderbuffer has a depth > 0, then send a Z texcoord which is set to the source attachment Z offset. This fixes piglit's gl-3.2-layered-rendering-gl-layer-render with the GL_TEXTURE_2D_MULTISAMPLE_ARRAY case test on i965/gen8. Signed-off-by: Jordan Justen Reviewed-by: Anuj Phogat Cc: "10.2" (cherry picked from commit 57876fee3872f4f224feeeb56eea6d2e10858fe9) --- src/mesa/drivers/common/meta_blit.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/mesa/drivers/common/meta_blit.c b/src/mesa/drivers/common/meta_blit.c index e10a181d68b..753affff8ae 100644 --- a/src/mesa/drivers/common/meta_blit.c +++ b/src/mesa/drivers/common/meta_blit.c @@ -328,7 +328,10 @@ setup_glsl_blit_framebuffer(struct gl_context *ctx, /* target = GL_TEXTURE_RECTANGLE is not supported in GLES 3.0 */ assert(_mesa_is_desktop_gl(ctx) || target == GL_TEXTURE_2D); - _mesa_meta_setup_vertex_objects(&blit->VAO, &blit->VBO, true, 2, 2, 0); + unsigned texcoord_size = 2 + (src_rb->Depth > 1 ? 1 : 0); + + _mesa_meta_setup_vertex_objects(&blit->VAO, &blit->VBO, true, + 2, texcoord_size, 0); if (target == GL_TEXTURE_2D_MULTISAMPLE || target == GL_TEXTURE_2D_MULTISAMPLE_ARRAY) { @@ -533,12 +536,16 @@ blitframebuffer_texture(struct gl_context *ctx, verts[0].tex[0] = s0; verts[0].tex[1] = t0; + verts[0].tex[2] = readAtt->Zoffset; verts[1].tex[0] = s1; verts[1].tex[1] = t0; + verts[1].tex[2] = readAtt->Zoffset; verts[2].tex[0] = s1; verts[2].tex[1] = t1; + verts[2].tex[2] = readAtt->Zoffset; verts[3].tex[0] = s0; verts[3].tex[1] = t1; + verts[3].tex[2] = readAtt->Zoffset; _mesa_BufferSubData(GL_ARRAY_BUFFER_ARB, 0, sizeof(verts), verts); } -- cgit v1.2.3