mirror of
https://github.com/yuzu-emu/yuzu-android.git
synced 2025-06-13 07:28:20 -05:00
VideoCore/Shader: Split shader uniform state and shader engine
Currently there's only a single dummy implementation, which will be split in a following commit.
This commit is contained in:
@ -142,15 +142,16 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) {
|
||||
MICROPROFILE_SCOPE(GPU_Drawing);
|
||||
immediate_attribute_id = 0;
|
||||
|
||||
Shader::UnitState shader_unit;
|
||||
g_state.vs.Setup();
|
||||
auto* shader_engine = Shader::GetEngine();
|
||||
shader_engine->SetupBatch(&g_state.vs);
|
||||
|
||||
// Send to vertex shader
|
||||
if (g_debug_context)
|
||||
g_debug_context->OnEvent(DebugContext::Event::VertexShaderInvocation,
|
||||
static_cast<void*>(&immediate_input));
|
||||
Shader::UnitState shader_unit;
|
||||
shader_unit.LoadInputVertex(immediate_input, regs.vs.num_input_attributes + 1);
|
||||
g_state.vs.Run(shader_unit, regs.vs.main_offset);
|
||||
shader_engine->Run(shader_unit, regs.vs.main_offset);
|
||||
Shader::OutputVertex output_vertex =
|
||||
shader_unit.output_registers.ToVertex(regs.vs);
|
||||
|
||||
@ -244,8 +245,10 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) {
|
||||
unsigned int vertex_cache_pos = 0;
|
||||
vertex_cache_ids.fill(-1);
|
||||
|
||||
auto* shader_engine = Shader::GetEngine();
|
||||
Shader::UnitState shader_unit;
|
||||
g_state.vs.Setup();
|
||||
|
||||
shader_engine->SetupBatch(&g_state.vs);
|
||||
|
||||
for (unsigned int index = 0; index < regs.num_vertices; ++index) {
|
||||
// Indexed rendering doesn't use the start offset
|
||||
@ -285,7 +288,7 @@ static void WritePicaReg(u32 id, u32 value, u32 mask) {
|
||||
g_debug_context->OnEvent(DebugContext::Event::VertexShaderInvocation,
|
||||
(void*)&input);
|
||||
shader_unit.LoadInputVertex(input, loader.GetNumTotalAttributes());
|
||||
g_state.vs.Run(shader_unit, regs.vs.main_offset);
|
||||
shader_engine->Run(shader_unit, regs.vs.main_offset);
|
||||
|
||||
// Retrieve vertex from register data
|
||||
output_vertex = shader_unit.output_registers.ToVertex(regs.vs);
|
||||
|
Reference in New Issue
Block a user