mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 18:08:40 +02:00
mesa: always call _mesa_update_pixel
10c75ae4moved handling of this state to the functions that depend on ctx->_ImageTransferState. So we can't depend on _NEW_PIXEL being set to call this function, since it'll be always clear earlier by _mesa_update_state_locked. Example sequence that would trigger the issue: glPixelTransferi(...) glClear(...) glTexSubImage2D(...) <-- won't use the new value set by glPixelTransferi because glClear caused _NEW_PIXEL to be cleared. _NEW_PIXEL itself is kept because st_update_pixel_transfer depends on it. Fixes:10c75ae4("mesa: move _mesa_update_pixel out of _mesa_update_state") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5273 Reviewed-by: Marek Olšák <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13596> (cherry picked from commit1ee3fbd703)
This commit is contained in:
parent
712ab9c343
commit
4b0b826ec9
4 changed files with 10 additions and 19 deletions
|
|
@ -94,7 +94,7 @@
|
|||
"description": "mesa: always call _mesa_update_pixel",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"main_sha": null,
|
||||
"because_sha": "10c75ae41c4e914a0160f9d93bbe1e65b5e14517"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -73,8 +73,7 @@ _mesa_DrawPixels( GLsizei width, GLsizei height,
|
|||
*/
|
||||
_mesa_set_vp_override(ctx, GL_TRUE);
|
||||
|
||||
if (ctx->NewState & _NEW_PIXEL)
|
||||
_mesa_update_pixel(ctx);
|
||||
_mesa_update_pixel(ctx);
|
||||
|
||||
if (ctx->NewState)
|
||||
_mesa_update_state(ctx);
|
||||
|
|
@ -245,8 +244,7 @@ _mesa_CopyPixels( GLint srcx, GLint srcy, GLsizei width, GLsizei height,
|
|||
*/
|
||||
_mesa_set_vp_override(ctx, GL_TRUE);
|
||||
|
||||
if (ctx->NewState & _NEW_PIXEL)
|
||||
_mesa_update_pixel(ctx);
|
||||
_mesa_update_pixel(ctx);
|
||||
|
||||
if (ctx->NewState)
|
||||
_mesa_update_state(ctx);
|
||||
|
|
@ -334,8 +332,7 @@ _mesa_Bitmap( GLsizei width, GLsizei height,
|
|||
return; /* do nothing */
|
||||
}
|
||||
|
||||
if (ctx->NewState & _NEW_PIXEL)
|
||||
_mesa_update_pixel(ctx);
|
||||
_mesa_update_pixel(ctx);
|
||||
|
||||
if (ctx->NewState)
|
||||
_mesa_update_state(ctx);
|
||||
|
|
|
|||
|
|
@ -1049,8 +1049,7 @@ read_pixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format,
|
|||
return;
|
||||
}
|
||||
|
||||
if (ctx->NewState & _NEW_PIXEL)
|
||||
_mesa_update_pixel(ctx);
|
||||
_mesa_update_pixel(ctx);
|
||||
|
||||
if (ctx->NewState)
|
||||
_mesa_update_state(ctx);
|
||||
|
|
|
|||
|
|
@ -3145,8 +3145,7 @@ teximage(struct gl_context *ctx, GLboolean compressed, GLuint dims,
|
|||
unpack = &unpack_no_border;
|
||||
}
|
||||
|
||||
if (ctx->NewState & _NEW_PIXEL)
|
||||
_mesa_update_pixel(ctx);
|
||||
_mesa_update_pixel(ctx);
|
||||
|
||||
_mesa_lock_texture(ctx, texObj);
|
||||
{
|
||||
|
|
@ -3586,8 +3585,7 @@ texture_sub_image(struct gl_context *ctx, GLuint dims,
|
|||
{
|
||||
FLUSH_VERTICES(ctx, 0, 0);
|
||||
|
||||
if (ctx->NewState & _NEW_PIXEL)
|
||||
_mesa_update_pixel(ctx);
|
||||
_mesa_update_pixel(ctx);
|
||||
|
||||
_mesa_lock_texture(ctx, texObj);
|
||||
{
|
||||
|
|
@ -4270,8 +4268,7 @@ copy_texture_sub_image_err(struct gl_context *ctx, GLuint dims,
|
|||
_mesa_enum_to_string(target),
|
||||
level, xoffset, yoffset, zoffset, x, y, width, height);
|
||||
|
||||
if (ctx->NewState & _NEW_PIXEL)
|
||||
_mesa_update_pixel(ctx);
|
||||
_mesa_update_pixel(ctx);
|
||||
|
||||
if (ctx->NewState & NEW_COPY_TEX_STATE)
|
||||
_mesa_update_state(ctx);
|
||||
|
|
@ -4296,8 +4293,7 @@ copy_texture_sub_image_no_error(struct gl_context *ctx, GLuint dims,
|
|||
{
|
||||
FLUSH_VERTICES(ctx, 0, 0);
|
||||
|
||||
if (ctx->NewState & _NEW_PIXEL)
|
||||
_mesa_update_pixel(ctx);
|
||||
_mesa_update_pixel(ctx);
|
||||
|
||||
if (ctx->NewState & NEW_COPY_TEX_STATE)
|
||||
_mesa_update_state(ctx);
|
||||
|
|
@ -4328,8 +4324,7 @@ copyteximage(struct gl_context *ctx, GLuint dims, struct gl_texture_object *texO
|
|||
_mesa_enum_to_string(internalFormat),
|
||||
x, y, width, height, border);
|
||||
|
||||
if (ctx->NewState & _NEW_PIXEL)
|
||||
_mesa_update_pixel(ctx);
|
||||
_mesa_update_pixel(ctx);
|
||||
|
||||
if (ctx->NewState & NEW_COPY_TEX_STATE)
|
||||
_mesa_update_state(ctx);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue