mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 11:10:10 +01:00
mesa/es: Validate blend function enums in Mesa code rather than the ES wrapper
v2: Add proper core-profile filtering. v3: Allow GL_SRC_ALPHA_SATURATE as a destination factor in GLES3. Based on review feedback from Eric Anholt. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
parent
e58c19a204
commit
01497a3560
2 changed files with 11 additions and 115 deletions
|
|
@ -631,43 +631,6 @@
|
||||||
<param name="sfactor" type="GLenum"/>
|
<param name="sfactor" type="GLenum"/>
|
||||||
<param name="dfactor" type="GLenum"/>
|
<param name="dfactor" type="GLenum"/>
|
||||||
</proto>
|
</proto>
|
||||||
|
|
||||||
<desc name="sfactor">
|
|
||||||
<value name="GL_ZERO"/>
|
|
||||||
<value name="GL_ONE"/>
|
|
||||||
<value name="GL_SRC_COLOR"/>
|
|
||||||
<value name="GL_ONE_MINUS_SRC_COLOR"/>
|
|
||||||
<value name="GL_SRC_ALPHA"/>
|
|
||||||
<value name="GL_ONE_MINUS_SRC_ALPHA"/>
|
|
||||||
<value name="GL_DST_ALPHA"/>
|
|
||||||
<value name="GL_ONE_MINUS_DST_ALPHA"/>
|
|
||||||
<value name="GL_DST_COLOR"/>
|
|
||||||
<value name="GL_ONE_MINUS_DST_COLOR"/>
|
|
||||||
<value name="GL_SRC_ALPHA_SATURATE"/>
|
|
||||||
|
|
||||||
<value name="GL_CONSTANT_COLOR" category="GLES2.0"/>
|
|
||||||
<value name="GL_CONSTANT_ALPHA" category="GLES2.0"/>
|
|
||||||
<value name="GL_ONE_MINUS_CONSTANT_COLOR" category="GLES2.0"/>
|
|
||||||
<value name="GL_ONE_MINUS_CONSTANT_ALPHA" category="GLES2.0"/>
|
|
||||||
</desc>
|
|
||||||
|
|
||||||
<desc name="dfactor">
|
|
||||||
<value name="GL_ZERO"/>
|
|
||||||
<value name="GL_ONE"/>
|
|
||||||
<value name="GL_SRC_COLOR"/>
|
|
||||||
<value name="GL_ONE_MINUS_SRC_COLOR"/>
|
|
||||||
<value name="GL_SRC_ALPHA"/>
|
|
||||||
<value name="GL_ONE_MINUS_SRC_ALPHA"/>
|
|
||||||
<value name="GL_DST_ALPHA"/>
|
|
||||||
<value name="GL_ONE_MINUS_DST_ALPHA"/>
|
|
||||||
<value name="GL_DST_COLOR"/>
|
|
||||||
<value name="GL_ONE_MINUS_DST_COLOR"/>
|
|
||||||
|
|
||||||
<value name="GL_CONSTANT_COLOR" category="GLES2.0"/>
|
|
||||||
<value name="GL_CONSTANT_ALPHA" category="GLES2.0"/>
|
|
||||||
<value name="GL_ONE_MINUS_CONSTANT_COLOR" category="GLES2.0"/>
|
|
||||||
<value name="GL_ONE_MINUS_CONSTANT_ALPHA" category="GLES2.0"/>
|
|
||||||
</desc>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template name="LogicOp">
|
<template name="LogicOp">
|
||||||
|
|
@ -1600,80 +1563,6 @@
|
||||||
<param name="srcAlpha" type="GLenum"/>
|
<param name="srcAlpha" type="GLenum"/>
|
||||||
<param name="dstAlpha" type="GLenum"/>
|
<param name="dstAlpha" type="GLenum"/>
|
||||||
</proto>
|
</proto>
|
||||||
|
|
||||||
<desc name="srcRGB">
|
|
||||||
<value name="GL_ZERO"/>
|
|
||||||
<value name="GL_ONE"/>
|
|
||||||
<value name="GL_SRC_COLOR"/>
|
|
||||||
<value name="GL_ONE_MINUS_SRC_COLOR"/>
|
|
||||||
<value name="GL_SRC_ALPHA"/>
|
|
||||||
<value name="GL_ONE_MINUS_SRC_ALPHA"/>
|
|
||||||
<value name="GL_DST_ALPHA"/>
|
|
||||||
<value name="GL_ONE_MINUS_DST_ALPHA"/>
|
|
||||||
<value name="GL_DST_COLOR"/>
|
|
||||||
<value name="GL_ONE_MINUS_DST_COLOR"/>
|
|
||||||
<value name="GL_SRC_ALPHA_SATURATE"/>
|
|
||||||
|
|
||||||
<value name="GL_CONSTANT_COLOR" category="GLES2.0"/>
|
|
||||||
<value name="GL_ONE_MINUS_CONSTANT_COLOR" category="GLES2.0"/>
|
|
||||||
<value name="GL_CONSTANT_ALPHA" category="GLES2.0"/>
|
|
||||||
<value name="GL_ONE_MINUS_CONSTANT_ALPHA" category="GLES2.0"/>
|
|
||||||
</desc>
|
|
||||||
|
|
||||||
<desc name="dstRGB">
|
|
||||||
<value name="GL_ZERO"/>
|
|
||||||
<value name="GL_ONE"/>
|
|
||||||
<value name="GL_SRC_COLOR"/>
|
|
||||||
<value name="GL_ONE_MINUS_SRC_COLOR"/>
|
|
||||||
<value name="GL_SRC_ALPHA"/>
|
|
||||||
<value name="GL_ONE_MINUS_SRC_ALPHA"/>
|
|
||||||
<value name="GL_DST_ALPHA"/>
|
|
||||||
<value name="GL_ONE_MINUS_DST_ALPHA"/>
|
|
||||||
<value name="GL_DST_COLOR"/>
|
|
||||||
<value name="GL_ONE_MINUS_DST_COLOR"/>
|
|
||||||
|
|
||||||
<value name="GL_CONSTANT_COLOR" category="GLES2.0"/>
|
|
||||||
<value name="GL_ONE_MINUS_CONSTANT_COLOR" category="GLES2.0"/>
|
|
||||||
<value name="GL_CONSTANT_ALPHA" category="GLES2.0"/>
|
|
||||||
<value name="GL_ONE_MINUS_CONSTANT_ALPHA" category="GLES2.0"/>
|
|
||||||
</desc>
|
|
||||||
|
|
||||||
<desc name="srcAlpha">
|
|
||||||
<value name="GL_ZERO"/>
|
|
||||||
<value name="GL_ONE"/>
|
|
||||||
<value name="GL_SRC_COLOR"/>
|
|
||||||
<value name="GL_ONE_MINUS_SRC_COLOR"/>
|
|
||||||
<value name="GL_SRC_ALPHA"/>
|
|
||||||
<value name="GL_ONE_MINUS_SRC_ALPHA"/>
|
|
||||||
<value name="GL_DST_ALPHA"/>
|
|
||||||
<value name="GL_ONE_MINUS_DST_ALPHA"/>
|
|
||||||
<value name="GL_DST_COLOR"/>
|
|
||||||
<value name="GL_ONE_MINUS_DST_COLOR"/>
|
|
||||||
<value name="GL_SRC_ALPHA_SATURATE"/>
|
|
||||||
|
|
||||||
<value name="GL_CONSTANT_COLOR" category="GLES2.0"/>
|
|
||||||
<value name="GL_ONE_MINUS_CONSTANT_COLOR" category="GLES2.0"/>
|
|
||||||
<value name="GL_CONSTANT_ALPHA" category="GLES2.0"/>
|
|
||||||
<value name="GL_ONE_MINUS_CONSTANT_ALPHA" category="GLES2.0"/>
|
|
||||||
</desc>
|
|
||||||
|
|
||||||
<desc name="dstAlpha">
|
|
||||||
<value name="GL_ZERO"/>
|
|
||||||
<value name="GL_ONE"/>
|
|
||||||
<value name="GL_SRC_COLOR"/>
|
|
||||||
<value name="GL_ONE_MINUS_SRC_COLOR"/>
|
|
||||||
<value name="GL_SRC_ALPHA"/>
|
|
||||||
<value name="GL_ONE_MINUS_SRC_ALPHA"/>
|
|
||||||
<value name="GL_DST_ALPHA"/>
|
|
||||||
<value name="GL_ONE_MINUS_DST_ALPHA"/>
|
|
||||||
<value name="GL_DST_COLOR"/>
|
|
||||||
<value name="GL_ONE_MINUS_DST_COLOR"/>
|
|
||||||
|
|
||||||
<value name="GL_CONSTANT_COLOR" category="GLES2.0"/>
|
|
||||||
<value name="GL_ONE_MINUS_CONSTANT_COLOR" category="GLES2.0"/>
|
|
||||||
<value name="GL_CONSTANT_ALPHA" category="GLES2.0"/>
|
|
||||||
<value name="GL_ONE_MINUS_CONSTANT_ALPHA" category="GLES2.0"/>
|
|
||||||
</desc>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template name="PointParameter">
|
<template name="PointParameter">
|
||||||
|
|
|
||||||
|
|
@ -58,16 +58,18 @@ legal_src_factor(const struct gl_context *ctx, GLenum factor)
|
||||||
case GL_DST_ALPHA:
|
case GL_DST_ALPHA:
|
||||||
case GL_ONE_MINUS_DST_ALPHA:
|
case GL_ONE_MINUS_DST_ALPHA:
|
||||||
case GL_SRC_ALPHA_SATURATE:
|
case GL_SRC_ALPHA_SATURATE:
|
||||||
|
return GL_TRUE;
|
||||||
case GL_CONSTANT_COLOR:
|
case GL_CONSTANT_COLOR:
|
||||||
case GL_ONE_MINUS_CONSTANT_COLOR:
|
case GL_ONE_MINUS_CONSTANT_COLOR:
|
||||||
case GL_CONSTANT_ALPHA:
|
case GL_CONSTANT_ALPHA:
|
||||||
case GL_ONE_MINUS_CONSTANT_ALPHA:
|
case GL_ONE_MINUS_CONSTANT_ALPHA:
|
||||||
return GL_TRUE;
|
return _mesa_is_desktop_gl(ctx) || ctx->API == API_OPENGLES2;
|
||||||
case GL_SRC1_COLOR:
|
case GL_SRC1_COLOR:
|
||||||
case GL_SRC1_ALPHA:
|
case GL_SRC1_ALPHA:
|
||||||
case GL_ONE_MINUS_SRC1_COLOR:
|
case GL_ONE_MINUS_SRC1_COLOR:
|
||||||
case GL_ONE_MINUS_SRC1_ALPHA:
|
case GL_ONE_MINUS_SRC1_ALPHA:
|
||||||
return ctx->Extensions.ARB_blend_func_extended;
|
return _mesa_is_desktop_gl(ctx)
|
||||||
|
&& ctx->Extensions.ARB_blend_func_extended;
|
||||||
default:
|
default:
|
||||||
return GL_FALSE;
|
return GL_FALSE;
|
||||||
}
|
}
|
||||||
|
|
@ -93,17 +95,22 @@ legal_dst_factor(const struct gl_context *ctx, GLenum factor)
|
||||||
case GL_ONE_MINUS_SRC_ALPHA:
|
case GL_ONE_MINUS_SRC_ALPHA:
|
||||||
case GL_DST_ALPHA:
|
case GL_DST_ALPHA:
|
||||||
case GL_ONE_MINUS_DST_ALPHA:
|
case GL_ONE_MINUS_DST_ALPHA:
|
||||||
|
return GL_TRUE;
|
||||||
case GL_CONSTANT_COLOR:
|
case GL_CONSTANT_COLOR:
|
||||||
case GL_ONE_MINUS_CONSTANT_COLOR:
|
case GL_ONE_MINUS_CONSTANT_COLOR:
|
||||||
case GL_CONSTANT_ALPHA:
|
case GL_CONSTANT_ALPHA:
|
||||||
case GL_ONE_MINUS_CONSTANT_ALPHA:
|
case GL_ONE_MINUS_CONSTANT_ALPHA:
|
||||||
return GL_TRUE;
|
return _mesa_is_desktop_gl(ctx) || ctx->API == API_OPENGLES2;
|
||||||
case GL_SRC_ALPHA_SATURATE:
|
case GL_SRC_ALPHA_SATURATE:
|
||||||
|
return (_mesa_is_desktop_gl(ctx)
|
||||||
|
&& ctx->Extensions.ARB_blend_func_extended)
|
||||||
|
|| _mesa_is_gles3(ctx);
|
||||||
case GL_SRC1_COLOR:
|
case GL_SRC1_COLOR:
|
||||||
case GL_SRC1_ALPHA:
|
case GL_SRC1_ALPHA:
|
||||||
case GL_ONE_MINUS_SRC1_COLOR:
|
case GL_ONE_MINUS_SRC1_COLOR:
|
||||||
case GL_ONE_MINUS_SRC1_ALPHA:
|
case GL_ONE_MINUS_SRC1_ALPHA:
|
||||||
return ctx->Extensions.ARB_blend_func_extended;
|
return _mesa_is_desktop_gl(ctx)
|
||||||
|
&& ctx->Extensions.ARB_blend_func_extended;
|
||||||
default:
|
default:
|
||||||
return GL_FALSE;
|
return GL_FALSE;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue