mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-08-01 04:10:58 +00:00
Handle glTextureBufferRangeEXT not being available
* This way we don't have to require GL_ARB_texture_buffer_range as well when technically it should only be needed if the application used it.
This commit is contained in:
@@ -313,6 +313,7 @@ enum DebugMessageSource
|
||||
eDbgSource_GeneralPerformance,
|
||||
eDbgSource_GCNPerformance,
|
||||
eDbgSource_RuntimeWarning,
|
||||
eDbgSoruce_UnsupportedConfiguration,
|
||||
};
|
||||
|
||||
enum ResourceUsage
|
||||
|
||||
@@ -1660,9 +1660,27 @@ void GLResourceManager::Apply_InitialState(GLResource live, InitialContentData i
|
||||
}
|
||||
else
|
||||
{
|
||||
// restore texbuffer only state
|
||||
gl.glTextureBufferRangeEXT(live.name, eGL_TEXTURE_BUFFER, details.internalFormat,
|
||||
GetLiveResource(state->texBuffer).name, state->texBufOffs, state->texBufSize);
|
||||
GLuint buffer = GetLiveResource(state->texBuffer).name;
|
||||
|
||||
if(gl.glTextureBufferRangeEXT)
|
||||
{
|
||||
// restore texbuffer only state
|
||||
gl.glTextureBufferRangeEXT(live.name, eGL_TEXTURE_BUFFER, details.internalFormat, buffer, state->texBufOffs, state->texBufSize);
|
||||
}
|
||||
else
|
||||
{
|
||||
uint32_t bufSize = 0;
|
||||
gl.glGetNamedBufferParameterivEXT(buffer, eGL_BUFFER_SIZE, (GLint *)&bufSize);
|
||||
if(state->texBufOffs > 0 || state->texBufSize > bufSize)
|
||||
{
|
||||
const char *msg = "glTextureBufferRangeEXT is not supported on your GL implementation, but is needed for correct replay.\n"
|
||||
"The original capture created a texture buffer with a range - replay will use the whole buffer, which is likely incorrect.";
|
||||
RDCERR("%s", msg);
|
||||
m_GL->AddDebugMessage(eDbgCategory_Resource_Manipulation, eDbgSeverity_High, eDbgSource_IncorrectAPIUse, msg);
|
||||
}
|
||||
|
||||
gl.glTextureBufferEXT(live.name, eGL_TEXTURE_BUFFER, details.internalFormat, buffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(live.Namespace == eResProgram)
|
||||
|
||||
@@ -283,6 +283,7 @@ namespace renderdoc
|
||||
GeneralPerformance,
|
||||
GCNPerformance,
|
||||
RuntimeWarning,
|
||||
UnsupportedConfiguration,
|
||||
};
|
||||
|
||||
public enum DebugMessageCategory
|
||||
@@ -467,6 +468,7 @@ namespace renderdoc
|
||||
case DebugMessageSource.GeneralPerformance: return "General Performance issues";
|
||||
case DebugMessageSource.GCNPerformance: return "GCN (AMD) Performance issues";
|
||||
case DebugMessageSource.RuntimeWarning: return "Issues raised while debugging";
|
||||
case DebugMessageSource.UnsupportedConfiguration: return "Unsupported Software or Hardware Configuration";
|
||||
}
|
||||
|
||||
return "Unknown Source";
|
||||
|
||||
Reference in New Issue
Block a user