mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-08-03 21:30:59 +00:00
Implement glFramebfuferParameteri
This commit is contained in:
@@ -257,6 +257,7 @@ enum GLChunkType
|
||||
FRAMEBUFFER_TEX3D,
|
||||
FRAMEBUFFER_RENDBUF,
|
||||
FRAMEBUFFER_TEXLAYER,
|
||||
FRAMEBUFFER_PARAM,
|
||||
READ_BUFFER,
|
||||
BIND_FRAMEBUFFER,
|
||||
DRAW_BUFFER,
|
||||
|
||||
@@ -202,6 +202,7 @@ const char *GLChunkNames[] =
|
||||
"glFramebufferTexture3D",
|
||||
"glFramebufferRenderbuffer",
|
||||
"glFramebufferTextureLayer",
|
||||
"glFramebufferParameteri",
|
||||
"glReadBuffer",
|
||||
"glBindFramebuffer",
|
||||
"glDrawBuffer",
|
||||
@@ -2027,6 +2028,9 @@ void WrappedOpenGL::ProcessChunk(uint64_t offset, GLChunkType context)
|
||||
case FRAMEBUFFER_TEXLAYER:
|
||||
Serialise_glNamedFramebufferTextureLayerEXT(0, eGL_NONE, 0, 0, 0);
|
||||
break;
|
||||
case FRAMEBUFFER_PARAM:
|
||||
Serialise_glNamedFramebufferParameteriEXT(0, eGL_NONE, 0);
|
||||
break;
|
||||
case READ_BUFFER:
|
||||
Serialise_glReadBuffer(eGL_NONE);
|
||||
break;
|
||||
|
||||
@@ -438,6 +438,7 @@ class WrappedOpenGL
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glFramebufferTexture3D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glFramebufferRenderbuffer(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glFramebufferTextureLayer(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glFramebufferParameteri(GLenum target, GLenum pname, GLint param));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glDeleteFramebuffers(GLsizei n, const GLuint *framebuffers));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glGenRenderbuffers(GLsizei n, GLuint *renderbuffers));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glRenderbufferStorage(GLenum target, GLenum internalformat, GLsizei width, GLsizei height));
|
||||
@@ -1008,6 +1009,7 @@ class WrappedOpenGL
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glNamedFramebufferTexture3DEXT(GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glNamedFramebufferRenderbufferEXT(GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glNamedFramebufferTextureLayerEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glNamedFramebufferParameteriEXT(GLuint framebuffer, GLenum pname, GLint param));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureBufferEXT(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureBufferRangeEXT(GLuint texture, GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size));
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glTextureImage1DEXT(GLuint texture, GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const void *pixels));
|
||||
|
||||
@@ -305,6 +305,7 @@ struct GLHookSet
|
||||
PFNGLFRAMEBUFFERTEXTURE3DPROC glFramebufferTexture3D;
|
||||
PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer;
|
||||
PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer;
|
||||
PFNGLFRAMEBUFFERPARAMETERIPROC glFramebufferParameteri;
|
||||
PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers;
|
||||
PFNGLGENRENDERBUFFERSPROC glGenRenderbuffers;
|
||||
PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorage;
|
||||
@@ -611,6 +612,7 @@ struct GLHookSet
|
||||
PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC glNamedFramebufferTexture3DEXT;
|
||||
PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC glNamedFramebufferRenderbufferEXT;
|
||||
PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC glNamedFramebufferTextureLayerEXT;
|
||||
PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC glNamedFramebufferParameteriEXT;
|
||||
PFNGLTEXTUREBUFFEREXTPROC glTextureBufferEXT;
|
||||
PFNGLTEXTUREBUFFERRANGEEXTPROC glTextureBufferRangeEXT;
|
||||
PFNGLTEXTUREIMAGE1DEXTPROC glTextureImage1DEXT;
|
||||
|
||||
@@ -329,6 +329,7 @@
|
||||
HookExtension(PFNGLFRAMEBUFFERTEXTURE3DPROC, glFramebufferTexture3D); \
|
||||
HookExtension(PFNGLFRAMEBUFFERRENDERBUFFERPROC, glFramebufferRenderbuffer); \
|
||||
HookExtension(PFNGLFRAMEBUFFERTEXTURELAYERPROC, glFramebufferTextureLayer); \
|
||||
HookExtension(PFNGLFRAMEBUFFERPARAMETERIPROC, glFramebufferParameteri); \
|
||||
HookExtension(PFNGLDELETEFRAMEBUFFERSPROC, glDeleteFramebuffers); \
|
||||
HookExtension(PFNGLGENRENDERBUFFERSPROC, glGenRenderbuffers); \
|
||||
HookExtension(PFNGLRENDERBUFFERSTORAGEPROC, glRenderbufferStorage); \
|
||||
@@ -641,6 +642,7 @@
|
||||
HookExtension(PFNGLNAMEDFRAMEBUFFERTEXTURE3DEXTPROC, glNamedFramebufferTexture3DEXT); \
|
||||
HookExtension(PFNGLNAMEDFRAMEBUFFERRENDERBUFFEREXTPROC, glNamedFramebufferRenderbufferEXT); \
|
||||
HookExtension(PFNGLNAMEDFRAMEBUFFERTEXTURELAYEREXTPROC, glNamedFramebufferTextureLayerEXT); \
|
||||
HookExtension(PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC, glNamedFramebufferParameteriEXT); \
|
||||
HookExtension(PFNGLTEXTUREBUFFEREXTPROC, glTextureBufferEXT); \
|
||||
HookExtension(PFNGLTEXTUREBUFFERRANGEEXTPROC, glTextureBufferRangeEXT); \
|
||||
HookExtension(PFNGLTEXTUREIMAGE1DEXTPROC, glTextureImage1DEXT); \
|
||||
@@ -999,6 +1001,7 @@
|
||||
HookWrapper6(void, glFramebufferTexture3D, GLenum, target, GLenum, attachment, GLenum, textarget, GLuint, texture, GLint, level, GLint, zoffset); \
|
||||
HookWrapper4(void, glFramebufferRenderbuffer, GLenum, target, GLenum, attachment, GLenum, renderbuffertarget, GLuint, renderbuffer); \
|
||||
HookWrapper5(void, glFramebufferTextureLayer, GLenum, target, GLenum, attachment, GLuint, texture, GLint, level, GLint, layer); \
|
||||
HookWrapper3(void, glFramebufferParameteri, GLenum, target, GLenum, pname, GLint, param); \
|
||||
HookWrapper2(void, glDeleteFramebuffers, GLsizei, n, const GLuint *, framebuffers); \
|
||||
HookWrapper2(void, glGenRenderbuffers, GLsizei, n, GLuint *, renderbuffers); \
|
||||
HookWrapper4(void, glRenderbufferStorage, GLenum, target, GLenum, internalformat, GLsizei, width, GLsizei, height); \
|
||||
@@ -1305,6 +1308,7 @@
|
||||
HookWrapper6(void, glNamedFramebufferTexture3DEXT, GLuint, framebuffer, GLenum, attachment, GLenum, textarget, GLuint, texture, GLint, level, GLint, zoffset); \
|
||||
HookWrapper4(void, glNamedFramebufferRenderbufferEXT, GLuint, framebuffer, GLenum, attachment, GLenum, renderbuffertarget, GLuint, renderbuffer); \
|
||||
HookWrapper5(void, glNamedFramebufferTextureLayerEXT, GLuint, framebuffer, GLenum, attachment, GLuint, texture, GLint, level, GLint, layer); \
|
||||
HookWrapper3(void, glNamedFramebufferParameteriEXT, GLuint, framebuffer, GLenum, pname, GLint, param); \
|
||||
HookWrapper4(void, glTextureBufferEXT, GLuint, texture, GLenum, target, GLenum, internalformat, GLuint, buffer); \
|
||||
HookWrapper6(void, glTextureBufferRangeEXT, GLuint, texture, GLenum, target, GLenum, internalformat, GLuint, buffer, GLintptr, offset, GLsizeiptr, size); \
|
||||
HookWrapper9(void, glTextureImage1DEXT, GLuint, texture, GLenum, target, GLint, level, GLint, internalformat, GLsizei, width, GLint, border, GLenum, format, GLenum, type, const void *, pixels); \
|
||||
|
||||
@@ -641,6 +641,65 @@ void WrappedOpenGL::glFramebufferTextureLayer(GLenum target, GLenum attachment,
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glNamedFramebufferParameteriEXT(GLuint framebuffer, GLenum pname, GLint param)
|
||||
{
|
||||
SERIALISE_ELEMENT(GLenum, PName, pname);
|
||||
SERIALISE_ELEMENT(int32_t, Param, param);
|
||||
SERIALISE_ELEMENT(ResourceId, fbid, (framebuffer == 0 ? ResourceId() : GetResourceManager()->GetID(FramebufferRes(GetCtx(), framebuffer))));
|
||||
|
||||
if(m_State == READING)
|
||||
{
|
||||
if(fbid != ResourceId())
|
||||
{
|
||||
GLResource fbres = GetResourceManager()->GetLiveResource(fbid);
|
||||
glNamedFramebufferParameteriEXT(fbres.name, PName, Param);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glNamedFramebufferParameteriEXT(GLuint framebuffer, GLenum pname, GLint param)
|
||||
{
|
||||
m_Real.glNamedFramebufferParameteriEXT(framebuffer, pname, param);
|
||||
|
||||
if(m_State >= WRITING)
|
||||
{
|
||||
GLResourceRecord *record = GetResourceManager()->GetResourceRecord(FramebufferRes(GetCtx(), framebuffer));
|
||||
|
||||
SCOPED_SERIALISE_CONTEXT(FRAMEBUFFER_PARAM);
|
||||
Serialise_glNamedFramebufferParameteriEXT(framebuffer, pname, param);
|
||||
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glFramebufferParameteri(GLenum target, GLenum pname, GLint param)
|
||||
{
|
||||
m_Real.glFramebufferParameteri(target, pname, param);
|
||||
|
||||
if(m_State >= WRITING)
|
||||
{
|
||||
GLResourceRecord *record = NULL;
|
||||
|
||||
if(target == eGL_DRAW_FRAMEBUFFER || target == eGL_FRAMEBUFFER)
|
||||
{
|
||||
if(m_DrawFramebufferRecord) record = m_DrawFramebufferRecord;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(m_ReadFramebufferRecord) record = m_ReadFramebufferRecord;
|
||||
}
|
||||
|
||||
if(record == NULL) return;
|
||||
|
||||
SCOPED_SERIALISE_CONTEXT(FRAMEBUFFER_PARAM);
|
||||
Serialise_glNamedFramebufferParameteriEXT(GetResourceManager()->GetCurrentResource(record->GetResourceID()).name, pname, param);
|
||||
|
||||
record->AddChunk(scope.Get());
|
||||
}
|
||||
}
|
||||
|
||||
bool WrappedOpenGL::Serialise_glReadBuffer(GLenum mode)
|
||||
{
|
||||
SERIALISE_ELEMENT(GLenum, m, mode);
|
||||
|
||||
Reference in New Issue
Block a user