citra-emu
/
citra-canary
Archived
1
0
Fork 0

GPU: Refactor "VertexShader" namespace to "Shader".

- Also renames "vertex_shader.*" to "shader_interpreter.*"
This commit is contained in:
bunnei 2015-07-21 19:04:05 -04:00
parent cebf245504
commit 642b9b5030
14 changed files with 49 additions and 51 deletions

View File

@ -8,7 +8,7 @@
#include <QBoxLayout>
#include <QTreeView>
#include "video_core/vertex_shader.h"
#include "video_core/shader_interpreter.h"
#include "graphics_vertex_shader.h"

View File

@ -11,8 +11,8 @@ set(SRCS
pica.cpp
primitive_assembly.cpp
rasterizer.cpp
shader_interpreter.cpp
utils.cpp
vertex_shader.cpp
video_core.cpp
)
@ -35,8 +35,8 @@ set(HEADERS
primitive_assembly.h
rasterizer.h
renderer_base.h
shader_interpreter.h
utils.h
vertex_shader.h
video_core.h
)

View File

@ -7,7 +7,7 @@
#include "clipper.h"
#include "pica.h"
#include "rasterizer.h"
#include "vertex_shader.h"
#include "shader_interpreter.h"
namespace Pica {

View File

@ -6,13 +6,13 @@
namespace Pica {
namespace VertexShader {
namespace Shader {
struct OutputVertex;
}
namespace Clipper {
using VertexShader::OutputVertex;
using Shader::OutputVertex;
void ProcessTriangle(OutputVertex& v0, OutputVertex& v1, OutputVertex& v2);

View File

@ -18,7 +18,7 @@
#include "pica.h"
#include "primitive_assembly.h"
#include "renderer_base.h"
#include "vertex_shader.h"
#include "shader_interpreter.h"
#include "video_core.h"
namespace Pica {
@ -165,7 +165,7 @@ static inline void WritePicaReg(u32 id, u32 value, u32 mask) {
DebugUtils::GeometryDumper geometry_dumper;
PrimitiveAssembler<DebugUtils::GeometryDumper::Vertex> dumping_primitive_assembler(regs.triangle_topology.Value());
#endif
PrimitiveAssembler<VertexShader::OutputVertex> primitive_assembler(regs.triangle_topology.Value());
PrimitiveAssembler<Shader::OutputVertex> primitive_assembler(regs.triangle_topology.Value());
if (g_debug_context) {
for (int i = 0; i < 3; ++i) {
@ -210,7 +210,7 @@ static inline void WritePicaReg(u32 id, u32 value, u32 mask) {
// The size has been tuned for optimal balance between hit-rate and the cost of lookup
const size_t VERTEX_CACHE_SIZE = 32;
std::array<u16, VERTEX_CACHE_SIZE> vertex_cache_ids;
std::array<VertexShader::OutputVertex, VERTEX_CACHE_SIZE> vertex_cache;
std::array<Shader::OutputVertex, VERTEX_CACHE_SIZE> vertex_cache;
unsigned int vertex_cache_pos = 0;
vertex_cache_ids.fill(-1);
@ -224,7 +224,7 @@ static inline void WritePicaReg(u32 id, u32 value, u32 mask) {
ASSERT(vertex != -1);
bool vertex_cache_hit = false;
VertexShader::OutputVertex output;
Shader::OutputVertex output;
if (is_indexed) {
if (g_debug_context && Pica::g_debug_context->recorder) {
@ -243,7 +243,7 @@ static inline void WritePicaReg(u32 id, u32 value, u32 mask) {
if (!vertex_cache_hit) {
// Initialize data for the current vertex
VertexShader::InputVertex input;
Shader::InputVertex input;
for (int i = 0; i < attribute_config.GetNumTotalAttributes(); ++i) {
if (vertex_attribute_elements[i] != 0) {
@ -306,9 +306,8 @@ static inline void WritePicaReg(u32 id, u32 value, u32 mask) {
std::bind(&DebugUtils::GeometryDumper::AddTriangle,
&geometry_dumper, _1, _2, _3));
#endif
// Send to vertex shader
output = VertexShader::RunShader(input, attribute_config.GetNumTotalAttributes(), g_state.regs.vs, g_state.vs);
output = Shader::RunShader(input, attribute_config.GetNumTotalAttributes(), g_state.regs.vs, g_state.vs);
if (is_indexed) {
vertex_cache[vertex_cache_pos] = output;
@ -319,9 +318,9 @@ static inline void WritePicaReg(u32 id, u32 value, u32 mask) {
if (Settings::values.use_hw_renderer) {
// Send to hardware renderer
static auto AddHWTriangle = [](const Pica::VertexShader::OutputVertex& v0,
const Pica::VertexShader::OutputVertex& v1,
const Pica::VertexShader::OutputVertex& v2) {
static auto AddHWTriangle = [](const Pica::Shader::OutputVertex& v0,
const Pica::Shader::OutputVertex& v1,
const Pica::Shader::OutputVertex& v2) {
VideoCore::g_renderer->hw_rasterizer->AddTriangle(v0, v1, v2);
};

View File

@ -7,7 +7,7 @@
#include "common/common_types.h"
namespace Pica {
namespace VertexShader {
namespace Shader {
struct OutputVertex;
}
}
@ -24,9 +24,9 @@ public:
virtual void Reset() = 0;
/// Queues the primitive formed by the given vertices for rendering
virtual void AddTriangle(const Pica::VertexShader::OutputVertex& v0,
const Pica::VertexShader::OutputVertex& v1,
const Pica::VertexShader::OutputVertex& v2) = 0;
virtual void AddTriangle(const Pica::Shader::OutputVertex& v0,
const Pica::Shader::OutputVertex& v1,
const Pica::Shader::OutputVertex& v2) = 0;
/// Draw the current batch of triangles
virtual void DrawTriangles() = 0;

View File

@ -4,7 +4,7 @@
#include "pica.h"
#include "primitive_assembly.h"
#include "vertex_shader.h"
#include "shader_interpreter.h"
#include "common/logging/log.h"
#include "video_core/debug_utils/debug_utils.h"
@ -56,7 +56,7 @@ void PrimitiveAssembler<VertexType>::SubmitVertex(VertexType& vtx, TriangleHandl
// explicitly instantiate use cases
template
struct PrimitiveAssembler<VertexShader::OutputVertex>;
struct PrimitiveAssembler<Shader::OutputVertex>;
template
struct PrimitiveAssembler<DebugUtils::GeometryDumper::Vertex>;

View File

@ -8,7 +8,7 @@
#include "video_core/pica.h"
#include "video_core/vertex_shader.h"
#include "video_core/shader_interpreter.h"
namespace Pica {

View File

@ -16,7 +16,7 @@
#include "math.h"
#include "pica.h"
#include "rasterizer.h"
#include "vertex_shader.h"
#include "shader_interpreter.h"
#include "video_core/utils.h"
namespace Pica {
@ -272,9 +272,9 @@ static Common::Profiling::TimingCategory rasterization_category("Rasterization")
* Helper function for ProcessTriangle with the "reversed" flag to allow for implementing
* culling via recursion.
*/
static void ProcessTriangleInternal(const VertexShader::OutputVertex& v0,
const VertexShader::OutputVertex& v1,
const VertexShader::OutputVertex& v2,
static void ProcessTriangleInternal(const Shader::OutputVertex& v0,
const Shader::OutputVertex& v1,
const Shader::OutputVertex& v2,
bool reversed = false)
{
const auto& regs = g_state.regs;
@ -1107,9 +1107,9 @@ static void ProcessTriangleInternal(const VertexShader::OutputVertex& v0,
}
}
void ProcessTriangle(const VertexShader::OutputVertex& v0,
const VertexShader::OutputVertex& v1,
const VertexShader::OutputVertex& v2) {
void ProcessTriangle(const Shader::OutputVertex& v0,
const Shader::OutputVertex& v1,
const Shader::OutputVertex& v2) {
ProcessTriangleInternal(v0, v1, v2);
}

View File

@ -6,15 +6,15 @@
namespace Pica {
namespace VertexShader {
namespace Shader {
struct OutputVertex;
}
namespace Rasterizer {
void ProcessTriangle(const VertexShader::OutputVertex& v0,
const VertexShader::OutputVertex& v1,
const VertexShader::OutputVertex& v2);
void ProcessTriangle(const Shader::OutputVertex& v0,
const Shader::OutputVertex& v1,
const Shader::OutputVertex& v2);
} // namespace Rasterizer

View File

@ -202,9 +202,9 @@ void RasterizerOpenGL::Reset() {
res_cache.FullFlush();
}
void RasterizerOpenGL::AddTriangle(const Pica::VertexShader::OutputVertex& v0,
const Pica::VertexShader::OutputVertex& v1,
const Pica::VertexShader::OutputVertex& v2) {
void RasterizerOpenGL::AddTriangle(const Pica::Shader::OutputVertex& v0,
const Pica::Shader::OutputVertex& v1,
const Pica::Shader::OutputVertex& v2) {
vertex_batch.push_back(HardwareVertex(v0));
vertex_batch.push_back(HardwareVertex(v1));
vertex_batch.push_back(HardwareVertex(v2));

View File

@ -9,7 +9,7 @@
#include "common/common_types.h"
#include "video_core/hwrasterizer_base.h"
#include "video_core/vertex_shader.h"
#include "video_core/shader_interpreter.h"
#include "gl_state.h"
#include "gl_rasterizer_cache.h"
@ -27,9 +27,9 @@ public:
void Reset() override;
/// Queues the primitive formed by the given vertices for rendering
void AddTriangle(const Pica::VertexShader::OutputVertex& v0,
const Pica::VertexShader::OutputVertex& v1,
const Pica::VertexShader::OutputVertex& v2) override;
void AddTriangle(const Pica::Shader::OutputVertex& v0,
const Pica::Shader::OutputVertex& v1,
const Pica::Shader::OutputVertex& v2) override;
/// Draw the current batch of triangles
void DrawTriangles() override;
@ -82,7 +82,7 @@ private:
/// Structure that the hardware rendered vertices are composed of
struct HardwareVertex {
HardwareVertex(const Pica::VertexShader::OutputVertex& v) {
HardwareVertex(const Pica::Shader::OutputVertex& v) {
position[0] = v.pos.x.ToFloat32();
position[1] = v.pos.y.ToFloat32();
position[2] = v.pos.z.ToFloat32();

View File

@ -12,7 +12,7 @@
#include "common/profiler.h"
#include "pica.h"
#include "vertex_shader.h"
#include "shader_interpreter.h"
#include "debug_utils/debug_utils.h"
using nihstro::OpCode;
@ -23,9 +23,9 @@ using nihstro::SwizzlePattern;
namespace Pica {
namespace VertexShader {
namespace Shader {
struct VertexShaderState {
struct ShaderState {
u32 program_counter;
const float24* input_register_table[16];
@ -60,7 +60,7 @@ struct VertexShaderState {
} debug;
};
static void ProcessShaderCode(VertexShaderState& state) {
static void ProcessShaderCode(ShaderState& state) {
const auto& uniforms = g_state.vs.uniforms;
const auto& swizzle_data = g_state.vs.swizzle_data;
const auto& program_code = g_state.vs.program_code;
@ -90,7 +90,7 @@ static void ProcessShaderCode(VertexShaderState& state) {
const Instruction instr = { program_code[state.program_counter] };
const SwizzlePattern swizzle = { swizzle_data[instr.common.operand_desc_id] };
static auto call = [](VertexShaderState& state, u32 offset, u32 num_instructions,
static auto call = [](ShaderState& state, u32 offset, u32 num_instructions,
u32 return_offset, u8 repeat_count, u8 loop_increment) {
state.program_counter = offset - 1; // -1 to make sure when incrementing the PC we end up at the correct offset
ASSERT(state.call_stack.size() < state.call_stack.capacity());
@ -413,7 +413,7 @@ static void ProcessShaderCode(VertexShaderState& state) {
default:
{
static auto evaluate_condition = [](const VertexShaderState& state, bool refx, bool refy, Instruction::FlowControlType flow_control) {
static auto evaluate_condition = [](const ShaderState& state, bool refx, bool refy, Instruction::FlowControlType flow_control) {
bool results[2] = { refx == state.conditional_code[0],
refy == state.conditional_code[1] };
@ -547,7 +547,7 @@ static Common::Profiling::TimingCategory shader_category("Vertex Shader");
OutputVertex RunShader(const InputVertex& input, int num_attributes, const Regs::ShaderConfig& config, const State::ShaderSetup& setup) {
Common::Profiling::ScopeTimer timer(shader_category);
VertexShaderState state;
ShaderState state;
state.program_counter = config.main_offset;
state.debug.max_offset = 0;

View File

@ -12,7 +12,7 @@
namespace Pica {
namespace VertexShader {
namespace Shader {
struct InputVertex {
Math::Vec4<float24> attr[16];
@ -70,4 +70,3 @@ OutputVertex RunShader(const InputVertex& input, int num_attributes, const Regs:
} // namespace
} // namespace