OpenGLRenderer: Fix loading of glSpecializeShader
This commit is contained in:
parent
6dc2cefc2c
commit
b0ecb64f19
|
|
@ -19,9 +19,9 @@
|
||||||
#define GL_FILL 0x1B02
|
#define GL_FILL 0x1B02
|
||||||
#define GL_SHADER_BINARY_FORMAT_SPIR_V_ARB 0x9551
|
#define GL_SHADER_BINARY_FORMAT_SPIR_V_ARB 0x9551
|
||||||
#define GL_SPIR_V_BINARY_ARB 0x9552
|
#define GL_SPIR_V_BINARY_ARB 0x9552
|
||||||
typedef void (GL_APIENTRYP PFNGLPOLYGONMODEPROC) (GLenum face, GLenum mode);
|
|
||||||
typedef void (GL_APIENTRYP PFNGLSPECIALIZESHADERARBPROC) (GLuint shader, const GLchar* pEntryPoint, GLuint numSpecializationConstants, const GLuint* pConstantIndex, const GLuint* pConstantValue);
|
|
||||||
typedef void (GL_APIENTRYP PFNGLDRAWBUFFERPROC) (GLenum buf);
|
typedef void (GL_APIENTRYP PFNGLDRAWBUFFERPROC) (GLenum buf);
|
||||||
|
typedef void (GL_APIENTRYP PFNGLPOLYGONMODEPROC) (GLenum face, GLenum mode);
|
||||||
|
typedef void (GL_APIENTRYP PFNGLSPECIALIZESHADERPROC) (GLuint shader, const GLchar* pEntryPoint, GLuint numSpecializationConstants, const GLuint* pConstantIndex, const GLuint* pConstantValue);
|
||||||
|
|
||||||
// OpenGL core
|
// OpenGL core
|
||||||
#define NAZARA_OPENGLRENDERER_FOREACH_GLES_FUNC(cb, extCb) \
|
#define NAZARA_OPENGLRENDERER_FOREACH_GLES_FUNC(cb, extCb) \
|
||||||
|
|
@ -169,22 +169,19 @@ typedef void (GL_APIENTRYP PFNGLDRAWBUFFERPROC) (GLenum buf);
|
||||||
cb(glVertexAttribIPointer, PFNGLVERTEXATTRIBIPOINTERPROC) \
|
cb(glVertexAttribIPointer, PFNGLVERTEXATTRIBIPOINTERPROC) \
|
||||||
cb(glVertexAttribPointer, PFNGLVERTEXATTRIBPOINTERPROC) \
|
cb(glVertexAttribPointer, PFNGLVERTEXATTRIBPOINTERPROC) \
|
||||||
cb(glViewport, PFNGLVIEWPORTPROC) \
|
cb(glViewport, PFNGLVIEWPORTPROC) \
|
||||||
\
|
/* Core OpenGL (extension in OpenGL ES) */ \
|
||||||
extCb(glCopyImageSubData, PFNGLCOPYIMAGESUBDATAPROC) \
|
|
||||||
\
|
|
||||||
extCb(glDebugMessageCallback, PFNGLDEBUGMESSAGECALLBACKPROC) \
|
|
||||||
\
|
|
||||||
extCb(glDrawBuffer, PFNGLDRAWBUFFERPROC) \
|
extCb(glDrawBuffer, PFNGLDRAWBUFFERPROC) \
|
||||||
\
|
|
||||||
extCb(glPolygonMode, PFNGLPOLYGONMODEPROC) \
|
extCb(glPolygonMode, PFNGLPOLYGONMODEPROC) \
|
||||||
\
|
/* OpenGL 4.2 - OpenGL ES 3.1 */\
|
||||||
extCb(glMemoryBarrier, PFNGLMEMORYBARRIERPROC) \
|
extCb(glMemoryBarrier, PFNGLMEMORYBARRIERPROC) \
|
||||||
extCb(glMemoryBarrierByRegion, PFNGLMEMORYBARRIERBYREGIONPROC) \
|
extCb(glMemoryBarrierByRegion, PFNGLMEMORYBARRIERBYREGIONPROC) \
|
||||||
\
|
/* OpenGL 4.3 - OpenGL ES 3.2 */\
|
||||||
|
extCb(glCopyImageSubData, PFNGLCOPYIMAGESUBDATAPROC) \
|
||||||
|
extCb(glDebugMessageCallback, PFNGLDEBUGMESSAGECALLBACKPROC) \
|
||||||
extCb(glObjectLabel, PFNGLOBJECTLABELPROC) \
|
extCb(glObjectLabel, PFNGLOBJECTLABELPROC) \
|
||||||
extCb(glPopDebugGroup, PFNGLPOPDEBUGGROUPPROC) \
|
extCb(glPopDebugGroup, PFNGLPOPDEBUGGROUPPROC) \
|
||||||
extCb(glPushDebugGroup, PFNGLPUSHDEBUGGROUPPROC) \
|
extCb(glPushDebugGroup, PFNGLPUSHDEBUGGROUPPROC) \
|
||||||
\
|
/* OpenGL 4.6 - GL_ARB_spirv_extensions */\
|
||||||
extCb(glSpecializeShaderARB, PFNGLSPECIALIZESHADERARBPROC) \
|
extCb(glSpecializeShader, PFNGLSPECIALIZESHADERPROC) \
|
||||||
|
|
||||||
#endif // NAZARA_OPENGLRENDERER_WRAPPER_COREFUNCTIONS_HPP
|
#endif // NAZARA_OPENGLRENDERER_WRAPPER_COREFUNCTIONS_HPP
|
||||||
|
|
|
||||||
|
|
@ -90,9 +90,9 @@ namespace Nz::GL
|
||||||
{
|
{
|
||||||
assert(m_objectId);
|
assert(m_objectId);
|
||||||
const Context& context = EnsureDeviceContext();
|
const Context& context = EnsureDeviceContext();
|
||||||
assert(context.glSpecializeShaderARB);
|
assert(context.glSpecializeShader);
|
||||||
|
|
||||||
context.glSpecializeShaderARB(m_objectId, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue);
|
context.glSpecializeShader(m_objectId, pEntryPoint, numSpecializationConstants, pConstantIndex, pConstantValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
inline GLuint Shader::CreateHelper(OpenGLDevice& /*device*/, const Context& context, GLenum shaderStage)
|
inline GLuint Shader::CreateHelper(OpenGLDevice& /*device*/, const Context& context, GLenum shaderStage)
|
||||||
|
|
|
||||||
|
|
@ -804,6 +804,11 @@ namespace Nz::GL
|
||||||
|
|
||||||
return loader.Load<PFNGLPOLYGONMODENVPROC, functionIndex>(glPolygonMode, "glPolygonModeNV", false); //< from GL_NV_polygon_mode
|
return loader.Load<PFNGLPOLYGONMODENVPROC, functionIndex>(glPolygonMode, "glPolygonModeNV", false); //< from GL_NV_polygon_mode
|
||||||
}
|
}
|
||||||
|
else if (function == "glSpecializeShader")
|
||||||
|
{
|
||||||
|
constexpr std::size_t functionIndex = UnderlyingCast(FunctionIndex::glSpecializeShader);
|
||||||
|
return loader.Load<PFNGLSPECIALIZESHADERPROC, functionIndex>(glSpecializeShader, "glSpecializeShaderARB", false); //< from GL_ARB_spirv_extensions
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue