Add support for glBlendBarrier GLES core function

This commit is contained in:
Janos Pantos
2017-07-20 11:22:47 -07:00
committed by Baldur Karlsson
parent 5123da2acd
commit 74b343afe3
4 changed files with 29 additions and 5 deletions
+1
View File
@@ -617,6 +617,7 @@ public:
IMPLEMENT_FUNCTION_SERIALISED(void, glBlendEquationSeparatei(GLuint buf, GLenum modeRGB,
GLenum modeAlpha));
IMPLEMENT_FUNCTION_SERIALISED(void, glBlendBarrierKHR());
IMPLEMENT_FUNCTION_SERIALISED(void, glBlendBarrier());
IMPLEMENT_FUNCTION_SERIALISED(void, glLogicOp(GLenum opcode));
IMPLEMENT_FUNCTION_SERIALISED(void, glStencilFunc(GLenum func, GLint ref, GLuint mask));
IMPLEMENT_FUNCTION_SERIALISED(void, glStencilMask(GLuint mask));
+2 -1
View File
@@ -604,7 +604,8 @@ struct GLHookSet
PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer; // aliases glBlitFramebufferEXT
// GLES core
PFNGLPRIMITIVEBOUNDINGBOXEXTPROC glPrimitiveBoundingBox; // aliases glPrimitiveBoundingBoxEXT, glPrimitiveBoundingBoxOES
PFNGLPRIMITIVEBOUNDINGBOXPROC glPrimitiveBoundingBox; // aliases glPrimitiveBoundingBoxEXT, glPrimitiveBoundingBoxOES
PFNGLBLENDBARRIERPROC glBlendBarrier;
// GLES: EXT_multisampled_render_to_texture
PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC glFramebufferTexture2DMultisampleEXT;
+5 -3
View File
@@ -1156,9 +1156,10 @@
HookExtension(PFNGLRASTERSAMPLESEXTPROC, glRasterSamplesEXT); \
HookExtension(PFNGLFRAMETERMINATORGREMEDYPROC, glFrameTerminatorGREMEDY); \
HookExtension(PFNGLSTRINGMARKERGREMEDYPROC, glStringMarkerGREMEDY); \
HookExtension(PFNGLPRIMITIVEBOUNDINGBOXOESPROC, glPrimitiveBoundingBox); \
HookExtensionAlias(PFNGLPRIMITIVEBOUNDINGBOXOESPROC, glPrimitiveBoundingBox, glPrimitiveBoundingBoxEXT); \
HookExtensionAlias(PFNGLPRIMITIVEBOUNDINGBOXOESPROC, glPrimitiveBoundingBox, glPrimitiveBoundingBoxOES); \
HookExtension(PFNGLBLENDBARRIERPROC, glBlendBarrier); \
HookExtension(PFNGLPRIMITIVEBOUNDINGBOXPROC, glPrimitiveBoundingBox); \
HookExtensionAlias(PFNGLPRIMITIVEBOUNDINGBOXPROC, glPrimitiveBoundingBox, glPrimitiveBoundingBoxEXT); \
HookExtensionAlias(PFNGLPRIMITIVEBOUNDINGBOXPROC, glPrimitiveBoundingBox, glPrimitiveBoundingBoxOES); \
HookExtension(PFNGLDISCARDFRAMEBUFFEREXTPROC, glDiscardFramebufferEXT); \
HookExtension(PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC, glFramebufferTexture2DMultisampleEXT); \
HookExtension(PFNWGLDXSETRESOURCESHAREHANDLENVPROC, wglDXSetResourceShareHandleNV); \
@@ -2013,6 +2014,7 @@
HookWrapper2(void, glRasterSamplesEXT, GLuint, samples, GLboolean, fixedsamplelocations); \
HookWrapper0(void, glFrameTerminatorGREMEDY); \
HookWrapper2(void, glStringMarkerGREMEDY, GLsizei, len, const void *, string); \
HookWrapper0(void, glBlendBarrier); \
HookWrapper8(void, glPrimitiveBoundingBox, GLfloat, minX, GLfloat, minY, GLfloat, minZ, GLfloat, minW, GLfloat, maxX, GLfloat, maxY, GLfloat, maxZ, GLfloat, maxW); \
HookWrapper3(void, glDiscardFramebufferEXT, GLenum, target, GLsizei, numAttachments, const GLenum *, attachments); \
HookWrapper6(void, glFramebufferTexture2DMultisampleEXT, GLenum, target, GLenum, attachment, GLenum, textarget, GLuint, texture, GLint, level, GLsizei, samples); \
@@ -276,7 +276,12 @@ void WrappedOpenGL::glBlendEquationSeparatei(GLuint buf, GLenum modeRGB, GLenum
bool WrappedOpenGL::Serialise_glBlendBarrierKHR()
{
if(m_State <= EXECUTING)
m_Real.glBlendBarrierKHR();
{
if(IsGLES && m_Real.glBlendBarrier)
m_Real.glBlendBarrier();
else
m_Real.glBlendBarrierKHR();
}
return true;
}
@@ -296,6 +301,21 @@ void WrappedOpenGL::glBlendBarrierKHR()
}
}
void WrappedOpenGL::glBlendBarrier()
{
CoherentMapImplicitBarrier();
m_Real.glBlendBarrier();
if(m_State == WRITING_CAPFRAME)
{
SCOPED_SERIALISE_CONTEXT(BLEND_BARRIER);
Serialise_glBlendBarrierKHR();
m_ContextRecord->AddChunk(scope.Get());
}
}
bool WrappedOpenGL::Serialise_glLogicOp(GLenum opcode)
{
SERIALISE_ELEMENT(GLenum, Op, opcode);