case GL_DST_ALPHA:
case GL_ONE_MINUS_DST_ALPHA:
case GL_SRC_ALPHA_SATURATE:
+ return GL_TRUE;
case GL_CONSTANT_COLOR:
case GL_ONE_MINUS_CONSTANT_COLOR:
case GL_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_ALPHA:
case GL_ONE_MINUS_SRC1_COLOR:
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:
return GL_FALSE;
}
case GL_ONE_MINUS_SRC_ALPHA:
case GL_DST_ALPHA:
case GL_ONE_MINUS_DST_ALPHA:
+ return GL_TRUE;
case GL_CONSTANT_COLOR:
case GL_ONE_MINUS_CONSTANT_COLOR:
case GL_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:
+ return (_mesa_is_desktop_gl(ctx)
+ && ctx->Extensions.ARB_blend_func_extended)
+ || _mesa_is_gles3(ctx);
case GL_SRC1_COLOR:
case GL_SRC1_ALPHA:
case GL_ONE_MINUS_SRC1_COLOR:
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:
return GL_FALSE;
}
void GLAPIENTRY
_mesa_BlendFunc( GLenum sfactor, GLenum dfactor )
{
- _mesa_BlendFuncSeparateEXT(sfactor, dfactor, sfactor, dfactor);
+ _mesa_BlendFuncSeparate(sfactor, dfactor, sfactor, dfactor);
}
static GLboolean
* \param dfactorA alpha destination factor operator.
*/
void GLAPIENTRY
-_mesa_BlendFuncSeparateEXT( GLenum sfactorRGB, GLenum dfactorRGB,
+_mesa_BlendFuncSeparate( GLenum sfactorRGB, GLenum dfactorRGB,
GLenum sfactorA, GLenum dfactorA )
{
GLuint buf, numBuffers;
}
-#if _HAVE_FULL_GL
-
-
/**
* Set blend source/dest factors for one color buffer/target.
*/
void GLAPIENTRY
-_mesa_BlendFunci(GLuint buf, GLenum sfactor, GLenum dfactor)
+_mesa_BlendFunciARB(GLuint buf, GLenum sfactor, GLenum dfactor)
{
- _mesa_BlendFuncSeparatei(buf, sfactor, dfactor, sfactor, dfactor);
+ _mesa_BlendFuncSeparateiARB(buf, sfactor, dfactor, sfactor, dfactor);
}
* Set separate blend source/dest factors for one color buffer/target.
*/
void GLAPIENTRY
-_mesa_BlendFuncSeparatei(GLuint buf, GLenum sfactorRGB, GLenum dfactorRGB,
+_mesa_BlendFuncSeparateiARB(GLuint buf, GLenum sfactorRGB, GLenum dfactorRGB,
GLenum sfactorA, GLenum dfactorA)
{
GET_CURRENT_CONTEXT(ctx);
* Set blend equation for one color buffer/target.
*/
void GLAPIENTRY
-_mesa_BlendEquationi(GLuint buf, GLenum mode)
+_mesa_BlendEquationiARB(GLuint buf, GLenum mode)
{
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END(ctx);
void GLAPIENTRY
-_mesa_BlendEquationSeparateEXT( GLenum modeRGB, GLenum modeA )
+_mesa_BlendEquationSeparate( GLenum modeRGB, GLenum modeA )
{
GLuint buf, numBuffers;
GLboolean changed;
* Set separate blend equations for one color buffer/target.
*/
void GLAPIENTRY
-_mesa_BlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum modeA)
+_mesa_BlendEquationSeparateiARB(GLuint buf, GLenum modeRGB, GLenum modeA)
{
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END(ctx);
}
-
-#endif /* _HAVE_FULL_GL */
-
-
/**
* Set the blending color.
*
ctx->Driver.LogicOpcode( ctx, opcode );
}
-#if _HAVE_FULL_GL
+
void GLAPIENTRY
_mesa_IndexMask( GLuint mask )
{
FLUSH_VERTICES(ctx, _NEW_COLOR);
ctx->Color.IndexMask = mask;
}
-#endif
/**
* For GL_EXT_draw_buffers2 and GL3
*/
void GLAPIENTRY
-_mesa_ColorMaskIndexed( GLuint buf, GLboolean red, GLboolean green,
+_mesa_ColorMaski( GLuint buf, GLboolean red, GLboolean green,
GLboolean blue, GLboolean alpha )
{
GLubyte tmp[4];
void GLAPIENTRY
-_mesa_ClampColorARB(GLenum target, GLenum clamp)
+_mesa_ClampColor(GLenum target, GLenum clamp)
{
GET_CURRENT_CONTEXT(ctx);
ctx->Color._ClampFragmentColor = GL_TRUE;
ctx->Color.ClampReadColor = GL_FIXED_ONLY_ARB;
ctx->Color._ClampReadColor = GL_TRUE;
+
+ if (ctx->API == API_OPENGLES2) {
+ /* GLES 3 behaves as though GL_FRAMEBUFFER_SRGB is always enabled. */
+ ctx->Color.sRGBEnabled = GL_TRUE;
+ } else {
+ ctx->Color.sRGBEnabled = GL_FALSE;
+ }
}
/*@}*/