meta: Add a state flag for the GL_DITHER
The Meta implementation of glClearTexSubImage is going to want to ensure that dithering is disabled so that it can get a consistent color across the whole texture when clearing. This adds a state flag to easily save it and set it to the default value when performing meta operations. Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
This commit is contained in:
parent
df9945ca26
commit
05b52efbc9
|
@ -505,6 +505,11 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
|
|||
_mesa_set_enable(ctx, GL_COLOR_LOGIC_OP, GL_FALSE);
|
||||
}
|
||||
|
||||
if (state & MESA_META_DITHER) {
|
||||
save->DitherFlag = ctx->Color.DitherFlag;
|
||||
_mesa_set_enable(ctx, GL_DITHER, GL_TRUE);
|
||||
}
|
||||
|
||||
if (state & MESA_META_COLOR_MASK) {
|
||||
memcpy(save->ColorMask, ctx->Color.ColorMask,
|
||||
sizeof(ctx->Color.ColorMask));
|
||||
|
@ -875,6 +880,9 @@ _mesa_meta_end(struct gl_context *ctx)
|
|||
_mesa_set_enable(ctx, GL_COLOR_LOGIC_OP, save->ColorLogicOpEnabled);
|
||||
}
|
||||
|
||||
if (state & MESA_META_DITHER)
|
||||
_mesa_set_enable(ctx, GL_DITHER, save->DitherFlag);
|
||||
|
||||
if (state & MESA_META_COLOR_MASK) {
|
||||
GLuint i;
|
||||
for (i = 0; i < ctx->Const.MaxDrawBuffers; i++) {
|
||||
|
|
|
@ -59,6 +59,7 @@
|
|||
#define MESA_META_FRAMEBUFFER_SRGB 0x200000
|
||||
#define MESA_META_OCCLUSION_QUERY 0x400000
|
||||
#define MESA_META_DRAW_BUFFERS 0x800000
|
||||
#define MESA_META_DITHER 0x1000000
|
||||
/**\}*/
|
||||
|
||||
/**
|
||||
|
@ -84,6 +85,9 @@ struct save_state
|
|||
GLbitfield BlendEnabled;
|
||||
GLboolean ColorLogicOpEnabled;
|
||||
|
||||
/** MESA_META_DITHER */
|
||||
GLboolean DitherFlag;
|
||||
|
||||
/** MESA_META_COLOR_MASK */
|
||||
GLubyte ColorMask[MAX_DRAW_BUFFERS][4];
|
||||
|
||||
|
|
Loading…
Reference in New Issue