Bind a dummy texbuffer for GL render texture, as macOS seems to need it

This commit is contained in:
baldurk
2019-01-31 18:30:18 +00:00
parent 766c1a9bb9
commit 0df9e33b6b
3 changed files with 24 additions and 0 deletions
+14
View File
@@ -637,6 +637,17 @@ void GLReplay::InitDebugData()
drv.glGenFramebuffers(1, &DebugData.pickPixelFBO);
drv.glBindFramebuffer(eGL_FRAMEBUFFER, DebugData.pickPixelFBO);
drv.glGenBuffers(1, &DebugData.dummyTexBufferStore);
drv.glBindBuffer(eGL_TEXTURE_BUFFER, DebugData.dummyTexBufferStore);
drv.glNamedBufferDataEXT(DebugData.dummyTexBufferStore, 32, NULL, eGL_STATIC_DRAW);
drv.glBindBuffer(eGL_TEXTURE_BUFFER, 0);
drv.glGenTextures(1, &DebugData.dummyTexBuffer);
drv.glBindTexture(eGL_TEXTURE_BUFFER, DebugData.dummyTexBuffer);
drv.glTextureBufferEXT(DebugData.dummyTexBuffer, eGL_TEXTURE_BUFFER, eGL_RGBA32F,
DebugData.dummyTexBufferStore);
drv.glBindTexture(eGL_TEXTURE_BUFFER, 0);
drv.glGenTextures(1, &DebugData.pickPixelTex);
drv.glBindTexture(eGL_TEXTURE_2D, DebugData.pickPixelTex);
@@ -1081,6 +1092,9 @@ void GLReplay::DeleteDebugData()
drv.glDeleteFramebuffers(1, &DebugData.pickPixelFBO);
drv.glDeleteTextures(1, &DebugData.pickPixelTex);
drv.glDeleteTextures(1, &DebugData.dummyTexBuffer);
drv.glDeleteBuffers(1, &DebugData.dummyTexBufferStore);
drv.glDeleteBuffers(1, &DebugData.genericUBO);
drv.glDeleteFramebuffers(1, &DebugData.customFBO);
+7
View File
@@ -236,6 +236,13 @@ bool GLReplay::RenderTextureInternal(TextureDisplay cfg, int flags)
}
}
// bind a dummy texbuffer - some drivers (macOS) have trouble when a buffer isn't bound.
if(resType != RESTYPE_TEXBUFFER && DebugData.dummyTexBuffer)
{
drv.glActiveTexture((RDCGLenum)(eGL_TEXTURE0 + RESTYPE_TEXBUFFER));
drv.glBindTexture(eGL_TEXTURE_BUFFER, DebugData.dummyTexBuffer);
}
drv.glActiveTexture((RDCGLenum)(eGL_TEXTURE0 + resType));
drv.glBindTexture(target, texname);
+3
View File
@@ -363,6 +363,9 @@ private:
GLuint pickPixelTex;
GLuint pickPixelFBO;
GLuint dummyTexBuffer;
GLuint dummyTexBufferStore;
GLuint quadoverdrawFragShader;
GLuint quadoverdrawResolveProg;