Add support for GL_{OES|NV}_viewport_array extensions

This commit is contained in:
Janos Pantos
2017-08-14 13:40:58 +01:00
committed by baldurk
parent 787045d3eb
commit 3acb027001
6 changed files with 134 additions and 70 deletions
+2
View File
@@ -788,6 +788,7 @@ void WrappedOpenGL::BuildGLESExtensions()
m_GLESExtensions.push_back("GL_KHR_texture_compression_astc_hdr");
m_GLESExtensions.push_back("GL_KHR_texture_compression_astc_ldr");
m_GLESExtensions.push_back("GL_KHR_texture_compression_astc_sliced_3d");
m_GLESExtensions.push_back("GL_NV_viewport_array");
m_GLESExtensions.push_back("GL_OES_compressed_ETC1_RGB8_texture");
m_GLESExtensions.push_back("GL_OES_copy_image");
m_GLESExtensions.push_back("GL_OES_depth24");
@@ -818,6 +819,7 @@ void WrappedOpenGL::BuildGLESExtensions()
m_GLESExtensions.push_back("GL_OES_texture_storage_multisample_2d_array");
m_GLESExtensions.push_back("GL_OES_vertex_array_object");
m_GLESExtensions.push_back("GL_OES_vertex_half_float");
m_GLESExtensions.push_back("GL_OES_viewport_array");
m_GLESExtensions.push_back("GL_OVR_multiview");
m_GLESExtensions.push_back("GL_OVR_multiview2");
m_GLESExtensions.push_back("GL_OVR_multiview_multisampled_render_to_texture");
+4
View File
@@ -651,8 +651,12 @@ public:
IMPLEMENT_FUNCTION_SERIALISED(void, glDepthRangef(GLfloat nearVal, GLfloat farVal));
IMPLEMENT_FUNCTION_SERIALISED(void, glDepthRangeIndexed(GLuint index, GLdouble nearVal,
GLdouble farVal));
IMPLEMENT_FUNCTION_SERIALISED(void, glDepthRangeIndexedfOES(GLuint index, GLfloat nearVal,
GLfloat farVal));
IMPLEMENT_FUNCTION_SERIALISED(void,
glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v));
IMPLEMENT_FUNCTION_SERIALISED(void, glDepthRangeArrayfvOES(GLuint first, GLsizei count,
const GLfloat *v));
IMPLEMENT_FUNCTION_SERIALISED(void, glDepthBoundsEXT(GLclampd nearVal, GLclampd farVal));
IMPLEMENT_FUNCTION_SERIALISED(void, glClipControl(GLenum origin, GLenum depth));
IMPLEMENT_FUNCTION_SERIALISED(void, glProvokingVertex(GLenum mode));
+15 -10
View File
@@ -141,7 +141,7 @@ struct GLHookSet
PFNGLGETSTRINGIPROC glGetStringi;
PFNGLGETBOOLEANI_VPROC glGetBooleani_v;
PFNGLGETINTEGERI_VPROC glGetIntegeri_v;
PFNGLGETFLOATI_VPROC glGetFloati_v; // aliases glGetFloati_vEXT
PFNGLGETFLOATI_VPROC glGetFloati_v; // aliases glGetFloati_vEXT, glGetFloati_vOES, glGetFloati_vNV
PFNGLGETDOUBLEI_VPROC glGetDoublei_v; // aliases glGetDoublei_vEXT
PFNGLGETINTEGER64I_VPROC glGetInteger64i_v;
PFNGLGETINTEGER64VPROC glGetInteger64v;
@@ -276,9 +276,9 @@ struct GLHookSet
PFNGLOBJECTLABELPROC glObjectLabel; // aliases glObjectLabelKHR
PFNGLLABELOBJECTEXTPROC glLabelObjectEXT;
PFNGLOBJECTPTRLABELPROC glObjectPtrLabel; // aliases glObjectPtrLabelKHR
PFNGLENABLEIPROC glEnablei; // aliases glEnableiEXT, glEnableIndexedEXT
PFNGLDISABLEIPROC glDisablei; // aliases glDisableiEXT, glDisableIndexedEXT
PFNGLISENABLEDIPROC glIsEnabledi; // aliases glIsEnablediEXT, glIsEnabledIndexedEXT
PFNGLENABLEIPROC glEnablei; // aliases glEnableiEXT, glEnableIndexedEXT, glEnableiOES, glEnableiNV
PFNGLDISABLEIPROC glDisablei; // aliases glDisableiEXT, glDisableIndexedEXT, glDisableiOES, glDisableiNV
PFNGLISENABLEDIPROC glIsEnabledi; // aliases glIsEnablediEXT, glIsEnabledIndexedEXT, glIsEnablediOES, glIsEnablediNV
PFNGLISBUFFERPROC glIsBuffer; // aliases glIsBufferARB
PFNGLISFRAMEBUFFERPROC glIsFramebuffer; // aliases glIsFramebufferEXT
PFNGLISPROGRAMPROC glIsProgram;
@@ -476,12 +476,12 @@ struct GLHookSet
PFNGLINVALIDATESUBFRAMEBUFFERPROC glInvalidateSubFramebuffer;
PFNGLINVALIDATETEXIMAGEPROC glInvalidateTexImage;
PFNGLINVALIDATETEXSUBIMAGEPROC glInvalidateTexSubImage;
PFNGLSCISSORARRAYVPROC glScissorArrayv;
PFNGLSCISSORINDEXEDPROC glScissorIndexed;
PFNGLSCISSORINDEXEDVPROC glScissorIndexedv;
PFNGLVIEWPORTINDEXEDFPROC glViewportIndexedf;
PFNGLVIEWPORTINDEXEDFVPROC glViewportIndexedfv;
PFNGLVIEWPORTARRAYVPROC glViewportArrayv;
PFNGLSCISSORARRAYVPROC glScissorArrayv; // aliases glScissorArrayvOES, glScissorArrayvNV
PFNGLSCISSORINDEXEDPROC glScissorIndexed; // aliases glScissorIndexedOES, glScissorIndexedNV
PFNGLSCISSORINDEXEDVPROC glScissorIndexedv; // aliases glScissorIndexedvOES, glScissorIndexedvNV
PFNGLVIEWPORTINDEXEDFPROC glViewportIndexedf; // aliases glViewportIndexedfOES, glViewportIndexedfNV
PFNGLVIEWPORTINDEXEDFVPROC glViewportIndexedfv; // aliases glViewportIndexedfvOES, glViewportIndexedfvNV
PFNGLVIEWPORTARRAYVPROC glViewportArrayv; // aliases glViewportArrayvOES, glViewportArrayvNV
PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding;
PFNGLSHADERSTORAGEBLOCKBINDINGPROC glShaderStorageBlockBinding;
PFNGLUNIFORMSUBROUTINESUIVPROC glUniformSubroutinesuiv;
@@ -613,6 +613,11 @@ struct GLHookSet
// GLES: EXT_discard_framebuffer
PFNGLDISCARDFRAMEBUFFEREXTPROC glDiscardFramebufferEXT;
// GLES: OES_viewport_array, NV_viewport_array
// only 2 functions which have different parameter types, so they can't be aliases of the ARB functions
PFNGLDEPTHRANGEARRAYFVOESPROC glDepthRangeArrayfvOES; // aliases glDepthRangeArrayfvNV
PFNGLDEPTHRANGEINDEXEDFOESPROC glDepthRangeIndexedfOES; // aliases glDepthRangeIndexedfNV
// ARB_shading_language_include
PFNGLNAMEDSTRINGARBPROC glNamedStringARB;
PFNGLDELETENAMEDSTRINGARBPROC glDeleteNamedStringARB;
+26 -48
View File
@@ -346,12 +346,18 @@
HookExtension(PFNGLENABLEIPROC, glEnablei); \
HookExtensionAlias(PFNGLENABLEIPROC, glEnablei, glEnableiEXT); \
HookExtensionAlias(PFNGLENABLEIPROC, glEnablei, glEnableIndexedEXT); \
HookExtensionAlias(PFNGLENABLEIPROC, glEnablei, glEnableiOES); \
HookExtensionAlias(PFNGLENABLEIPROC, glEnablei, glEnableiNV); \
HookExtension(PFNGLDISABLEIPROC, glDisablei); \
HookExtensionAlias(PFNGLDISABLEIPROC, glDisablei, glDisableiEXT); \
HookExtensionAlias(PFNGLDISABLEIPROC, glDisablei, glDisableIndexedEXT); \
HookExtensionAlias(PFNGLDISABLEIPROC, glDisablei, glDisableiOES); \
HookExtensionAlias(PFNGLDISABLEIPROC, glDisablei, glDisableiNV); \
HookExtension(PFNGLISENABLEDIPROC, glIsEnabledi); \
HookExtensionAlias(PFNGLISENABLEDIPROC, glIsEnabledi, glIsEnablediEXT); \
HookExtensionAlias(PFNGLISENABLEDIPROC, glIsEnabledi, glIsEnabledIndexedEXT); \
HookExtensionAlias(PFNGLISENABLEDIPROC, glIsEnabledi, glIsEnablediOES); \
HookExtensionAlias(PFNGLISENABLEDIPROC, glIsEnabledi, glIsEnablediNV); \
HookExtension(PFNGLBEGINTRANSFORMFEEDBACKPROC, glBeginTransformFeedback); \
HookExtensionAlias(PFNGLBEGINTRANSFORMFEEDBACKPROC, glBeginTransformFeedback, glBeginTransformFeedbackEXT); \
HookExtension(PFNGLENDTRANSFORMFEEDBACKPROC, glEndTransformFeedback); \
@@ -793,15 +799,29 @@
HookExtension(PFNGLGETVERTEXATTRIBLDVPROC, glGetVertexAttribLdv); \
HookExtensionAlias(PFNGLGETVERTEXATTRIBLDVPROC, glGetVertexAttribLdv, glGetVertexAttribLdvEXT); \
HookExtension(PFNGLVIEWPORTARRAYVPROC, glViewportArrayv); \
HookExtensionAlias(PFNGLVIEWPORTARRAYVPROC, glViewportArrayv, glViewportArrayvOES); \
HookExtensionAlias(PFNGLVIEWPORTARRAYVPROC, glViewportArrayv, glViewportArrayvNV); \
HookExtension(PFNGLVIEWPORTINDEXEDFPROC, glViewportIndexedf); \
HookExtensionAlias(PFNGLVIEWPORTINDEXEDFPROC, glViewportIndexedf, glViewportIndexedfOES); \
HookExtensionAlias(PFNGLVIEWPORTINDEXEDFPROC, glViewportIndexedf, glViewportIndexedfNV); \
HookExtension(PFNGLVIEWPORTINDEXEDFVPROC, glViewportIndexedfv); \
HookExtensionAlias(PFNGLVIEWPORTINDEXEDFVPROC, glViewportIndexedfv, glViewportIndexedfvOES); \
HookExtensionAlias(PFNGLVIEWPORTINDEXEDFVPROC, glViewportIndexedfv, glViewportIndexedfvNV); \
HookExtension(PFNGLSCISSORARRAYVPROC, glScissorArrayv); \
HookExtensionAlias(PFNGLSCISSORARRAYVPROC, glScissorArrayv, glScissorArrayvOES); \
HookExtensionAlias(PFNGLSCISSORARRAYVPROC, glScissorArrayv, glScissorArrayvNV); \
HookExtension(PFNGLSCISSORINDEXEDPROC, glScissorIndexed); \
HookExtensionAlias(PFNGLSCISSORINDEXEDPROC, glScissorIndexed, glScissorIndexedOES); \
HookExtensionAlias(PFNGLSCISSORINDEXEDPROC, glScissorIndexed, glScissorIndexedNV); \
HookExtension(PFNGLSCISSORINDEXEDVPROC, glScissorIndexedv); \
HookExtensionAlias(PFNGLSCISSORINDEXEDVPROC, glScissorIndexedv, glScissorIndexedvOES); \
HookExtensionAlias(PFNGLSCISSORINDEXEDVPROC, glScissorIndexedv, glScissorIndexedvNV); \
HookExtension(PFNGLDEPTHRANGEARRAYVPROC, glDepthRangeArrayv); \
HookExtension(PFNGLDEPTHRANGEINDEXEDPROC, glDepthRangeIndexed); \
HookExtension(PFNGLGETFLOATI_VPROC, glGetFloati_v); \
HookExtensionAlias(PFNGLGETFLOATI_VPROC, glGetFloati_v, glGetFloati_vEXT); \
HookExtensionAlias(PFNGLGETFLOATI_VPROC, glGetFloati_v, glGetFloati_vOES); \
HookExtensionAlias(PFNGLGETFLOATI_VPROC, glGetFloati_v, glGetFloati_vNV); \
HookExtension(PFNGLGETDOUBLEI_VPROC, glGetDoublei_v); \
HookExtensionAlias(PFNGLGETDOUBLEI_VPROC, glGetDoublei_v, glGetDoublei_vEXT); \
HookExtension(PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC, glDrawArraysInstancedBaseInstance); \
@@ -1161,6 +1181,10 @@
HookExtension(PFNGLPRIMITIVEBOUNDINGBOXPROC, glPrimitiveBoundingBox); \
HookExtensionAlias(PFNGLPRIMITIVEBOUNDINGBOXPROC, glPrimitiveBoundingBox, glPrimitiveBoundingBoxEXT); \
HookExtensionAlias(PFNGLPRIMITIVEBOUNDINGBOXPROC, glPrimitiveBoundingBox, glPrimitiveBoundingBoxOES); \
HookExtension(PFNGLDEPTHRANGEARRAYFVOESPROC, glDepthRangeArrayfvOES); \
HookExtensionAlias(PFNGLDEPTHRANGEARRAYFVOESPROC, glDepthRangeArrayfvOES, glDepthRangeArrayfvNV); \
HookExtension(PFNGLDEPTHRANGEINDEXEDFOESPROC, glDepthRangeIndexedfOES); \
HookExtensionAlias(PFNGLDEPTHRANGEINDEXEDFOESPROC, glDepthRangeIndexedfOES, glDepthRangeIndexedfNV); \
HookExtension(PFNGLDISCARDFRAMEBUFFEREXTPROC, glDiscardFramebufferEXT); \
HookExtension(PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC, glFramebufferTexture2DMultisampleEXT); \
HookExtension(PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC, glFramebufferTextureMultisampleMultiviewOVR); \
@@ -2019,6 +2043,8 @@
HookWrapper6(void, glFramebufferTextureMultiviewOVR, GLenum, target, GLenum, attachment, GLuint, texture, GLint, level, GLint, baseViewIndex, GLsizei, numViews); \
HookWrapper0(void, glBlendBarrier); \
HookWrapper8(void, glPrimitiveBoundingBox, GLfloat, minX, GLfloat, minY, GLfloat, minZ, GLfloat, minW, GLfloat, maxX, GLfloat, maxY, GLfloat, maxZ, GLfloat, maxW); \
HookWrapper3(void, glDepthRangeArrayfvOES, GLuint, first, GLsizei, count, const GLfloat *, v); \
HookWrapper3(void, glDepthRangeIndexedfOES, GLuint, index, GLfloat, n, GLfloat, f); \
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); \
HookWrapper7(void, glFramebufferTextureMultisampleMultiviewOVR, GLenum, target, GLenum, attachment, GLuint, texture, GLint, level, GLsizei, samples, GLint, baseViewIndex, GLsizei, numViews); \
@@ -3576,27 +3602,15 @@
HookWrapper4(void, glgetnuniformuivkhr, GLuint, program, GLint, location, GLsizei, bufSize, GLuint *, params); \
HookWrapper2(void, gleglimagetargettexture2does, GLenum, target, GLeglImageOES, image); \
HookWrapper2(void, gleglimagetargetrenderbufferstorageoes, GLenum, target, GLeglImageOES, image); \
HookWrapper2(void, glenableioes, GLenum, target, GLuint, index); \
HookWrapper2(void, gldisableioes, GLenum, target, GLuint, index); \
HookWrapper2(void, glblendequationioes, GLuint, buf, GLenum, mode); \
HookWrapper3(void, glblendequationseparateioes, GLuint, buf, GLenum, modeRGB, GLenum, modeAlpha); \
HookWrapper3(void, glblendfuncioes, GLuint, buf, GLenum, src, GLenum, dst); \
HookWrapper5(void, glblendfuncseparateioes, GLuint, buf, GLenum, srcRGB, GLenum, dstRGB, GLenum, srcAlpha, GLenum, dstAlpha); \
HookWrapper5(void, glcolormaskioes, GLuint, index, GLboolean, r, GLboolean, g, GLboolean, b, GLboolean, a); \
HookWrapper2(GLboolean, glisenabledioes, GLenum, target, GLuint, index); \
HookWrapper6(void, gldrawelementsinstancedbasevertexoes, GLenum, mode, GLsizei, count, GLenum, type, const void *, indices, GLsizei, instancecount, GLint, basevertex); \
HookWrapper5(void, glgetprogrambinaryoes, GLuint, program, GLsizei, bufSize, GLsizei *, length, GLenum *, binaryFormat, void *, binary); \
HookWrapper4(void, glprogrambinaryoes, GLuint, program, GLenum, binaryFormat, const void *, binary, GLint, length); \
HookWrapper8(void, gltextureviewoes, GLuint, texture, GLenum, target, GLuint, origtexture, GLenum, internalformat, GLuint, minlevel, GLuint, numlevels, GLuint, minlayer, GLuint, numlayers); \
HookWrapper3(void, glviewportarrayvoes, GLuint, first, GLsizei, count, const GLfloat *, v); \
HookWrapper5(void, glviewportindexedfoes, GLuint, index, GLfloat, x, GLfloat, y, GLfloat, w, GLfloat, h); \
HookWrapper2(void, glviewportindexedfvoes, GLuint, index, const GLfloat *, v); \
HookWrapper3(void, glscissorarrayvoes, GLuint, first, GLsizei, count, const GLint *, v); \
HookWrapper5(void, glscissorindexedoes, GLuint, index, GLint, left, GLint, bottom, GLsizei, width, GLsizei, height); \
HookWrapper2(void, glscissorindexedvoes, GLuint, index, const GLint *, v); \
HookWrapper3(void, gldepthrangearrayfvoes, GLuint, first, GLsizei, count, const GLfloat *, v); \
HookWrapper3(void, gldepthrangeindexedfoes, GLuint, index, GLfloat, n, GLfloat, f); \
HookWrapper3(void, glgetfloati_voes, GLenum, target, GLuint, index, GLfloat *, data); \
HookWrapper10(void, glblitframebufferangle, GLint, srcX0, GLint, srcY0, GLint, srcX1, GLint, srcY1, GLint, dstX0, GLint, dstY0, GLint, dstX1, GLint, dstY1, GLbitfield, mask, GLenum, filter); \
HookWrapper5(void, glrenderbufferstoragemultisampleangle, GLenum, target, GLsizei, samples, GLenum, internalformat, GLsizei, width, GLsizei, height); \
HookWrapper4(void, gldrawarraysinstancedangle, GLenum, mode, GLint, first, GLsizei, count, GLsizei, primcount); \
@@ -3685,18 +3699,6 @@
HookWrapper4(void, gluniformmatrix4x3fvnv, GLint, location, GLsizei, count, GLboolean, transpose, const GLfloat *, value); \
HookWrapper2(void, glpolygonmodenv, GLenum, face, GLenum, mode); \
HookWrapper1(void, glreadbuffernv, GLenum, mode); \
HookWrapper3(void, glviewportarrayvnv, GLuint, first, GLsizei, count, const GLfloat *, v); \
HookWrapper5(void, glviewportindexedfnv, GLuint, index, GLfloat, x, GLfloat, y, GLfloat, w, GLfloat, h); \
HookWrapper2(void, glviewportindexedfvnv, GLuint, index, const GLfloat *, v); \
HookWrapper3(void, glscissorarrayvnv, GLuint, first, GLsizei, count, const GLint *, v); \
HookWrapper5(void, glscissorindexednv, GLuint, index, GLint, left, GLint, bottom, GLsizei, width, GLsizei, height); \
HookWrapper2(void, glscissorindexedvnv, GLuint, index, const GLint *, v); \
HookWrapper3(void, gldepthrangearrayfvnv, GLuint, first, GLsizei, count, const GLfloat *, v); \
HookWrapper3(void, gldepthrangeindexedfnv, GLuint, index, GLfloat, n, GLfloat, f); \
HookWrapper3(void, glgetfloati_vnv, GLenum, target, GLuint, index, GLfloat *, data); \
HookWrapper2(void, glenableinv, GLenum, target, GLuint, index); \
HookWrapper2(void, gldisableinv, GLenum, target, GLuint, index); \
HookWrapper2(GLboolean, glisenabledinv, GLenum, target, GLuint, index); \
HookWrapper5(void, glviewportswizzlenv, GLuint, index, GLenum, swizzlex, GLenum, swizzley, GLenum, swizzlez, GLenum, swizzlew); \
HookWrapper2(void, glalphafuncqcom, GLenum, func, GLclampf, ref); \
HookWrapper3(void, glgetdrivercontrolsqcom, GLint *, num, GLsizei, size, GLuint *, driverControls); \
@@ -5539,27 +5541,15 @@
HandleUnsupported(PFNGLGETNUNIFORMUIVKHRPROC, glgetnuniformuivkhr); \
HandleUnsupported(PFNGLEGLIMAGETARGETTEXTURE2DOESPROC, gleglimagetargettexture2does); \
HandleUnsupported(PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC, gleglimagetargetrenderbufferstorageoes); \
HandleUnsupported(PFNGLENABLEIOESPROC, glenableioes); \
HandleUnsupported(PFNGLDISABLEIOESPROC, gldisableioes); \
HandleUnsupported(PFNGLBLENDEQUATIONIOESPROC, glblendequationioes); \
HandleUnsupported(PFNGLBLENDEQUATIONSEPARATEIOESPROC, glblendequationseparateioes); \
HandleUnsupported(PFNGLBLENDFUNCIOESPROC, glblendfuncioes); \
HandleUnsupported(PFNGLBLENDFUNCSEPARATEIOESPROC, glblendfuncseparateioes); \
HandleUnsupported(PFNGLCOLORMASKIOESPROC, glcolormaskioes); \
HandleUnsupported(PFNGLISENABLEDIOESPROC, glisenabledioes); \
HandleUnsupported(PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXOESPROC, gldrawelementsinstancedbasevertexoes); \
HandleUnsupported(PFNGLGETPROGRAMBINARYOESPROC, glgetprogrambinaryoes); \
HandleUnsupported(PFNGLPROGRAMBINARYOESPROC, glprogrambinaryoes); \
HandleUnsupported(PFNGLTEXTUREVIEWOESPROC, gltextureviewoes); \
HandleUnsupported(PFNGLVIEWPORTARRAYVOESPROC, glviewportarrayvoes); \
HandleUnsupported(PFNGLVIEWPORTINDEXEDFOESPROC, glviewportindexedfoes); \
HandleUnsupported(PFNGLVIEWPORTINDEXEDFVOESPROC, glviewportindexedfvoes); \
HandleUnsupported(PFNGLSCISSORARRAYVOESPROC, glscissorarrayvoes); \
HandleUnsupported(PFNGLSCISSORINDEXEDOESPROC, glscissorindexedoes); \
HandleUnsupported(PFNGLSCISSORINDEXEDVOESPROC, glscissorindexedvoes); \
HandleUnsupported(PFNGLDEPTHRANGEARRAYFVOESPROC, gldepthrangearrayfvoes); \
HandleUnsupported(PFNGLDEPTHRANGEINDEXEDFOESPROC, gldepthrangeindexedfoes); \
HandleUnsupported(PFNGLGETFLOATI_VOESPROC, glgetfloati_voes); \
HandleUnsupported(PFNGLBLITFRAMEBUFFERANGLEPROC, glblitframebufferangle); \
HandleUnsupported(PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC, glrenderbufferstoragemultisampleangle); \
HandleUnsupported(PFNGLDRAWARRAYSINSTANCEDANGLEPROC, gldrawarraysinstancedangle); \
@@ -5648,18 +5638,6 @@
HandleUnsupported(PFNGLUNIFORMMATRIX4X3FVNVPROC, gluniformmatrix4x3fvnv); \
HandleUnsupported(PFNGLPOLYGONMODENVPROC, glpolygonmodenv); \
HandleUnsupported(PFNGLREADBUFFERNVPROC, glreadbuffernv); \
HandleUnsupported(PFNGLVIEWPORTARRAYVNVPROC, glviewportarrayvnv); \
HandleUnsupported(PFNGLVIEWPORTINDEXEDFNVPROC, glviewportindexedfnv); \
HandleUnsupported(PFNGLVIEWPORTINDEXEDFVNVPROC, glviewportindexedfvnv); \
HandleUnsupported(PFNGLSCISSORARRAYVNVPROC, glscissorarrayvnv); \
HandleUnsupported(PFNGLSCISSORINDEXEDNVPROC, glscissorindexednv); \
HandleUnsupported(PFNGLSCISSORINDEXEDVNVPROC, glscissorindexedvnv); \
HandleUnsupported(PFNGLDEPTHRANGEARRAYFVNVPROC, gldepthrangearrayfvnv); \
HandleUnsupported(PFNGLDEPTHRANGEINDEXEDFNVPROC, gldepthrangeindexedfnv); \
HandleUnsupported(PFNGLGETFLOATI_VNVPROC, glgetfloati_vnv); \
HandleUnsupported(PFNGLENABLEINVPROC, glenableinv); \
HandleUnsupported(PFNGLDISABLEINVPROC, gldisableinv); \
HandleUnsupported(PFNGLISENABLEDINVPROC, glisenabledinv); \
HandleUnsupported(PFNGLVIEWPORTSWIZZLENVPROC, glviewportswizzlenv); \
HandleUnsupported(PFNGLALPHAFUNCQCOMPROC, glalphafuncqcom); \
HandleUnsupported(PFNGLGETDRIVERCONTROLSQCOMPROC, glgetdrivercontrolsqcom); \
+35 -10
View File
@@ -993,7 +993,18 @@ void GLRenderState::FetchState(void *ctx, WrappedOpenGL *gl)
}
for(GLuint i = 0; i < RDCMIN(maxViews, (GLuint)ARRAY_COUNT(DepthRanges)); i++)
m_Real->glGetDoublei_v(eGL_DEPTH_RANGE, i, &DepthRanges[i].nearZ);
{
if(IsGLES)
{
float v[2];
m_Real->glGetFloati_v(eGL_DEPTH_RANGE, i, v);
DepthRanges[i] = {(double)v[0], (double)v[1]};
}
else
{
m_Real->glGetDoublei_v(eGL_DEPTH_RANGE, i, &DepthRanges[i].nearZ);
}
}
}
else
{
@@ -1004,8 +1015,16 @@ void GLRenderState::FetchState(void *ctx, WrappedOpenGL *gl)
m_Real->glGetFloatv(eGL_VIEWPORT, &Viewports[0].x);
m_Real->glGetIntegerv(eGL_SCISSOR_BOX, &Scissors[0].x);
Scissors[0].enabled = (m_Real->glIsEnabled(eGL_SCISSOR_TEST) == GL_TRUE);
if(!IsGLES)
if(IsGLES)
{
float v[2];
m_Real->glGetFloatv(eGL_DEPTH_RANGE, v);
DepthRanges[0] = {(double)v[0], (double)v[1]};
}
else
{
m_Real->glGetDoublev(eGL_DEPTH_RANGE, &DepthRanges[0].nearZ);
}
for(GLuint i = 1; i < (GLuint)ARRAY_COUNT(Viewports); i++)
memcpy(&Viewports[i], &Viewports[0], sizeof(Viewports[i]));
@@ -1013,11 +1032,8 @@ void GLRenderState::FetchState(void *ctx, WrappedOpenGL *gl)
for(GLuint i = 1; i < (GLuint)ARRAY_COUNT(Scissors); i++)
memcpy(&Scissors[i], &Scissors[0], sizeof(Scissors[i]));
if(!IsGLES)
{
for(GLuint i = 1; i < (GLuint)ARRAY_COUNT(DepthRanges); i++)
memcpy(&DepthRanges[i], &DepthRanges[0], sizeof(DepthRanges[i]));
}
for(GLuint i = 1; i < (GLuint)ARRAY_COUNT(DepthRanges); i++)
memcpy(&DepthRanges[i], &DepthRanges[0], sizeof(DepthRanges[i]));
}
m_Real->glGetIntegerv(eGL_DRAW_FRAMEBUFFER_BINDING, (GLint *)&DrawFBO);
@@ -1388,8 +1404,15 @@ void GLRenderState::ApplyState(void *ctx, WrappedOpenGL *gl)
for(GLuint i = 0; i < RDCMIN(maxViews, (GLuint)ARRAY_COUNT(DepthRanges)); i++)
{
double v[2] = {DepthRanges[i].nearZ, DepthRanges[i].farZ};
m_Real->glDepthRangeArrayv(i, 1, v);
if(IsGLES)
{
float v[2] = {(float)DepthRanges[i].nearZ, (float)DepthRanges[i].farZ};
m_Real->glDepthRangeArrayfvOES(i, 1, v);
}
else
{
m_Real->glDepthRangeArrayv(i, 1, &DepthRanges[i].nearZ);
}
}
}
else
@@ -1404,7 +1427,9 @@ void GLRenderState::ApplyState(void *ctx, WrappedOpenGL *gl)
else
m_Real->glDisable(eGL_SCISSOR_TEST);
if(!IsGLES)
if(IsGLES)
m_Real->glDepthRangef((float)DepthRanges[0].nearZ, (float)DepthRanges[0].farZ);
else
m_Real->glDepthRange(DepthRanges[0].nearZ, DepthRanges[0].farZ);
}
@@ -702,7 +702,12 @@ bool WrappedOpenGL::Serialise_glDepthRangeIndexed(GLuint index, GLdouble nearVal
SERIALISE_ELEMENT(GLdouble, f, farVal);
if(m_State <= EXECUTING)
m_Real.glDepthRangeIndexed(i, n, f);
{
if(IsGLES)
m_Real.glDepthRangeIndexedfOES(i, (GLfloat)n, (GLfloat)f);
else
m_Real.glDepthRangeIndexed(i, n, f);
}
return true;
}
@@ -720,6 +725,19 @@ void WrappedOpenGL::glDepthRangeIndexed(GLuint index, GLdouble nearVal, GLdouble
}
}
void WrappedOpenGL::glDepthRangeIndexedfOES(GLuint index, GLfloat nearVal, GLfloat farVal)
{
m_Real.glDepthRangeIndexedfOES(index, nearVal, farVal);
if(m_State == WRITING_CAPFRAME)
{
SCOPED_SERIALISE_CONTEXT(DEPTH_RANGE_IDX);
Serialise_glDepthRangeIndexed(index, (GLdouble)nearVal, (GLdouble)farVal);
m_ContextRecord->AddChunk(scope.Get());
}
}
bool WrappedOpenGL::Serialise_glDepthRangeArrayv(GLuint first, GLsizei count, const GLdouble *v)
{
SERIALISE_ELEMENT(uint32_t, idx, first);
@@ -728,7 +746,20 @@ bool WrappedOpenGL::Serialise_glDepthRangeArrayv(GLuint first, GLsizei count, co
if(m_State <= EXECUTING)
{
m_Real.glDepthRangeArrayv(idx, cnt, ranges);
if(IsGLES)
{
GLfloat *fv = new GLfloat[cnt * 2];
for(uint32_t i = 0; i < cnt * 2; ++i)
fv[i] = (GLfloat)ranges[i];
m_Real.glDepthRangeArrayfvOES(idx, cnt, fv);
delete[] fv;
}
else
{
m_Real.glDepthRangeArrayv(idx, cnt, ranges);
}
}
delete[] ranges;
@@ -749,6 +780,25 @@ void WrappedOpenGL::glDepthRangeArrayv(GLuint first, GLsizei count, const GLdoub
}
}
void WrappedOpenGL::glDepthRangeArrayfvOES(GLuint first, GLsizei count, const GLfloat *v)
{
m_Real.glDepthRangeArrayfvOES(first, count, v);
if(m_State == WRITING_CAPFRAME)
{
GLdouble *dv = new GLdouble[count * 2];
for(GLsizei i = 0; i < count * 2; ++i)
dv[i] = v[i];
SCOPED_SERIALISE_CONTEXT(DEPTH_RANGEARRAY);
Serialise_glDepthRangeArrayv(first, count, dv);
delete[] dv;
m_ContextRecord->AddChunk(scope.Get());
}
}
bool WrappedOpenGL::Serialise_glDepthBoundsEXT(GLclampd nearVal, GLclampd farVal)
{
SERIALISE_ELEMENT(GLdouble, n, nearVal);