Răsfoiți Sursa

Merge pull request #760 from yuriks/gpu-profile

GPU: add more fine grained profiling for vertex shader and rasterization
Yuri Kunde Schlesner 11 ani în urmă
părinte
comite
9d8e1f7a92
2 a modificat fișierele cu 10 adăugiri și 0 ștergeri
  1. 5 0
      src/video_core/rasterizer.cpp
  2. 5 0
      src/video_core/vertex_shader.cpp

+ 5 - 0
src/video_core/rasterizer.cpp

@@ -6,6 +6,7 @@
 
 #include "common/common_types.h"
 #include "common/math_util.h"
+#include "common/profiler.h"
 
 #include "core/hw/gpu.h"
 #include "debug_utils/debug_utils.h"
@@ -186,6 +187,8 @@ static int SignedArea (const Math::Vec2<Fix12P4>& vtx1,
     return Math::Cross(vec1, vec2).z;
 };
 
+static Common::Profiling::TimingCategory rasterization_category("Rasterization");
+
 /**
  * Helper function for ProcessTriangle with the "reversed" flag to allow for implementing
  * culling via recursion.
@@ -195,6 +198,8 @@ static void ProcessTriangleInternal(const VertexShader::OutputVertex& v0,
                                     const VertexShader::OutputVertex& v2,
                                     bool reversed = false)
 {
+    Common::Profiling::ScopeTimer timer(rasterization_category);
+
     // vertex positions in rasterizer coordinates
     static auto FloatToFix = [](float24 flt) {
         // TODO: Rounding here is necessary to prevent garbage pixels at

+ 5 - 0
src/video_core/vertex_shader.cpp

@@ -12,6 +12,7 @@
 
 #include <nihstro/shader_bytecode.h>
 
+#include "common/profiler.h"
 
 #include "pica.h"
 #include "vertex_shader.h"
@@ -574,7 +575,11 @@ static void ProcessShaderCode(VertexShaderState& state) {
     }
 }
 
+static Common::Profiling::TimingCategory shader_category("Vertex Shader");
+
 OutputVertex RunShader(const InputVertex& input, int num_attributes) {
+    Common::Profiling::ScopeTimer timer(shader_category);
+
     VertexShaderState state;
 
     const u32* main = &shader_memory[registers.vs_main_offset];