summaryrefslogtreecommitdiffstats
path: root/src/video_core/engines/maxwell_3d.h
diff options
context:
space:
mode:
authorFeng Chen <vonchenplus@gmail.com>2022-12-06 06:45:26 +0100
committerFeng Chen <vonchenplus@gmail.com>2022-12-08 03:12:19 +0100
commitbf0b957c05013f33855e67c31a48e61b1e86d356 (patch)
tree72db2458cb7e5b7572b53527e0755d4fe45e9db0 /src/video_core/engines/maxwell_3d.h
parentMerge pull request #9381 from liamwhite/uninit (diff)
downloadyuzu-bf0b957c05013f33855e67c31a48e61b1e86d356.tar
yuzu-bf0b957c05013f33855e67c31a48e61b1e86d356.tar.gz
yuzu-bf0b957c05013f33855e67c31a48e61b1e86d356.tar.bz2
yuzu-bf0b957c05013f33855e67c31a48e61b1e86d356.tar.lz
yuzu-bf0b957c05013f33855e67c31a48e61b1e86d356.tar.xz
yuzu-bf0b957c05013f33855e67c31a48e61b1e86d356.tar.zst
yuzu-bf0b957c05013f33855e67c31a48e61b1e86d356.zip
Diffstat (limited to 'src/video_core/engines/maxwell_3d.h')
-rw-r--r--src/video_core/engines/maxwell_3d.h25
1 files changed, 5 insertions, 20 deletions
diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h
index a541cd95f..22b904319 100644
--- a/src/video_core/engines/maxwell_3d.h
+++ b/src/video_core/engines/maxwell_3d.h
@@ -37,6 +37,8 @@ class RasterizerInterface;
namespace Tegra::Engines {
+class DrawManager;
+
/**
* This Engine is known as GF100_3D. Documentation can be found in:
* https://github.com/NVIDIA/open-gpu-doc/blob/master/classes/3d/clb197.h
@@ -2223,6 +2225,7 @@ public:
struct IndexBufferSmall {
union {
+ u32 raw;
BitField<0, 16, u32> first;
BitField<16, 12, u32> count;
BitField<28, 4, PrimitiveTopology> topology;
@@ -3061,10 +3064,8 @@ public:
Tables tables{};
} dirty;
- std::vector<u8> inline_index_draw_indexes;
-
- /// Handles a write to the CLEAR_BUFFERS register.
- void ProcessClearBuffers(u32 layer_count);
+ std::unique_ptr<DrawManager> draw_manager;
+ friend class DrawManager;
private:
void InitializeRegisterDefaults();
@@ -3122,15 +3123,6 @@ private:
/// Handles a write to the CB_BIND register.
void ProcessCBBind(size_t stage_index);
- /// Handles use of topology overrides (e.g., to avoid using a topology assigned from a macro)
- void ProcessTopologyOverride();
-
- /// Handles deferred draw(e.g., instance draw).
- void ProcessDeferredDraw();
-
- /// Handles a draw.
- void ProcessDraw(u32 instance_count = 1);
-
/// Returns a query's value or an empty object if the value will be deferred through a cache.
std::optional<u64> GetQueryResult();
@@ -3153,13 +3145,6 @@ private:
Upload::State upload_state;
bool execute_on{true};
- bool use_topology_override{false};
-
- 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{};
};
#define ASSERT_REG_POSITION(field_name, position) \