Mesa (master): st/mesa: relax requirements for doing glCopyPixels via blit
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Jan 1 16:51:53 UTC 2021
Module: Mesa
Branch: master
Commit: 004c92096cdca82933952ac03177c5a3e51962bb
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=004c92096cdca82933952ac03177c5a3e51962bb
Author: Marek Olšák <marek.olsak at amd.com>
Date: Sun Oct 11 21:25:14 2020 -0400
st/mesa: relax requirements for doing glCopyPixels via blit
glCopyPixels doesn't use a vertex shader, so ignore it.
The rest should be obvious.
Reviewed-by: Zoltán Böszörményi <zboszor at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7720>
---
src/mesa/state_tracker/st_cb_drawpixels.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c
index 11d9d281f27..a2dc42df00c 100644
--- a/src/mesa/state_tracker/st_cb_drawpixels.c
+++ b/src/mesa/state_tracker/st_cb_drawpixels.c
@@ -1564,15 +1564,16 @@ blit_copy_pixels(struct gl_context *ctx, GLint srcx, GLint srcy,
!ctx->Color.AlphaEnabled &&
(!ctx->Color.ColorLogicOpEnabled || ctx->Color.LogicOp == GL_COPY) &&
!ctx->Depth.BoundsTest &&
- !ctx->Depth.Test &&
+ (!ctx->Depth.Test || (ctx->Depth.Func == GL_ALWAYS && !ctx->Depth.Mask)) &&
!ctx->Fog.Enabled &&
- !ctx->Stencil.Enabled &&
+ (!ctx->Stencil.Enabled ||
+ (ctx->Stencil.FailFunc[0] == GL_KEEP &&
+ ctx->Stencil.ZPassFunc[0] == GL_KEEP &&
+ ctx->Stencil.ZFailFunc[0] == GL_KEEP)) &&
!ctx->FragmentProgram.Enabled &&
- !ctx->VertexProgram.Enabled &&
!ctx->_Shader->CurrentProgram[MESA_SHADER_FRAGMENT] &&
!_mesa_ati_fragment_shader_enabled(ctx) &&
ctx->DrawBuffer->_NumColorDrawBuffers == 1)) &&
- !ctx->Query.CondRenderQuery &&
!ctx->Query.CurrentOcclusionObject) {
struct st_renderbuffer *rbRead, *rbDraw;
@@ -1657,6 +1658,7 @@ blit_copy_pixels(struct gl_context *ctx, GLint srcx, GLint srcy,
blit.dst.box.height = drawH;
blit.dst.box.depth = 1;
blit.filter = PIPE_TEX_FILTER_NEAREST;
+ blit.render_condition_enable = ctx->Query.CondRenderQuery != NULL;
if (type == GL_COLOR)
blit.mask |= PIPE_MASK_RGBA;
More information about the mesa-commit
mailing list