summaryrefslogtreecommitdiffstats
path: root/src/video_core/engines
diff options
context:
space:
mode:
authorFernando Sahmkow <fsahmkow27@gmail.com>2020-02-17 23:10:23 +0100
committerFernando Sahmkow <fsahmkow27@gmail.com>2020-04-22 17:36:10 +0200
commit487379c593bcaf3787ede187c5d44f7923b54dc9 (patch)
treeb66c5c541a55be6d4b76b78c07be11731a7cb400 /src/video_core/engines
parentTextureCache: Flush linear textures after finishing rendering. (diff)
downloadyuzu-487379c593bcaf3787ede187c5d44f7923b54dc9.tar
yuzu-487379c593bcaf3787ede187c5d44f7923b54dc9.tar.gz
yuzu-487379c593bcaf3787ede187c5d44f7923b54dc9.tar.bz2
yuzu-487379c593bcaf3787ede187c5d44f7923b54dc9.tar.lz
yuzu-487379c593bcaf3787ede187c5d44f7923b54dc9.tar.xz
yuzu-487379c593bcaf3787ede187c5d44f7923b54dc9.tar.zst
yuzu-487379c593bcaf3787ede187c5d44f7923b54dc9.zip
Diffstat (limited to 'src/video_core/engines')
-rw-r--r--src/video_core/engines/maxwell_3d.cpp16
-rw-r--r--src/video_core/engines/maxwell_3d.h4
2 files changed, 5 insertions, 15 deletions
diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp
index 2605c3b42..c297bc31b 100644
--- a/src/video_core/engines/maxwell_3d.cpp
+++ b/src/video_core/engines/maxwell_3d.cpp
@@ -397,14 +397,6 @@ void Maxwell3D::StampQueryResult(u64 payload, bool long_query) {
}
}
-void Maxwell3D::ReleaseFences() {
- for (const auto pair : delay_fences) {
- const auto [addr, payload] = pair;
- memory_manager.Write<u32>(addr, static_cast<u32>(payload));
- }
- delay_fences.clear();
-}
-
void Maxwell3D::ProcessQueryGet() {
// TODO(Subv): Support the other query units.
ASSERT_MSG(regs.query.query_get.unit == Regs::QueryUnit::Crop,
@@ -412,10 +404,12 @@ void Maxwell3D::ProcessQueryGet() {
switch (regs.query.query_get.operation) {
case Regs::QueryOperation::Release: {
- rasterizer.FlushCommands();
- rasterizer.SyncGuestHost();
const u64 result = regs.query.query_sequence;
- delay_fences.emplace_back(regs.query.QueryAddress(), result);
+ if (regs.query.query_get.fence == 1) {
+ rasterizer.SignalFence(regs.query.QueryAddress(), static_cast<u32>(result));
+ } else {
+ StampQueryResult(result, regs.query.query_get.short_query == 0);
+ }
break;
}
case Regs::QueryOperation::Acquire:
diff --git a/src/video_core/engines/maxwell_3d.h b/src/video_core/engines/maxwell_3d.h
index 0a93827ec..59d5752d2 100644
--- a/src/video_core/engines/maxwell_3d.h
+++ b/src/video_core/engines/maxwell_3d.h
@@ -1427,8 +1427,6 @@ public:
Tables tables{};
} dirty;
- void ReleaseFences();
-
private:
void InitializeRegisterDefaults();
@@ -1469,8 +1467,6 @@ private:
std::array<u8, Regs::NUM_REGS> dirty_pointers{};
- std::vector<std::pair<GPUVAddr, u64>> delay_fences;
-
/// Retrieves information about a specific TIC entry from the TIC buffer.
Texture::TICEntry GetTICEntry(u32 tic_index) const;