mirror of
https://git.suyu.dev/suyu/suyu.git
synced 2024-11-15 22:54:00 +00:00
Added glObjectLabels for renderdoc for textures and shader programs (#1384)
* Added glObjectLabels for renderdoc for textures and shader programs * Changed hardcoded "Texture" name to reflect the texture type instead * Removed string initialize
This commit is contained in:
parent
6b05f71b67
commit
9f3fc067bf
4 changed files with 48 additions and 0 deletions
|
@ -501,6 +501,9 @@ CachedSurface::CachedSurface(const SurfaceParams& params)
|
||||||
glTexParameteri(SurfaceTargetToGL(params.target), GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
glTexParameteri(SurfaceTargetToGL(params.target), GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||||
glTexParameteri(SurfaceTargetToGL(params.target), GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
glTexParameteri(SurfaceTargetToGL(params.target), GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||||
glTexParameteri(SurfaceTargetToGL(params.target), GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
glTexParameteri(SurfaceTargetToGL(params.target), GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||||
|
|
||||||
|
VideoCore::LabelGLObject(GL_TEXTURE, texture.handle, params.addr,
|
||||||
|
SurfaceParams::SurfaceTargetName(params.target));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ConvertS8Z24ToZ24S8(std::vector<u8>& data, u32 width, u32 height) {
|
static void ConvertS8Z24ToZ24S8(std::vector<u8>& data, u32 width, u32 height) {
|
||||||
|
|
|
@ -137,6 +137,27 @@ struct SurfaceParams {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static std::string SurfaceTargetName(SurfaceTarget target) {
|
||||||
|
switch (target) {
|
||||||
|
case SurfaceTarget::Texture1D:
|
||||||
|
return "Texture1D";
|
||||||
|
case SurfaceTarget::Texture2D:
|
||||||
|
return "Texture2D";
|
||||||
|
case SurfaceTarget::Texture3D:
|
||||||
|
return "Texture3D";
|
||||||
|
case SurfaceTarget::Texture1DArray:
|
||||||
|
return "Texture1DArray";
|
||||||
|
case SurfaceTarget::Texture2DArray:
|
||||||
|
return "Texture2DArray";
|
||||||
|
case SurfaceTarget::TextureCubemap:
|
||||||
|
return "TextureCubemap";
|
||||||
|
default:
|
||||||
|
LOG_CRITICAL(HW_GPU, "Unimplemented surface_target={}", static_cast<u32>(target));
|
||||||
|
UNREACHABLE();
|
||||||
|
return fmt::format("TextureUnknown({})", static_cast<u32>(target));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the compression factor for the specified PixelFormat. This applies to just the
|
* Gets the compression factor for the specified PixelFormat. This applies to just the
|
||||||
* "compressed width" and "compressed height", not the overall compression factor of a
|
* "compressed width" and "compressed height", not the overall compression factor of a
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include "video_core/engines/maxwell_3d.h"
|
#include "video_core/engines/maxwell_3d.h"
|
||||||
#include "video_core/renderer_opengl/gl_shader_cache.h"
|
#include "video_core/renderer_opengl/gl_shader_cache.h"
|
||||||
#include "video_core/renderer_opengl/gl_shader_manager.h"
|
#include "video_core/renderer_opengl/gl_shader_manager.h"
|
||||||
|
#include "video_core/utils.h"
|
||||||
|
|
||||||
namespace OpenGL {
|
namespace OpenGL {
|
||||||
|
|
||||||
|
@ -83,6 +84,7 @@ CachedShader::CachedShader(VAddr addr, Maxwell::ShaderProgram program_type)
|
||||||
shader.Create(program_result.first.c_str(), gl_type);
|
shader.Create(program_result.first.c_str(), gl_type);
|
||||||
program.Create(true, shader.handle);
|
program.Create(true, shader.handle);
|
||||||
SetShaderUniformBlockBindings(program.handle);
|
SetShaderUniformBlockBindings(program.handle);
|
||||||
|
VideoCore::LabelGLObject(GL_PROGRAM, program.handle, addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
GLuint CachedShader::GetProgramResourceIndex(const GLShader::ConstBufferEntry& buffer) {
|
GLuint CachedShader::GetProgramResourceIndex(const GLShader::ConstBufferEntry& buffer) {
|
||||||
|
|
|
@ -161,4 +161,26 @@ static inline void MortonCopyPixels128(u32 width, u32 height, u32 bytes_per_pixe
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void LabelGLObject(GLenum identifier, GLuint handle, VAddr addr,
|
||||||
|
std::string extra_info = "") {
|
||||||
|
if (!GLAD_GL_KHR_debug) {
|
||||||
|
return; // We don't need to throw an error as this is just for debugging
|
||||||
|
}
|
||||||
|
const std::string nice_addr = fmt::format("0x{:016x}", addr);
|
||||||
|
std::string object_label;
|
||||||
|
|
||||||
|
switch (identifier) {
|
||||||
|
case GL_TEXTURE:
|
||||||
|
object_label = extra_info + "@" + nice_addr;
|
||||||
|
break;
|
||||||
|
case GL_PROGRAM:
|
||||||
|
object_label = "ShaderProgram@" + nice_addr;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
object_label = fmt::format("Object(0x{:x})@{}", identifier, nice_addr);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
glObjectLabel(identifier, handle, -1, static_cast<const GLchar*>(object_label.c_str()));
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace VideoCore
|
} // namespace VideoCore
|
||||||
|
|
Loading…
Reference in a new issue