GPU: Add more fine grained profiling for vertex shader and rasterization
This commit is contained in:
parent
cb2b2071a8
commit
def5913d19
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
#include "common/common_types.h"
|
#include "common/common_types.h"
|
||||||
#include "common/math_util.h"
|
#include "common/math_util.h"
|
||||||
|
#include "common/profiler.h"
|
||||||
|
|
||||||
#include "core/hw/gpu.h"
|
#include "core/hw/gpu.h"
|
||||||
#include "debug_utils/debug_utils.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;
|
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
|
* Helper function for ProcessTriangle with the "reversed" flag to allow for implementing
|
||||||
* culling via recursion.
|
* culling via recursion.
|
||||||
|
@ -195,6 +198,8 @@ static void ProcessTriangleInternal(const VertexShader::OutputVertex& v0,
|
||||||
const VertexShader::OutputVertex& v2,
|
const VertexShader::OutputVertex& v2,
|
||||||
bool reversed = false)
|
bool reversed = false)
|
||||||
{
|
{
|
||||||
|
Common::Profiling::ScopeTimer timer(rasterization_category);
|
||||||
|
|
||||||
// vertex positions in rasterizer coordinates
|
// vertex positions in rasterizer coordinates
|
||||||
static auto FloatToFix = [](float24 flt) {
|
static auto FloatToFix = [](float24 flt) {
|
||||||
// TODO: Rounding here is necessary to prevent garbage pixels at
|
// TODO: Rounding here is necessary to prevent garbage pixels at
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
|
|
||||||
#include <nihstro/shader_bytecode.h>
|
#include <nihstro/shader_bytecode.h>
|
||||||
|
|
||||||
|
#include "common/profiler.h"
|
||||||
|
|
||||||
#include "pica.h"
|
#include "pica.h"
|
||||||
#include "vertex_shader.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) {
|
OutputVertex RunShader(const InputVertex& input, int num_attributes) {
|
||||||
|
Common::Profiling::ScopeTimer timer(shader_category);
|
||||||
|
|
||||||
VertexShaderState state;
|
VertexShaderState state;
|
||||||
|
|
||||||
const u32* main = &shader_memory[registers.vs_main_offset];
|
const u32* main = &shader_memory[registers.vs_main_offset];
|
||||||
|
|
Reference in New Issue