mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-13 13:30:44 +00:00
Add some more easily-implemented extensions
This commit is contained in:
@@ -305,6 +305,7 @@ enum GLChunkType
|
||||
BIND_VERTEXBUFFERS,
|
||||
VERTEXBINDINGDIVISOR,
|
||||
DISPATCH_COMPUTE,
|
||||
DISPATCH_COMPUTE_GROUP_SIZE,
|
||||
DISPATCH_COMPUTE_INDIRECT,
|
||||
MEMORY_BARRIER,
|
||||
MEMORY_BARRIER_BY_REGION,
|
||||
|
||||
@@ -199,6 +199,7 @@ const char *GLChunkNames[] =
|
||||
"glBindVertexBuffers",
|
||||
"glVertexBindingDivisor",
|
||||
"glDispatchCompute",
|
||||
"glDispatchComputeGroupSizeARB",
|
||||
"glDispatchComputeIndirect",
|
||||
"glMemoryBarrier",
|
||||
"glMemoryBarrierByRegion",
|
||||
@@ -343,6 +344,7 @@ WrappedOpenGL::WrappedOpenGL(const char *logfile, const GLHookSet &funcs)
|
||||
globalExts.push_back("GL_ARB_clear_texture");
|
||||
globalExts.push_back("GL_ARB_color_buffer_float");
|
||||
globalExts.push_back("GL_ARB_compute_shader");
|
||||
globalExts.push_back("GL_ARB_compute_variable_group_size");
|
||||
globalExts.push_back("GL_ARB_conservative_depth");
|
||||
globalExts.push_back("GL_ARB_copy_buffer");
|
||||
globalExts.push_back("GL_ARB_copy_image");
|
||||
@@ -367,6 +369,7 @@ WrappedOpenGL::WrappedOpenGL(const char *logfile, const GLHookSet &funcs)
|
||||
globalExts.push_back("GL_ARB_framebuffer_object");
|
||||
globalExts.push_back("GL_ARB_framebuffer_sRGB");
|
||||
globalExts.push_back("GL_ARB_get_program_binary");
|
||||
globalExts.push_back("GL_ARB_geometry_shader4");
|
||||
globalExts.push_back("GL_ARB_gpu_shader_fp64");
|
||||
globalExts.push_back("GL_ARB_gpu_shader5");
|
||||
globalExts.push_back("GL_ARB_half_float_pixel");
|
||||
@@ -450,6 +453,7 @@ WrappedOpenGL::WrappedOpenGL(const char *logfile, const GLHookSet &funcs)
|
||||
globalExts.push_back("GL_ARB_vertex_program");
|
||||
globalExts.push_back("GL_ARB_vertex_type_10f_11f_11f_rev");
|
||||
globalExts.push_back("GL_ARB_vertex_type_2_10_10_10_rev");
|
||||
globalExts.push_back("GL_ARB_viewport_array");
|
||||
globalExts.push_back("GL_EXT_depth_bounds_test");
|
||||
globalExts.push_back("GL_EXT_direct_state_access");
|
||||
globalExts.push_back("GL_EXT_framebuffer_blit");
|
||||
@@ -2329,6 +2333,9 @@ void WrappedOpenGL::ProcessChunk(uint64_t offset, GLChunkType context)
|
||||
case DISPATCH_COMPUTE:
|
||||
Serialise_glDispatchCompute(0, 0, 0);
|
||||
break;
|
||||
case DISPATCH_COMPUTE_GROUP_SIZE:
|
||||
Serialise_glDispatchComputeGroupSizeARB(0, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
case DISPATCH_COMPUTE_INDIRECT:
|
||||
Serialise_glDispatchComputeIndirect(0);
|
||||
break;
|
||||
|
||||
@@ -600,6 +600,7 @@ class WrappedOpenGL
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glDrawTransformFeedbackStreamInstanced(GLenum mode, GLuint id, GLuint stream, GLsizei instancecount));
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glDispatchComputeGroupSizeARB(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glDispatchComputeIndirect(GLintptr indirect));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glMemoryBarrier(GLbitfield barriers));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glMemoryBarrierByRegion(GLbitfield barriers));
|
||||
|
||||
@@ -264,7 +264,7 @@ struct GLHookSet
|
||||
PFNGLDETACHSHADERPROC glDetachShader;
|
||||
PFNGLRELEASESHADERCOMPILERPROC glReleaseShaderCompiler;
|
||||
PFNGLLINKPROGRAMPROC glLinkProgram;
|
||||
PFNGLPROGRAMPARAMETERIPROC glProgramParameteri;
|
||||
PFNGLPROGRAMPARAMETERIPROC glProgramParameteri; // aliases glProgramParameteriARB
|
||||
PFNGLUSEPROGRAMPROC glUseProgram;
|
||||
PFNGLSHADERBINARYPROC glShaderBinary;
|
||||
PFNGLPROGRAMBINARYPROC glProgramBinary;
|
||||
@@ -301,12 +301,12 @@ struct GLHookSet
|
||||
PFNGLDRAWBUFFERSPROC glDrawBuffers; // aliases glDrawBuffersARB
|
||||
PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers; // aliases glGenFramebuffersEXT
|
||||
PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer; // aliases glBindFramebufferEXT
|
||||
PFNGLFRAMEBUFFERTEXTUREPROC glFramebufferTexture;
|
||||
PFNGLFRAMEBUFFERTEXTUREPROC glFramebufferTexture; // aliases glFramebufferTextureARB
|
||||
PFNGLFRAMEBUFFERTEXTURE1DPROC glFramebufferTexture1D; // aliases glFramebufferTexture1DEXT
|
||||
PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D; // aliases glFramebufferTexture2DEXT
|
||||
PFNGLFRAMEBUFFERTEXTURE3DPROC glFramebufferTexture3D; // aliases glFramebufferTexture3DEXT
|
||||
PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer; // aliases glFramebufferRenderbufferEXT
|
||||
PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer;
|
||||
PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer; // aliases glFramebufferTextureLayerARB
|
||||
PFNGLFRAMEBUFFERPARAMETERIPROC glFramebufferParameteri;
|
||||
PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers; // aliases glDeleteFramebuffersEXT
|
||||
PFNGLGENRENDERBUFFERSPROC glGenRenderbuffers; // aliases glGenRenderbuffersEXT
|
||||
@@ -463,6 +463,7 @@ struct GLHookSet
|
||||
PFNGLPOINTPARAMETERIPROC glPointParameteri;
|
||||
PFNGLPOINTPARAMETERIVPROC glPointParameteriv;
|
||||
PFNGLDISPATCHCOMPUTEPROC glDispatchCompute;
|
||||
PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC glDispatchComputeGroupSizeARB;
|
||||
PFNGLDISPATCHCOMPUTEINDIRECTPROC glDispatchComputeIndirect;
|
||||
PFNGLMEMORYBARRIERPROC glMemoryBarrier;
|
||||
PFNGLMEMORYBARRIERBYREGIONPROC glMemoryBarrierByRegion;
|
||||
|
||||
@@ -412,6 +412,7 @@
|
||||
HookExtensionAlias(PFNGLBLITFRAMEBUFFERPROC, glBlitFramebuffer, glBlitFramebufferEXT); \
|
||||
HookExtension(PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC, glRenderbufferStorageMultisample); \
|
||||
HookExtension(PFNGLFRAMEBUFFERTEXTURELAYERPROC, glFramebufferTextureLayer); \
|
||||
HookExtensionAlias(PFNGLFRAMEBUFFERTEXTURELAYERPROC, glFramebufferTextureLayer, glFramebufferTextureLayerARB); \
|
||||
HookExtension(PFNGLMAPBUFFERRANGEPROC, glMapBufferRange); \
|
||||
HookExtension(PFNGLFLUSHMAPPEDBUFFERRANGEPROC, glFlushMappedBufferRange); \
|
||||
HookExtension(PFNGLBINDVERTEXARRAYPROC, glBindVertexArray); \
|
||||
@@ -448,6 +449,7 @@
|
||||
HookExtension(PFNGLGETINTEGER64I_VPROC, glGetInteger64i_v); \
|
||||
HookExtension(PFNGLGETBUFFERPARAMETERI64VPROC, glGetBufferParameteri64v); \
|
||||
HookExtension(PFNGLFRAMEBUFFERTEXTUREPROC, glFramebufferTexture); \
|
||||
HookExtensionAlias(PFNGLFRAMEBUFFERTEXTUREPROC, glFramebufferTexture, glFramebufferTextureARB); \
|
||||
HookExtension(PFNGLTEXIMAGE2DMULTISAMPLEPROC, glTexImage2DMultisample); \
|
||||
HookExtension(PFNGLTEXIMAGE3DMULTISAMPLEPROC, glTexImage3DMultisample); \
|
||||
HookExtension(PFNGLGETMULTISAMPLEFVPROC, glGetMultisamplefv); \
|
||||
@@ -542,6 +544,7 @@
|
||||
HookExtension(PFNGLGETPROGRAMBINARYPROC, glGetProgramBinary); \
|
||||
HookExtension(PFNGLPROGRAMBINARYPROC, glProgramBinary); \
|
||||
HookExtension(PFNGLPROGRAMPARAMETERIPROC, glProgramParameteri); \
|
||||
HookExtensionAlias(PFNGLPROGRAMPARAMETERIPROC, glProgramParameteri, glProgramParameteriARB); \
|
||||
HookExtension(PFNGLUSEPROGRAMSTAGESPROC, glUseProgramStages); \
|
||||
HookExtension(PFNGLACTIVESHADERPROGRAMPROC, glActiveShaderProgram); \
|
||||
HookExtension(PFNGLCREATESHADERPROGRAMVPROC, glCreateShaderProgramv); \
|
||||
@@ -739,6 +742,7 @@
|
||||
HookExtension(PFNGLREADNPIXELSPROC, glReadnPixels); \
|
||||
HookExtensionAlias(PFNGLREADNPIXELSPROC, glReadnPixels, glReadnPixelsARB); \
|
||||
HookExtension(PFNGLTEXTUREBARRIERPROC, glTextureBarrier); \
|
||||
HookExtension(PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC, glDispatchComputeGroupSizeARB); \
|
||||
HookExtension(PFNGLBLENDBARRIERKHRPROC, glBlendBarrierKHR); \
|
||||
HookExtension(PFNGLDEPTHBOUNDSEXTPROC, glDepthBoundsEXT); \
|
||||
HookExtension(PFNGLTEXTUREPARAMETERFEXTPROC, glTextureParameterfEXT); \
|
||||
@@ -1514,6 +1518,7 @@
|
||||
HookWrapper4(void, glGetnUniformuiv, GLuint, program, GLint, location, GLsizei, bufSize, GLuint *, params); \
|
||||
HookWrapper8(void, glReadnPixels, GLint, x, GLint, y, GLsizei, width, GLsizei, height, GLenum, format, GLenum, type, GLsizei, bufSize, void *, data); \
|
||||
HookWrapper0(void, glTextureBarrier); \
|
||||
HookWrapper6(void, glDispatchComputeGroupSizeARB, GLuint, num_groups_x, GLuint, num_groups_y, GLuint, num_groups_z, GLuint, group_size_x, GLuint, group_size_y, GLuint, group_size_z); \
|
||||
HookWrapper0(void, glBlendBarrierKHR); \
|
||||
HookWrapper2(void, glDepthBoundsEXT, GLclampd, zmin, GLclampd, zmax); \
|
||||
HookWrapper4(void, glTextureParameterfEXT, GLuint, texture, GLenum, target, GLenum, pname, GLfloat, param); \
|
||||
@@ -1738,7 +1743,6 @@
|
||||
HookWrapper2(void, glvertexattribl1ui64varb, GLuint, index, const GLuint64EXT *, v); \
|
||||
HookWrapper3(void, glgetvertexattriblui64varb, GLuint, index, GLenum, pname, GLuint64EXT *, params); \
|
||||
HookWrapper3(GLsync, glcreatesyncfromcleventarb, struct _cl_context *, context, struct _cl_event *, event, GLbitfield, flags); \
|
||||
HookWrapper6(void, gldispatchcomputegroupsizearb, GLuint, num_groups_x, GLuint, num_groups_y, GLuint, num_groups_z, GLuint, group_size_x, GLuint, group_size_y, GLuint, group_size_z); \
|
||||
HookWrapper5(void, glmultidrawarraysindirectcountarb, GLenum, mode, GLintptr, indirect, GLintptr, drawcount, GLsizei, maxdrawcount, GLsizei, stride); \
|
||||
HookWrapper6(void, glmultidrawelementsindirectcountarb, GLenum, mode, GLenum, type, GLintptr, indirect, GLintptr, drawcount, GLsizei, maxdrawcount, GLsizei, stride); \
|
||||
HookWrapper5(void, glnamedstringarb, GLenum, type, GLint, namelen, const GLchar *, name, GLint, stringlen, const GLchar *, string); \
|
||||
@@ -1887,9 +1891,6 @@
|
||||
HookWrapper3(void, glgetprogramivarb, GLenum, target, GLenum, pname, GLint *, params); \
|
||||
HookWrapper3(void, glgetprogramstringarb, GLenum, target, GLenum, pname, void *, string); \
|
||||
HookWrapper1(GLboolean, glisprogramarb, GLuint, program); \
|
||||
HookWrapper3(void, glprogramparameteriarb, GLuint, program, GLenum, pname, GLint, value); \
|
||||
HookWrapper4(void, glframebuffertexturearb, GLenum, target, GLenum, attachment, GLuint, texture, GLint, level); \
|
||||
HookWrapper5(void, glframebuffertexturelayerarb, GLenum, target, GLenum, attachment, GLuint, texture, GLint, level, GLint, layer); \
|
||||
HookWrapper5(void, glframebuffertexturefacearb, GLenum, target, GLenum, attachment, GLuint, texture, GLint, level, GLenum, face); \
|
||||
HookWrapper6(void, glcolortable, GLenum, target, GLenum, internalformat, GLsizei, width, GLenum, format, GLenum, type, const void *, table); \
|
||||
HookWrapper3(void, glcolortableparameterfv, GLenum, target, GLenum, pname, const GLfloat *, params); \
|
||||
@@ -3432,7 +3433,6 @@
|
||||
HandleUnsupported(PFNGLVERTEXATTRIBL1UI64VARBPROC, glvertexattribl1ui64varb); \
|
||||
HandleUnsupported(PFNGLGETVERTEXATTRIBLUI64VARBPROC, glgetvertexattriblui64varb); \
|
||||
HandleUnsupported(PFNGLCREATESYNCFROMCLEVENTARBPROC, glcreatesyncfromcleventarb); \
|
||||
HandleUnsupported(PFNGLDISPATCHCOMPUTEGROUPSIZEARBPROC, gldispatchcomputegroupsizearb); \
|
||||
HandleUnsupported(PFNGLMULTIDRAWARRAYSINDIRECTCOUNTARBPROC, glmultidrawarraysindirectcountarb); \
|
||||
HandleUnsupported(PFNGLMULTIDRAWELEMENTSINDIRECTCOUNTARBPROC, glmultidrawelementsindirectcountarb); \
|
||||
HandleUnsupported(PFNGLNAMEDSTRINGARBPROC, glnamedstringarb); \
|
||||
@@ -3581,9 +3581,6 @@
|
||||
HandleUnsupported(PFNGLGETPROGRAMIVARBPROC, glgetprogramivarb); \
|
||||
HandleUnsupported(PFNGLGETPROGRAMSTRINGARBPROC, glgetprogramstringarb); \
|
||||
HandleUnsupported(PFNGLISPROGRAMARBPROC, glisprogramarb); \
|
||||
HandleUnsupported(PFNGLPROGRAMPARAMETERIARBPROC, glprogramparameteriarb); \
|
||||
HandleUnsupported(PFNGLFRAMEBUFFERTEXTUREARBPROC, glframebuffertexturearb); \
|
||||
HandleUnsupported(PFNGLFRAMEBUFFERTEXTURELAYERARBPROC, glframebuffertexturelayerarb); \
|
||||
HandleUnsupported(PFNGLFRAMEBUFFERTEXTUREFACEARBPROC, glframebuffertexturefacearb); \
|
||||
HandleUnsupported(PFNGLCOLORTABLEPROC, glcolortable); \
|
||||
HandleUnsupported(PFNGLCOLORTABLEPARAMETERFVPROC, glcolortableparameterfv); \
|
||||
|
||||
@@ -74,6 +74,60 @@ void WrappedOpenGL::glDispatchCompute(GLuint num_groups_x, GLuint num_groups_y,
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glDispatchComputeGroupSizeARB(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z)
|
||||
{
|
||||
SERIALISE_ELEMENT(uint32_t, X, num_groups_x);
|
||||
SERIALISE_ELEMENT(uint32_t, Y, num_groups_y);
|
||||
SERIALISE_ELEMENT(uint32_t, Z, num_groups_z);
|
||||
SERIALISE_ELEMENT(uint32_t, sX, group_size_x);
|
||||
SERIALISE_ELEMENT(uint32_t, sY, group_size_y);
|
||||
SERIALISE_ELEMENT(uint32_t, sZ, group_size_z);
|
||||
|
||||
if(m_State <= EXECUTING)
|
||||
{
|
||||
m_Real.glDispatchComputeGroupSizeARB(X, Y, Z, sX, sY, sZ);
|
||||
}
|
||||
|
||||
const string desc = m_pSerialiser->GetDebugStr();
|
||||
|
||||
vector<DebugMessage> debugMessages = Serialise_DebugMessages();
|
||||
|
||||
if(m_State == READING)
|
||||
{
|
||||
AddEvent(DISPATCH_COMPUTE, desc);
|
||||
string name = "glDispatchComputeGroupSizeARB(" +
|
||||
ToStr::Get(X) + ", " +
|
||||
ToStr::Get(Y) + ", " +
|
||||
ToStr::Get(Z) + ", " +
|
||||
ToStr::Get(sX) + ", " +
|
||||
ToStr::Get(sY) + ", " +
|
||||
ToStr::Get(sZ) + ")";
|
||||
|
||||
FetchDrawcall draw;
|
||||
draw.name = name;
|
||||
draw.flags |= eDraw_Dispatch;
|
||||
|
||||
draw.debugMessages = debugMessages;
|
||||
|
||||
AddDrawcall(draw, true);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glDispatchComputeGroupSizeARB(GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z, GLuint group_size_x, GLuint group_size_y, GLuint group_size_z)
|
||||
{
|
||||
m_Real.glDispatchComputeGroupSizeARB(num_groups_x, num_groups_y, num_groups_z, group_size_x, group_size_y, group_size_z);
|
||||
|
||||
if(m_State == WRITING_CAPFRAME)
|
||||
{
|
||||
SCOPED_SERIALISE_CONTEXT(DISPATCH_COMPUTE_GROUP_SIZE);
|
||||
Serialise_glDispatchComputeGroupSizeARB(num_groups_x, num_groups_y, num_groups_z, group_size_x, group_size_y, group_size_z);
|
||||
|
||||
m_ContextRecord->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glDispatchComputeIndirect(GLintptr indirect)
|
||||
{
|
||||
SERIALISE_ELEMENT(uint64_t, offs, indirect);
|
||||
|
||||
Reference in New Issue
Block a user