mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu.git
				synced 2025-05-12 00:45:25 +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
					
				| @ -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 New Issue
	
	Block a user
	 David
						David