mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 05:40:04 +00:00 
			
		
		
		
	Merge pull request #992 from yuriks/hot-path-debug
VideoCore: #ifdef out some debugging routines
This commit is contained in:
		
						commit
						cb76453ec4
					
				
					 5 changed files with 18 additions and 13 deletions
				
			
		|  | @ -116,7 +116,9 @@ static inline void WritePicaReg(u32 id, u32 value, u32 mask) { | ||||||
|         { |         { | ||||||
|             Common::Profiling::ScopeTimer scope_timer(category_drawing); |             Common::Profiling::ScopeTimer scope_timer(category_drawing); | ||||||
| 
 | 
 | ||||||
|  | #if PICA_LOG_TEV | ||||||
|             DebugUtils::DumpTevStageConfig(regs.GetTevStages()); |             DebugUtils::DumpTevStageConfig(regs.GetTevStages()); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|             if (g_debug_context) |             if (g_debug_context) | ||||||
|                 g_debug_context->OnEvent(DebugContext::Event::IncomingPrimitiveBatch, nullptr); |                 g_debug_context->OnEvent(DebugContext::Event::IncomingPrimitiveBatch, nullptr); | ||||||
|  | @ -159,9 +161,11 @@ static inline void WritePicaReg(u32 id, u32 value, u32 mask) { | ||||||
|             const u16* index_address_16 = (u16*)index_address_8; |             const u16* index_address_16 = (u16*)index_address_8; | ||||||
|             bool index_u16 = index_info.format != 0; |             bool index_u16 = index_info.format != 0; | ||||||
| 
 | 
 | ||||||
|  | #if PICA_DUMP_GEOMETRY | ||||||
|             DebugUtils::GeometryDumper geometry_dumper; |             DebugUtils::GeometryDumper geometry_dumper; | ||||||
|             PrimitiveAssembler<VertexShader::OutputVertex> primitive_assembler(regs.triangle_topology.Value()); |  | ||||||
|             PrimitiveAssembler<DebugUtils::GeometryDumper::Vertex> dumping_primitive_assembler(regs.triangle_topology.Value()); |             PrimitiveAssembler<DebugUtils::GeometryDumper::Vertex> dumping_primitive_assembler(regs.triangle_topology.Value()); | ||||||
|  | #endif | ||||||
|  |             PrimitiveAssembler<VertexShader::OutputVertex> primitive_assembler(regs.triangle_topology.Value()); | ||||||
| 
 | 
 | ||||||
|             if (g_debug_context) { |             if (g_debug_context) { | ||||||
|                 for (int i = 0; i < 3; ++i) { |                 for (int i = 0; i < 3; ++i) { | ||||||
|  | @ -271,6 +275,7 @@ static inline void WritePicaReg(u32 id, u32 value, u32 mask) { | ||||||
|                 if (g_debug_context) |                 if (g_debug_context) | ||||||
|                     g_debug_context->OnEvent(DebugContext::Event::VertexLoaded, (void*)&input); |                     g_debug_context->OnEvent(DebugContext::Event::VertexLoaded, (void*)&input); | ||||||
| 
 | 
 | ||||||
|  | #if PICA_DUMP_GEOMETRY | ||||||
|                 // NOTE: When dumping geometry, we simply assume that the first input attribute
 |                 // NOTE: When dumping geometry, we simply assume that the first input attribute
 | ||||||
|                 //       corresponds to the position for now.
 |                 //       corresponds to the position for now.
 | ||||||
|                 DebugUtils::GeometryDumper::Vertex dumped_vertex = { |                 DebugUtils::GeometryDumper::Vertex dumped_vertex = { | ||||||
|  | @ -280,6 +285,7 @@ static inline void WritePicaReg(u32 id, u32 value, u32 mask) { | ||||||
|                 dumping_primitive_assembler.SubmitVertex(dumped_vertex, |                 dumping_primitive_assembler.SubmitVertex(dumped_vertex, | ||||||
|                                                          std::bind(&DebugUtils::GeometryDumper::AddTriangle, |                                                          std::bind(&DebugUtils::GeometryDumper::AddTriangle, | ||||||
|                                                                    &geometry_dumper, _1, _2, _3)); |                                                                    &geometry_dumper, _1, _2, _3)); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|                 // Send to vertex shader
 |                 // Send to vertex shader
 | ||||||
|                 VertexShader::OutputVertex output = VertexShader::RunShader(input, attribute_config.GetNumTotalAttributes(), g_state.regs.vs, g_state.vs); |                 VertexShader::OutputVertex output = VertexShader::RunShader(input, attribute_config.GetNumTotalAttributes(), g_state.regs.vs, g_state.vs); | ||||||
|  | @ -312,7 +318,9 @@ static inline void WritePicaReg(u32 id, u32 value, u32 mask) { | ||||||
|                 VideoCore::g_renderer->hw_rasterizer->DrawTriangles(); |                 VideoCore::g_renderer->hw_rasterizer->DrawTriangles(); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|  | #if PICA_DUMP_GEOMETRY | ||||||
|             geometry_dumper.Dump(); |             geometry_dumper.Dump(); | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|             if (g_debug_context) { |             if (g_debug_context) { | ||||||
|                 g_debug_context->OnEvent(DebugContext::Event::FinishedPrimitiveBatch, nullptr); |                 g_debug_context->OnEvent(DebugContext::Event::FinishedPrimitiveBatch, nullptr); | ||||||
|  |  | ||||||
|  | @ -90,10 +90,6 @@ void GeometryDumper::AddTriangle(Vertex& v0, Vertex& v1, Vertex& v2) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void GeometryDumper::Dump() { | void GeometryDumper::Dump() { | ||||||
|     // NOTE: Permanently enabling this just trashes the hard disk for no reason.
 |  | ||||||
|     //       Hence, this is currently disabled.
 |  | ||||||
|     return; |  | ||||||
| 
 |  | ||||||
|     static int index = 0; |     static int index = 0; | ||||||
|     std::string filename = std::string("geometry_dump") + std::to_string(++index) + ".obj"; |     std::string filename = std::string("geometry_dump") + std::to_string(++index) + ".obj"; | ||||||
| 
 | 
 | ||||||
|  | @ -116,10 +112,6 @@ void GeometryDumper::Dump() { | ||||||
| void DumpShader(const u32* binary_data, u32 binary_size, const u32* swizzle_data, u32 swizzle_size, | void DumpShader(const u32* binary_data, u32 binary_size, const u32* swizzle_data, u32 swizzle_size, | ||||||
|                 u32 main_offset, const Regs::VSOutputAttributes* output_attributes) |                 u32 main_offset, const Regs::VSOutputAttributes* output_attributes) | ||||||
| { | { | ||||||
|     // NOTE: Permanently enabling this just trashes hard disks for no reason.
 |  | ||||||
|     //       Hence, this is currently disabled.
 |  | ||||||
|     return; |  | ||||||
| 
 |  | ||||||
|     struct StuffToWrite { |     struct StuffToWrite { | ||||||
|         u8* pointer; |         u8* pointer; | ||||||
|         u32 size; |         u32 size; | ||||||
|  | @ -565,10 +557,6 @@ TextureInfo TextureInfo::FromPicaRegister(const Regs::TextureConfig& config, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void DumpTexture(const Pica::Regs::TextureConfig& texture_config, u8* data) { | void DumpTexture(const Pica::Regs::TextureConfig& texture_config, u8* data) { | ||||||
|     // NOTE: Permanently enabling this just trashes hard disks for no reason.
 |  | ||||||
|     //       Hence, this is currently disabled.
 |  | ||||||
|     return; |  | ||||||
| 
 |  | ||||||
| #ifndef HAVE_PNG | #ifndef HAVE_PNG | ||||||
|     return; |     return; | ||||||
| #else | #else | ||||||
|  |  | ||||||
|  | @ -157,6 +157,11 @@ extern std::shared_ptr<DebugContext> g_debug_context; // TODO: Get rid of this g | ||||||
| 
 | 
 | ||||||
| namespace DebugUtils { | namespace DebugUtils { | ||||||
| 
 | 
 | ||||||
|  | #define PICA_DUMP_GEOMETRY 0 | ||||||
|  | #define PICA_DUMP_SHADERS 0 | ||||||
|  | #define PICA_DUMP_TEXTURES 0 | ||||||
|  | #define PICA_LOG_TEV 0 | ||||||
|  | 
 | ||||||
| // Simple utility class for dumping geometry data to an OBJ file
 | // Simple utility class for dumping geometry data to an OBJ file
 | ||||||
| class GeometryDumper { | class GeometryDumper { | ||||||
| public: | public: | ||||||
|  |  | ||||||
|  | @ -462,7 +462,9 @@ static void ProcessTriangleInternal(const VertexShader::OutputVertex& v0, | ||||||
| 
 | 
 | ||||||
|                     // TODO: Apply the min and mag filters to the texture
 |                     // TODO: Apply the min and mag filters to the texture
 | ||||||
|                     texture_color[i] = DebugUtils::LookupTexture(texture_data, s, t, info); |                     texture_color[i] = DebugUtils::LookupTexture(texture_data, s, t, info); | ||||||
|  | #if PICA_DUMP_TEXTURES | ||||||
|                     DebugUtils::DumpTexture(texture.config, texture_data); |                     DebugUtils::DumpTexture(texture.config, texture_data); | ||||||
|  | #endif | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -579,9 +579,11 @@ OutputVertex RunShader(const InputVertex& input, int num_attributes, const Regs: | ||||||
|     state.conditional_code[1] = false; |     state.conditional_code[1] = false; | ||||||
| 
 | 
 | ||||||
|     ProcessShaderCode(state); |     ProcessShaderCode(state); | ||||||
|  | #if PICA_DUMP_SHADERS | ||||||
|     DebugUtils::DumpShader(setup.program_code.data(), state.debug.max_offset, setup.swizzle_data.data(), |     DebugUtils::DumpShader(setup.program_code.data(), state.debug.max_offset, setup.swizzle_data.data(), | ||||||
|                            state.debug.max_opdesc_id, config.main_offset, |                            state.debug.max_opdesc_id, config.main_offset, | ||||||
|                            g_state.regs.vs_output_attributes); // TODO: Don't hardcode VS here
 |                            g_state.regs.vs_output_attributes); // TODO: Don't hardcode VS here
 | ||||||
|  | #endif | ||||||
| 
 | 
 | ||||||
|     // Setup output data
 |     // Setup output data
 | ||||||
|     OutputVertex ret; |     OutputVertex ret; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue