mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 17:40:11 +01:00
meta: remove call to _meta_in_progress(), fix multisample enable/disable
This partially reverts d638da23d2.
With gallium the meta code is not always built so the call to
_meta_in_progress() was unresolved. Simply special-case the
GL_MULTISAMPLE case in the meta code. There might be other special
cases in the future given all the differences between legacy GL,
core GL, GLES, etc.
Fixes https://bugs.freedesktop.org/show_bug.cgi?id=54234
and https://bugs.freedesktop.org/show_bug.cgi?id=54239
v2 (Paul Berry <stereotype441@gmail.com>): keep _meta_in_progress
function, since it's needed by the i965 driver, but don't call it from
core mesa.
Signed-off-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
aad7ccd261
commit
055093e33f
2 changed files with 32 additions and 8 deletions
|
|
@ -437,6 +437,35 @@ _mesa_meta_free(struct gl_context *ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is an alternative to _mesa_set_enable() to handle some special cases.
|
||||||
|
* See comments inside.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
meta_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
|
||||||
|
{
|
||||||
|
switch (cap) {
|
||||||
|
case GL_MULTISAMPLE:
|
||||||
|
/* We need to enable/disable multisample when using GLES but this enum
|
||||||
|
* is not supported there.
|
||||||
|
*/
|
||||||
|
if (ctx->Multisample.Enabled == state)
|
||||||
|
return;
|
||||||
|
FLUSH_VERTICES(ctx, _NEW_MULTISAMPLE);
|
||||||
|
ctx->Multisample.Enabled = state;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
_mesa_problem(ctx, "Unexpected cap in _meta_set_enable()");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ctx->Driver.Enable) {
|
||||||
|
ctx->Driver.Enable(ctx, cap, state);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enter meta state. This is like a light-weight version of glPushAttrib
|
* Enter meta state. This is like a light-weight version of glPushAttrib
|
||||||
* but it also resets most GL state back to default values.
|
* but it also resets most GL state back to default values.
|
||||||
|
|
@ -755,7 +784,7 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
|
||||||
if (state & MESA_META_MULTISAMPLE) {
|
if (state & MESA_META_MULTISAMPLE) {
|
||||||
save->MultisampleEnabled = ctx->Multisample.Enabled;
|
save->MultisampleEnabled = ctx->Multisample.Enabled;
|
||||||
if (ctx->Multisample.Enabled)
|
if (ctx->Multisample.Enabled)
|
||||||
_mesa_set_enable(ctx, GL_MULTISAMPLE, GL_FALSE);
|
meta_set_enable(ctx, GL_MULTISAMPLE, GL_FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* misc */
|
/* misc */
|
||||||
|
|
@ -1057,7 +1086,7 @@ _mesa_meta_end(struct gl_context *ctx)
|
||||||
|
|
||||||
if (state & MESA_META_MULTISAMPLE) {
|
if (state & MESA_META_MULTISAMPLE) {
|
||||||
if (ctx->Multisample.Enabled != save->MultisampleEnabled)
|
if (ctx->Multisample.Enabled != save->MultisampleEnabled)
|
||||||
_mesa_set_enable(ctx, GL_MULTISAMPLE, save->MultisampleEnabled);
|
meta_set_enable(ctx, GL_MULTISAMPLE, save->MultisampleEnabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* misc */
|
/* misc */
|
||||||
|
|
|
||||||
|
|
@ -765,13 +765,8 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state)
|
||||||
|
|
||||||
/* GL_ARB_multisample */
|
/* GL_ARB_multisample */
|
||||||
case GL_MULTISAMPLE_ARB:
|
case GL_MULTISAMPLE_ARB:
|
||||||
/* Technically speaking, this should not be allowed for OpenGL ES 2.0
|
if (!_mesa_is_desktop_gl(ctx) && ctx->API != API_OPENGLES)
|
||||||
* or 3.0. However, meta really needs it.
|
|
||||||
*/
|
|
||||||
if (!_mesa_meta_in_progress(ctx) && !_mesa_is_desktop_gl(ctx)
|
|
||||||
&& ctx->API != API_OPENGLES)
|
|
||||||
goto invalid_enum_error;
|
goto invalid_enum_error;
|
||||||
|
|
||||||
if (ctx->Multisample.Enabled == state)
|
if (ctx->Multisample.Enabled == state)
|
||||||
return;
|
return;
|
||||||
FLUSH_VERTICES(ctx, _NEW_MULTISAMPLE);
|
FLUSH_VERTICES(ctx, _NEW_MULTISAMPLE);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue