aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/renderer_vulkan/vk_rasterizer.h
diff options
context:
space:
mode:
authorRodrigo Locatti <reinuseslisp@airmail.cc>2020-03-09 18:34:37 -0300
committerGitHub <noreply@github.com>2020-03-09 18:34:37 -0300
commit22e825a3bc0d9bfb5f8c29a50724c2887014dc02 (patch)
treed68f0ace93ba44292e3017dcb219f3132b3314ef /src/video_core/renderer_vulkan/vk_rasterizer.h
parentc281173df6878bad5a157302560b42aedf623267 (diff)
parent735c003a7099ba8ecb50c21dde24bd1a2c6a6878 (diff)
Merge pull request #3301 from ReinUsesLisp/state-tracker
video_core: Remove gl_state and use a state tracker based on dirty flags
Diffstat (limited to 'src/video_core/renderer_vulkan/vk_rasterizer.h')
-rw-r--r--src/video_core/renderer_vulkan/vk_rasterizer.h17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.h b/src/video_core/renderer_vulkan/vk_rasterizer.h
index 4dc8af6e8..96ea05f0a 100644
--- a/src/video_core/renderer_vulkan/vk_rasterizer.h
+++ b/src/video_core/renderer_vulkan/vk_rasterizer.h
@@ -96,6 +96,7 @@ struct hash<Vulkan::FramebufferCacheKey> {
namespace Vulkan {
+class StateTracker;
class BufferBindings;
struct ImageView {
@@ -108,7 +109,7 @@ public:
explicit RasterizerVulkan(Core::System& system, Core::Frontend::EmuWindow& render_window,
VKScreenInfo& screen_info, const VKDevice& device,
VKResourceManager& resource_manager, VKMemoryManager& memory_manager,
- VKScheduler& scheduler);
+ StateTracker& state_tracker, VKScheduler& scheduler);
~RasterizerVulkan() override;
void Draw(bool is_indexed, bool is_instanced) override;
@@ -127,6 +128,7 @@ public:
const Tegra::Engines::Fermi2D::Config& copy_config) override;
bool AccelerateDisplay(const Tegra::FramebufferConfig& config, VAddr framebuffer_addr,
u32 pixel_stride) override;
+ void SetupDirtyFlags() override;
/// Maximum supported size that a constbuffer can have in bytes.
static constexpr std::size_t MaxConstbufferSize = 0x10000;
@@ -215,12 +217,12 @@ private:
void SetupImage(const Tegra::Texture::TICEntry& tic, const ImageEntry& entry);
- void UpdateViewportsState(Tegra::Engines::Maxwell3D& gpu);
- void UpdateScissorsState(Tegra::Engines::Maxwell3D& gpu);
- void UpdateDepthBias(Tegra::Engines::Maxwell3D& gpu);
- void UpdateBlendConstants(Tegra::Engines::Maxwell3D& gpu);
- void UpdateDepthBounds(Tegra::Engines::Maxwell3D& gpu);
- void UpdateStencilFaces(Tegra::Engines::Maxwell3D& gpu);
+ void UpdateViewportsState(Tegra::Engines::Maxwell3D::Regs& regs);
+ void UpdateScissorsState(Tegra::Engines::Maxwell3D::Regs& regs);
+ void UpdateDepthBias(Tegra::Engines::Maxwell3D::Regs& regs);
+ void UpdateBlendConstants(Tegra::Engines::Maxwell3D::Regs& regs);
+ void UpdateDepthBounds(Tegra::Engines::Maxwell3D::Regs& regs);
+ void UpdateStencilFaces(Tegra::Engines::Maxwell3D::Regs& regs);
std::size_t CalculateGraphicsStreamBufferSize(bool is_indexed) const;
@@ -241,6 +243,7 @@ private:
const VKDevice& device;
VKResourceManager& resource_manager;
VKMemoryManager& memory_manager;
+ StateTracker& state_tracker;
VKScheduler& scheduler;
VKStagingBufferPool staging_pool;