mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 02:20:11 +01:00
enable: Create _mesa_set_framebuffer_srgb() function for use by meta ops.
GLES3 supports sRGB formats, but it does not support the GL_FRAMEBUFFER_SRGB enable/disable flag (instead it behaves as if this flag is always enabled). Therefore, meta ops that need to disable GL_FRAMEBUFFER_SRGB will need a backdoor mechanism to do so when the API is GLES3. We were already doing a similar thing for GL_MULTISAMPLE, which has the same constraints. Reviewed-by: Brian Paul <brianp@vmware.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
parent
399a03fdd6
commit
8faa79764c
2 changed files with 22 additions and 3 deletions
|
|
@ -263,6 +263,23 @@ _mesa_set_multisample(struct gl_context *ctx, GLboolean state)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper function to enable or disable GL_FRAMEBUFFER_SRGB, skipping the
|
||||||
|
* check for whether the API supports it (GLES doesn't).
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
_mesa_set_framebuffer_srgb(struct gl_context *ctx, GLboolean state)
|
||||||
|
{
|
||||||
|
if (ctx->Color.sRGBEnabled == state)
|
||||||
|
return;
|
||||||
|
FLUSH_VERTICES(ctx, _NEW_BUFFERS);
|
||||||
|
ctx->Color.sRGBEnabled = state;
|
||||||
|
|
||||||
|
if (ctx->Driver.Enable) {
|
||||||
|
ctx->Driver.Enable(ctx, GL_FRAMEBUFFER_SRGB, state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper function to enable or disable state.
|
* Helper function to enable or disable state.
|
||||||
*
|
*
|
||||||
|
|
@ -1047,9 +1064,8 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
|
||||||
if (!_mesa_is_desktop_gl(ctx) && !_mesa_is_gles3(ctx))
|
if (!_mesa_is_desktop_gl(ctx) && !_mesa_is_gles3(ctx))
|
||||||
goto invalid_enum_error;
|
goto invalid_enum_error;
|
||||||
CHECK_EXTENSION(EXT_framebuffer_sRGB, cap);
|
CHECK_EXTENSION(EXT_framebuffer_sRGB, cap);
|
||||||
FLUSH_VERTICES(ctx, _NEW_BUFFERS);
|
_mesa_set_framebuffer_srgb(ctx, state);
|
||||||
ctx->Color.sRGBEnabled = state;
|
return;
|
||||||
break;
|
|
||||||
|
|
||||||
/* GL_OES_EGL_image_external */
|
/* GL_OES_EGL_image_external */
|
||||||
case GL_TEXTURE_EXTERNAL_OES:
|
case GL_TEXTURE_EXTERNAL_OES:
|
||||||
|
|
|
||||||
|
|
@ -70,6 +70,9 @@ _mesa_DisableClientState( GLenum cap );
|
||||||
extern void
|
extern void
|
||||||
_mesa_set_multisample(struct gl_context *ctx, GLboolean state);
|
_mesa_set_multisample(struct gl_context *ctx, GLboolean state);
|
||||||
|
|
||||||
|
extern void
|
||||||
|
_mesa_set_framebuffer_srgb(struct gl_context *ctx, GLboolean state);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue