Module: Mesa Branch: revert-f611af35 Commit: 7a952efc08d7f29f270b06430a57c82597353d24 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=7a952efc08d7f29f270b06430a57c82597353d24
Author: Karol Herbst <[email protected]> Date: Thu Jul 16 15:43:29 2020 +0000 Revert "st/mesa: use fragment shader to copy stencil buffer" This reverts commit f611af35948e4d1d56daa94f59d5feb7d44d24ce --- src/mesa/state_tracker/st_cb_drawpixels.c | 47 ++++++++----------------------- 1 file changed, 12 insertions(+), 35 deletions(-) diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c index 0537c6d24c8..3f84b22154d 100644 --- a/src/mesa/state_tracker/st_cb_drawpixels.c +++ b/src/mesa/state_tracker/st_cb_drawpixels.c @@ -1704,8 +1704,6 @@ st_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy, GLboolean invertTex = GL_FALSE; GLint readX, readY, readW, readH; struct gl_pixelstore_attrib pack = ctx->DefaultPacking; - GLboolean write_stencil = GL_FALSE; - GLboolean write_depth = GL_FALSE; _mesa_update_draw_buffer_bounds(ctx, ctx->DrawBuffer); @@ -1724,6 +1722,12 @@ st_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy, return; } + if (type == GL_STENCIL) { + /* can't use texturing to do stencil */ + copy_stencil_pixels(ctx, srcx, srcy, width, height, dstx, dsty); + return; + } + /* * The subsequent code implements glCopyPixels by copying the source * pixels into a temporary texture that's then applied to a textured quad. @@ -1753,15 +1757,13 @@ st_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy, * into the constant buffer, we need to update them */ st_upload_constants(st, &st->fp->Base); - } else if (type == GL_DEPTH) { + } + else { + assert(type == GL_DEPTH); rbRead = st_renderbuffer(ctx->ReadBuffer-> Attachment[BUFFER_DEPTH].Renderbuffer); + driver_fp = get_drawpix_z_stencil_program(st, GL_TRUE, GL_FALSE); - } else { - assert(type == GL_STENCIL); - rbRead = st_renderbuffer(ctx->ReadBuffer-> - Attachment[BUFFER_STENCIL].Renderbuffer); - driver_fp = get_drawpix_z_stencil_program(st, GL_FALSE, GL_TRUE); } /* Choose the format for the temporary texture. */ @@ -1777,11 +1779,6 @@ st_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy, GL_NONE, st->internal_target, 0, 0, srcBind, false, false); } - else if (type == GL_STENCIL) { - /* can't use texturing, fallback to copy */ - copy_stencil_pixels(ctx, srcx, srcy, width, height, dstx, dsty); - return; - } else { assert(type == GL_COLOR); @@ -1857,23 +1854,6 @@ st_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy, return; } - /* Create a second sampler view to read stencil */ - if (type == GL_STENCIL) { - write_stencil = GL_TRUE; - enum pipe_format stencil_format = - util_format_stencil_only(pt->format); - /* we should not be doing pixel map/transfer (see above) */ - assert(num_sampler_view == 1); - sv[1] = st_create_texture_sampler_view_format(st->pipe, pt, - stencil_format); - if (!sv[1]) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCopyPixels"); - pipe_resource_reference(&pt, NULL); - pipe_sampler_view_reference(&sv[0], NULL); - return; - } - num_sampler_view++; - } /* Copy the src region to the temporary texture. */ { struct pipe_blit_info blit; @@ -1897,10 +1877,7 @@ st_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy, blit.dst.box.width = readW; blit.dst.box.height = readH; blit.dst.box.depth = 1; - if (type != GL_STENCIL) - blit.mask = util_format_get_mask(pt->format) & ~PIPE_MASK_S; - else - blit.mask = util_format_get_mask(pt->format) & ~PIPE_MASK_Z; + blit.mask = util_format_get_mask(pt->format) & ~PIPE_MASK_S; blit.filter = PIPE_TEX_FILTER_NEAREST; pipe->blit(pipe, &blit); @@ -1917,7 +1894,7 @@ st_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy, st->passthrough_vs, driver_fp, fpv, ctx->Current.Attrib[VERT_ATTRIB_COLOR0], - invertTex, write_depth, write_stencil); + invertTex, GL_FALSE, GL_FALSE); pipe_resource_reference(&pt, NULL); pipe_sampler_view_reference(&sv[0], NULL); _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
