MacroHLE: Add MultidrawIndirect HLE Macro.

This commit is contained in:
Fernando Sahmkow
2022-02-09 15:00:05 +01:00
parent a12a4f2a13
commit a5a94f52ff
13 changed files with 169 additions and 47 deletions

View File

@ -32,6 +32,13 @@ public:
std::vector<u8> inline_index_draw_indexes;
};
struct IndirectParams {
GPUVAddr start_address;
size_t buffer_size;
size_t max_draw_counts;
size_t stride;
};
explicit DrawManager(Maxwell3D* maxwell_3d);
void ProcessMethodCall(u32 method, u32 argument);
@ -46,10 +53,20 @@ public:
void DrawIndex(PrimitiveTopology topology, u32 index_first, u32 index_count, u32 base_index,
u32 base_instance, u32 num_instances);
void DrawIndexedIndirect(PrimitiveTopology topology, u32 index_first, u32 index_count);
const State& GetDrawState() const {
return draw_state;
}
IndirectParams& GetIndirectParams() {
return indirect_state;
}
const IndirectParams& GetIndirectParams() const {
return indirect_state;
}
private:
void SetInlineIndexBuffer(u32 index);
@ -63,7 +80,10 @@ private:
void ProcessDraw(bool draw_indexed, u32 instance_count);
void ProcessDrawIndirect(bool draw_indexed);
Maxwell3D* maxwell3d{};
State draw_state{};
IndirectParams indirect_state{};
};
} // namespace Tegra::Engines