diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2022-02-09 15:00:05 +0100 |
---|---|---|
committer | Fernando Sahmkow <fsahmkow27@gmail.com> | 2023-01-01 22:43:57 +0100 |
commit | a5a94f52ffcbf3119d272a9369021a213ea6dad2 (patch) | |
tree | ba6d42b142894d0f3f0ac34fb6ce491442bae8fd /src/video_core/engines/draw_manager.h | |
parent | Merge pull request #9538 from merryhime/char-concat (diff) | |
download | yuzu-a5a94f52ffcbf3119d272a9369021a213ea6dad2.tar yuzu-a5a94f52ffcbf3119d272a9369021a213ea6dad2.tar.gz yuzu-a5a94f52ffcbf3119d272a9369021a213ea6dad2.tar.bz2 yuzu-a5a94f52ffcbf3119d272a9369021a213ea6dad2.tar.lz yuzu-a5a94f52ffcbf3119d272a9369021a213ea6dad2.tar.xz yuzu-a5a94f52ffcbf3119d272a9369021a213ea6dad2.tar.zst yuzu-a5a94f52ffcbf3119d272a9369021a213ea6dad2.zip |
Diffstat (limited to 'src/video_core/engines/draw_manager.h')
-rw-r--r-- | src/video_core/engines/draw_manager.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/video_core/engines/draw_manager.h b/src/video_core/engines/draw_manager.h index 0e6930a9c..0cdb37f83 100644 --- a/src/video_core/engines/draw_manager.h +++ b/src/video_core/engines/draw_manager.h @@ -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 |