summaryrefslogtreecommitdiffstats
path: root/src/video_core/engines/maxwell_3d.h
diff options
context:
space:
mode:
authorFernando Sahmkow <fsahmkow27@gmail.com>2022-03-05 08:01:13 +0100
committerFernando Sahmkow <fsahmkow27@gmail.com>2023-01-01 22:43:57 +0100
commitc541559767c3912940ee3d73a122530b3edde9f1 (patch)
tree9924302d2b8e383ce8824ccc219da42417bbc6d4 /src/video_core/engines/maxwell_3d.h
parentMacroHLE: Implement DrawIndexedIndirect & DrawArraysIndirect. (diff)
downloadyuzu-c541559767c3912940ee3d73a122530b3edde9f1.tar
yuzu-c541559767c3912940ee3d73a122530b3edde9f1.tar.gz
yuzu-c541559767c3912940ee3d73a122530b3edde9f1.tar.bz2
yuzu-c541559767c3912940ee3d73a122530b3edde9f1.tar.lz
yuzu-c541559767c3912940ee3d73a122530b3edde9f1.tar.xz
yuzu-c541559767c3912940ee3d73a122530b3edde9f1.tar.zst
yuzu-c541559767c3912940ee3d73a122530b3edde9f1.zip
Diffstat (limited to '')
-rw-r--r--src/video_core/engines/maxwell_3d.h21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h
index ac5e87563..e2256594d 100644
--- a/src/video_core/engines/maxwell_3d.h
+++ b/src/video_core/engines/maxwell_3d.h
@@ -3068,10 +3068,14 @@ public:
friend class DrawManager;
std::vector<u8> inline_index_draw_indexes;
- std::vector<GPUVAddr> macro_addresses;
- Core::System& system;
- MemoryManager& memory_manager;
+ GPUVAddr getMacroAddress(size_t index) const {
+ return macro_addresses[index];
+ }
+
+ void RefreshParameters();
+
+ u32 GetMaxCurrentVertices();
/// Handles a write to the CLEAR_BUFFERS register.
void ProcessClearBuffers(u32 layer_count);
@@ -3135,6 +3139,9 @@ private:
/// Returns a query's value or an empty object if the value will be deferred through a cache.
std::optional<u64> GetQueryResult();
+ Core::System& system;
+ MemoryManager& memory_manager;
+
VideoCore::RasterizerInterface* rasterizer = nullptr;
/// Start offsets of each macro in macro_memory
@@ -3151,6 +3158,14 @@ private:
Upload::State upload_state;
bool execute_on{true};
+
+ std::array<bool, Regs::NUM_REGS> draw_command{};
+ std::vector<u32> deferred_draw_method;
+ enum class DrawMode : u32 { General = 0, Instance, InlineIndex };
+ DrawMode draw_mode{DrawMode::General};
+ bool draw_indexed{};
+ std::vector<std::pair<GPUVAddr, size_t>> macro_segments;
+ std::vector<GPUVAddr> macro_addresses;
};
#define ASSERT_REG_POSITION(field_name, position) \