summaryrefslogtreecommitdiff
path: root/src/video_core/renderer_vulkan
diff options
context:
space:
mode:
authorGravatar Fernando Sahmkow2021-11-07 17:15:28 +0100
committerGravatar Fernando Sahmkow2022-10-06 21:00:51 +0200
commitd7990c159e956e5431c501fa94405dd04496197c (patch)
treeb0eab4e9b1fd5c92e6918a732b3eda8443ba4b9e /src/video_core/renderer_vulkan
parentNVHOST_CTRl: Implement missing method and fix some stuffs. (diff)
downloadyuzu-d7990c159e956e5431c501fa94405dd04496197c.tar.gz
yuzu-d7990c159e956e5431c501fa94405dd04496197c.tar.xz
yuzu-d7990c159e956e5431c501fa94405dd04496197c.zip
OpenGl: Implement Channels.
Diffstat (limited to 'src/video_core/renderer_vulkan')
-rw-r--r--src/video_core/renderer_vulkan/renderer_vulkan.cpp2
-rw-r--r--src/video_core/renderer_vulkan/vk_rasterizer.cpp2
-rw-r--r--src/video_core/renderer_vulkan/vk_state_tracker.cpp8
-rw-r--r--src/video_core/renderer_vulkan/vk_state_tracker.h4
4 files changed, 10 insertions, 6 deletions
diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.cpp b/src/video_core/renderer_vulkan/renderer_vulkan.cpp
index 68c2bc34c..d12669c9d 100644
--- a/src/video_core/renderer_vulkan/renderer_vulkan.cpp
+++ b/src/video_core/renderer_vulkan/renderer_vulkan.cpp
@@ -106,7 +106,7 @@ RendererVulkan::RendererVulkan(Core::TelemetrySession& telemetry_session_,
106 surface(CreateSurface(instance, render_window)), 106 surface(CreateSurface(instance, render_window)),
107 device(CreateDevice(instance, dld, *surface)), 107 device(CreateDevice(instance, dld, *surface)),
108 memory_allocator(device, false), 108 memory_allocator(device, false),
109 state_tracker(gpu), 109 state_tracker(),
110 scheduler(device, state_tracker), 110 scheduler(device, state_tracker),
111 swapchain(*surface, device, scheduler, render_window.GetFramebufferLayout().width, 111 swapchain(*surface, device, scheduler, render_window.GetFramebufferLayout().width,
112 render_window.GetFramebufferLayout().height, false), 112 render_window.GetFramebufferLayout().height, false),
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
index 5d9ff0589..bf750452f 100644
--- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp
+++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp
@@ -995,7 +995,7 @@ void RasterizerVulkan::BindChannel(Tegra::Control::ChannelState& channel) {
995 pipeline_cache.BindToChannel(channel_id); 995 pipeline_cache.BindToChannel(channel_id);
996 query_cache.BindToChannel(channel_id); 996 query_cache.BindToChannel(channel_id);
997 state_tracker.ChangeChannel(channel); 997 state_tracker.ChangeChannel(channel);
998 scheduler.InvalidateState(); 998 state_tracker.InvalidateState();
999} 999}
1000 1000
1001void RasterizerVulkan::ReleaseChannel(s32 channel_id) { 1001void RasterizerVulkan::ReleaseChannel(s32 channel_id) {
diff --git a/src/video_core/renderer_vulkan/vk_state_tracker.cpp b/src/video_core/renderer_vulkan/vk_state_tracker.cpp
index a87bf8dd3..5a11d3267 100644
--- a/src/video_core/renderer_vulkan/vk_state_tracker.cpp
+++ b/src/video_core/renderer_vulkan/vk_state_tracker.cpp
@@ -10,7 +10,6 @@
10#include "video_core/control/channel_state.h" 10#include "video_core/control/channel_state.h"
11#include "video_core/dirty_flags.h" 11#include "video_core/dirty_flags.h"
12#include "video_core/engines/maxwell_3d.h" 12#include "video_core/engines/maxwell_3d.h"
13#include "video_core/gpu.h"
14#include "video_core/renderer_vulkan/vk_state_tracker.h" 13#include "video_core/renderer_vulkan/vk_state_tracker.h"
15 14
16#define OFF(field_name) MAXWELL3D_REG_INDEX(field_name) 15#define OFF(field_name) MAXWELL3D_REG_INDEX(field_name)
@@ -203,7 +202,10 @@ void StateTracker::ChangeChannel(Tegra::Control::ChannelState& channel_state) {
203 flags = &channel_state.maxwell_3d->dirty.flags; 202 flags = &channel_state.maxwell_3d->dirty.flags;
204} 203}
205 204
206StateTracker::StateTracker(Tegra::GPU& gpu) 205void StateTracker::InvalidateState() {
207 : flags{}, invalidation_flags{MakeInvalidationFlags()} {} 206 flags->set();
207}
208
209StateTracker::StateTracker() : flags{}, invalidation_flags{MakeInvalidationFlags()} {}
208 210
209} // namespace Vulkan 211} // namespace Vulkan
diff --git a/src/video_core/renderer_vulkan/vk_state_tracker.h b/src/video_core/renderer_vulkan/vk_state_tracker.h
index 9f8a887f9..c107d9c24 100644
--- a/src/video_core/renderer_vulkan/vk_state_tracker.h
+++ b/src/video_core/renderer_vulkan/vk_state_tracker.h
@@ -59,7 +59,7 @@ class StateTracker {
59 using Maxwell = Tegra::Engines::Maxwell3D::Regs; 59 using Maxwell = Tegra::Engines::Maxwell3D::Regs;
60 60
61public: 61public:
62 explicit StateTracker(Tegra::GPU& gpu); 62 explicit StateTracker();
63 63
64 void InvalidateCommandBufferState() { 64 void InvalidateCommandBufferState() {
65 (*flags) |= invalidation_flags; 65 (*flags) |= invalidation_flags;
@@ -149,6 +149,8 @@ public:
149 149
150 void ChangeChannel(Tegra::Control::ChannelState& channel_state); 150 void ChangeChannel(Tegra::Control::ChannelState& channel_state);
151 151
152 void InvalidateState();
153
152private: 154private:
153 static constexpr auto INVALID_TOPOLOGY = static_cast<Maxwell::PrimitiveTopology>(~0u); 155 static constexpr auto INVALID_TOPOLOGY = static_cast<Maxwell::PrimitiveTopology>(~0u);
154 156