Implement glFramebfuferParameteri

This commit is contained in:
baldurk
2014-11-23 19:55:10 +00:00
parent 56d500ffdb
commit e6b5516776
6 changed files with 72 additions and 0 deletions
+1
View File
@@ -257,6 +257,7 @@ enum GLChunkType
FRAMEBUFFER_TEX3D,
FRAMEBUFFER_RENDBUF,
FRAMEBUFFER_TEXLAYER,
FRAMEBUFFER_PARAM,
READ_BUFFER,
BIND_FRAMEBUFFER,
DRAW_BUFFER,
+4
View File
@@ -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;
+2
View File
@@ -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));
+2
View File
@@ -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;
+4
View File
@@ -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);