Revert Buffer cache changes and setup additional macros.

This commit is contained in:
Fernando Sahmkow
2022-11-18 00:21:13 +01:00
parent 18637766ef
commit ce448ce770
7 changed files with 179 additions and 128 deletions

View File

@@ -272,6 +272,7 @@ public:
};
union {
u32 raw;
BitField<0, 1, Mode> mode;
BitField<4, 8, u32> pad;
};
@@ -1217,10 +1218,12 @@ public:
struct Window {
union {
u32 raw_1;
BitField<0, 16, u32> x_min;
BitField<16, 16, u32> x_max;
};
union {
u32 raw_2;
BitField<0, 16, u32> y_min;
BitField<16, 16, u32> y_max;
};
@@ -3090,9 +3093,16 @@ public:
return macro_addresses[index];
}
void RefreshParameters();
void RefreshParameters() {
if (!current_macro_dirty) {
return;
}
RefreshParametersImpl();
}
bool AnyParametersDirty();
bool AnyParametersDirty() {
return current_macro_dirty;
}
u32 GetMaxCurrentVertices();
@@ -3101,6 +3111,9 @@ public:
/// Handles a write to the CLEAR_BUFFERS register.
void ProcessClearBuffers(u32 layer_count);
/// Handles a write to the CB_BIND register.
void ProcessCBBind(size_t stage_index);
private:
void InitializeRegisterDefaults();
@@ -3154,12 +3167,11 @@ private:
void ProcessCBData(u32 value);
void ProcessCBMultiData(const u32* start_base, u32 amount);
/// Handles a write to the CB_BIND register.
void ProcessCBBind(size_t stage_index);
/// Returns a query's value or an empty object if the value will be deferred through a cache.
std::optional<u64> GetQueryResult();
void RefreshParametersImpl();
Core::System& system;
MemoryManager& memory_manager;
@@ -3187,6 +3199,7 @@ private:
bool draw_indexed{};
std::vector<std::pair<GPUVAddr, size_t>> macro_segments;
std::vector<GPUVAddr> macro_addresses;
bool current_macro_dirty{};
};
#define ASSERT_REG_POSITION(field_name, position) \