mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-07-08 16:50:44 +00:00
Add support for GL_EXT_discard_framebuffer extension
This commit is contained in:
committed by
Baldur Karlsson
parent
94efd7bf0c
commit
a8840c6728
@@ -736,6 +736,7 @@ void WrappedOpenGL::BuildGLESExtensions()
|
||||
m_GLESExtensions.push_back("GL_EXT_copy_image");
|
||||
m_GLESExtensions.push_back("GL_EXT_debug_label");
|
||||
m_GLESExtensions.push_back("GL_EXT_debug_marker");
|
||||
m_GLESExtensions.push_back("GL_EXT_discard_framebuffer");
|
||||
m_GLESExtensions.push_back("GL_EXT_disjoint_timer_query");
|
||||
m_GLESExtensions.push_back("GL_EXT_draw_buffers");
|
||||
m_GLESExtensions.push_back("GL_EXT_draw_buffers_indexed");
|
||||
|
||||
@@ -1056,6 +1056,9 @@ public:
|
||||
GLint yoffset, GLint zoffset, GLsizei width,
|
||||
GLsizei height, GLsizei depth));
|
||||
|
||||
IMPLEMENT_FUNCTION_SERIALISED(void, glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments,
|
||||
const GLenum *attachments));
|
||||
|
||||
enum AttribType
|
||||
{
|
||||
Attrib_GLdouble = 0x01,
|
||||
|
||||
@@ -609,6 +609,9 @@ struct GLHookSet
|
||||
// GLES: EXT_multisampled_render_to_texture
|
||||
PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC glFramebufferTexture2DMultisampleEXT;
|
||||
|
||||
// GLES: EXT_discard_framebuffer
|
||||
PFNGLDISCARDFRAMEBUFFEREXTPROC glDiscardFramebufferEXT;
|
||||
|
||||
// ARB_shading_language_include
|
||||
PFNGLNAMEDSTRINGARBPROC glNamedStringARB;
|
||||
PFNGLDELETENAMEDSTRINGARBPROC glDeleteNamedStringARB;
|
||||
|
||||
@@ -1159,6 +1159,7 @@
|
||||
HookExtension(PFNGLPRIMITIVEBOUNDINGBOXOESPROC, glPrimitiveBoundingBox); \
|
||||
HookExtensionAlias(PFNGLPRIMITIVEBOUNDINGBOXOESPROC, glPrimitiveBoundingBox, glPrimitiveBoundingBoxEXT); \
|
||||
HookExtensionAlias(PFNGLPRIMITIVEBOUNDINGBOXOESPROC, glPrimitiveBoundingBox, glPrimitiveBoundingBoxOES); \
|
||||
HookExtension(PFNGLDISCARDFRAMEBUFFEREXTPROC, glDiscardFramebufferEXT); \
|
||||
HookExtension(PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC, glFramebufferTexture2DMultisampleEXT); \
|
||||
HookExtension(PFNWGLDXSETRESOURCESHAREHANDLENVPROC, wglDXSetResourceShareHandleNV); \
|
||||
HookExtension(PFNWGLDXOPENDEVICENVPROC, wglDXOpenDeviceNV); \
|
||||
@@ -2013,6 +2014,7 @@
|
||||
HookWrapper0(void, glFrameTerminatorGREMEDY); \
|
||||
HookWrapper2(void, glStringMarkerGREMEDY, GLsizei, len, const void *, string); \
|
||||
HookWrapper8(void, glPrimitiveBoundingBox, GLfloat, minX, GLfloat, minY, GLfloat, minZ, GLfloat, minW, GLfloat, maxX, GLfloat, maxY, GLfloat, maxZ, GLfloat, maxW); \
|
||||
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); \
|
||||
HookWrapper2(BOOL, wglDXSetResourceShareHandleNV, void *, dxObject, HANDLE, shareHandle); \
|
||||
HookWrapper1(HANDLE, wglDXOpenDeviceNV, void *, dxDevice); \
|
||||
@@ -3612,7 +3614,6 @@
|
||||
HookWrapper4(void, glbufferstorageext, GLenum, target, GLsizeiptr, size, const void *, data, GLbitfield, flags); \
|
||||
HookWrapper5(void, glclearteximageext, GLuint, texture, GLint, level, GLenum, format, GLenum, type, const void *, data); \
|
||||
HookWrapper11(void, glcleartexsubimageext, GLuint, texture, GLint, level, GLint, xoffset, GLint, yoffset, GLint, zoffset, GLsizei, width, GLsizei, height, GLsizei, depth, GLenum, format, GLenum, type, const void *, data); \
|
||||
HookWrapper3(void, gldiscardframebufferext, GLenum, target, GLsizei, numAttachments, const GLenum *, attachments); \
|
||||
HookWrapper2(void, gldrawtransformfeedbackext, GLenum, mode, GLuint, id); \
|
||||
HookWrapper3(void, gldrawtransformfeedbackinstancedext, GLenum, mode, GLuint, id, GLsizei, instancecount); \
|
||||
HookWrapper2(void, glvertexattribdivisorext, GLuint, index, GLuint, divisor); \
|
||||
@@ -5578,7 +5579,6 @@
|
||||
HandleUnsupported(PFNGLBUFFERSTORAGEEXTPROC, glbufferstorageext); \
|
||||
HandleUnsupported(PFNGLCLEARTEXIMAGEEXTPROC, glclearteximageext); \
|
||||
HandleUnsupported(PFNGLCLEARTEXSUBIMAGEEXTPROC, glcleartexsubimageext); \
|
||||
HandleUnsupported(PFNGLDISCARDFRAMEBUFFEREXTPROC, gldiscardframebufferext); \
|
||||
HandleUnsupported(PFNGLDRAWTRANSFORMFEEDBACKEXTPROC, gldrawtransformfeedbackext); \
|
||||
HandleUnsupported(PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXTPROC, gldrawtransformfeedbackinstancedext); \
|
||||
HandleUnsupported(PFNGLVERTEXATTRIBDIVISOREXTPROC, glvertexattribdivisorext); \
|
||||
|
||||
@@ -1473,6 +1473,35 @@ void WrappedOpenGL::glInvalidateFramebuffer(GLenum target, GLsizei numAttachment
|
||||
}
|
||||
}
|
||||
|
||||
// note: glDiscardFramebufferEXT looks the same as glInvalidateFramebuffer. Could this be a plain
|
||||
// alias?
|
||||
void WrappedOpenGL::glDiscardFramebufferEXT(GLenum target, GLsizei numAttachments,
|
||||
const GLenum *attachments)
|
||||
{
|
||||
m_Real.glDiscardFramebufferEXT(target, numAttachments, attachments);
|
||||
|
||||
if(m_State == WRITING_IDLE)
|
||||
{
|
||||
GLResourceRecord *record = NULL;
|
||||
|
||||
if(target == eGL_DRAW_FRAMEBUFFER || target == eGL_FRAMEBUFFER)
|
||||
{
|
||||
if(GetCtxData().m_DrawFramebufferRecord)
|
||||
record = GetCtxData().m_DrawFramebufferRecord;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(GetCtxData().m_ReadFramebufferRecord)
|
||||
record = GetCtxData().m_ReadFramebufferRecord;
|
||||
}
|
||||
|
||||
if(record)
|
||||
{
|
||||
record->MarkParentsDirty(GetResourceManager());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WrappedOpenGL::glInvalidateNamedFramebufferData(GLuint framebuffer, GLsizei numAttachments,
|
||||
const GLenum *attachments)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user