diff options
| author | 2021-11-07 17:15:28 +0100 | |
|---|---|---|
| committer | 2022-10-06 21:00:51 +0200 | |
| commit | d7990c159e956e5431c501fa94405dd04496197c (patch) | |
| tree | b0eab4e9b1fd5c92e6918a732b3eda8443ba4b9e /src/video_core/renderer_vulkan | |
| parent | NVHOST_CTRl: Implement missing method and fix some stuffs. (diff) | |
| download | yuzu-d7990c159e956e5431c501fa94405dd04496197c.tar.gz yuzu-d7990c159e956e5431c501fa94405dd04496197c.tar.xz yuzu-d7990c159e956e5431c501fa94405dd04496197c.zip | |
OpenGl: Implement Channels.
Diffstat (limited to 'src/video_core/renderer_vulkan')
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 | ||
| 1001 | void RasterizerVulkan::ReleaseChannel(s32 channel_id) { | 1001 | void 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 | ||
| 206 | StateTracker::StateTracker(Tegra::GPU& gpu) | 205 | void StateTracker::InvalidateState() { |
| 207 | : flags{}, invalidation_flags{MakeInvalidationFlags()} {} | 206 | flags->set(); |
| 207 | } | ||
| 208 | |||
| 209 | StateTracker::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 | ||
| 61 | public: | 61 | public: |
| 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 | |||
| 152 | private: | 154 | private: |
| 153 | static constexpr auto INVALID_TOPOLOGY = static_cast<Maxwell::PrimitiveTopology>(~0u); | 155 | static constexpr auto INVALID_TOPOLOGY = static_cast<Maxwell::PrimitiveTopology>(~0u); |
| 154 | 156 | ||