diff options
| author | bunnei <bunneidev@gmail.com> | 2020-02-19 16:13:50 -0500 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-02-19 16:13:50 -0500 | 
| commit | b2bc7682b4f4fab68b49d51b50f8930f1ccdb157 (patch) | |
| tree | d5c22b625e6cb0c734725c4db57dd51301585011 | |
| parent | c8261a1a574ef83a368e5e04489f1e0490ca80d3 (diff) | |
| parent | 91aa58e41072e648cd1d43d284b08c2a01af08a2 (diff) | |
Merge pull request #3414 from ReinUsesLisp/maxwell-3d-draw
maxwell_3d: Unify draw methods
| -rw-r--r-- | src/video_core/engines/maxwell_3d.cpp | 4 | ||||
| -rw-r--r-- | src/video_core/rasterizer_interface.h | 7 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 10 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.h | 6 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_rasterizer.cpp | 10 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_rasterizer.h | 5 | 
6 files changed, 6 insertions, 36 deletions
| diff --git a/src/video_core/engines/maxwell_3d.cpp b/src/video_core/engines/maxwell_3d.cpp index 842cdcbcf..b28de1092 100644 --- a/src/video_core/engines/maxwell_3d.cpp +++ b/src/video_core/engines/maxwell_3d.cpp @@ -489,7 +489,7 @@ void Maxwell3D::FlushMMEInlineDraw() {      const bool is_indexed = mme_draw.current_mode == MMEDrawMode::Indexed;      if (ShouldExecute()) { -        rasterizer.DrawMultiBatch(is_indexed); +        rasterizer.Draw(is_indexed, true);      }      // TODO(bunnei): Below, we reset vertex count so that we can use these registers to determine if @@ -654,7 +654,7 @@ void Maxwell3D::DrawArrays() {      const bool is_indexed{regs.index_array.count && !regs.vertex_buffer.count};      if (ShouldExecute()) { -        rasterizer.DrawBatch(is_indexed); +        rasterizer.Draw(is_indexed, false);      }      // TODO(bunnei): Below, we reset vertex count so that we can use these registers to determine if diff --git a/src/video_core/rasterizer_interface.h b/src/video_core/rasterizer_interface.h index e9f1436f0..f18eaf4bc 100644 --- a/src/video_core/rasterizer_interface.h +++ b/src/video_core/rasterizer_interface.h @@ -35,11 +35,8 @@ class RasterizerInterface {  public:      virtual ~RasterizerInterface() {} -    /// Draw the current batch of vertex arrays -    virtual bool DrawBatch(bool is_indexed) = 0; - -    /// Draw the current batch of multiple instances of vertex arrays -    virtual bool DrawMultiBatch(bool is_indexed) = 0; +    /// Dispatches a draw invocation +    virtual void Draw(bool is_indexed, bool is_instanced) = 0;      /// Clear the current framebuffer      virtual void Clear() = 0; diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index c9c175846..e1965fb21 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp @@ -685,16 +685,6 @@ void RasterizerOpenGL::Draw(bool is_indexed, bool is_instanced) {      }  } -bool RasterizerOpenGL::DrawBatch(bool is_indexed) { -    Draw(is_indexed, false); -    return true; -} - -bool RasterizerOpenGL::DrawMultiBatch(bool is_indexed) { -    Draw(is_indexed, true); -    return true; -} -  void RasterizerOpenGL::DispatchCompute(GPUVAddr code_addr) {      if (device.HasBrokenCompute()) {          return; diff --git a/src/video_core/renderer_opengl/gl_rasterizer.h b/src/video_core/renderer_opengl/gl_rasterizer.h index c772fd4ba..68abe9a21 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.h +++ b/src/video_core/renderer_opengl/gl_rasterizer.h @@ -58,8 +58,7 @@ public:                                ScreenInfo& info);      ~RasterizerOpenGL() override; -    bool DrawBatch(bool is_indexed) override; -    bool DrawMultiBatch(bool is_indexed) override; +    void Draw(bool is_indexed, bool is_instanced) override;      void Clear() override;      void DispatchCompute(GPUVAddr code_addr) override;      void ResetCounter(VideoCore::QueryType type) override; @@ -110,9 +109,6 @@ private:      void SetupGlobalMemory(u32 binding, const GLShader::GlobalMemoryEntry& entry, GPUVAddr gpu_addr,                             std::size_t size); -    /// Syncs all the state, shaders, render targets and textures setting before a draw call. -    void Draw(bool is_indexed, bool is_instanced); -      /// Configures the current textures to use for the draw command.      void SetupDrawTextures(std::size_t stage_index, const Shader& shader); diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.cpp b/src/video_core/renderer_vulkan/vk_rasterizer.cpp index 79aa121ed..31c078f6a 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.cpp +++ b/src/video_core/renderer_vulkan/vk_rasterizer.cpp @@ -295,16 +295,6 @@ RasterizerVulkan::RasterizerVulkan(Core::System& system, Core::Frontend::EmuWind  RasterizerVulkan::~RasterizerVulkan() = default; -bool RasterizerVulkan::DrawBatch(bool is_indexed) { -    Draw(is_indexed, false); -    return true; -} - -bool RasterizerVulkan::DrawMultiBatch(bool is_indexed) { -    Draw(is_indexed, true); -    return true; -} -  void RasterizerVulkan::Draw(bool is_indexed, bool is_instanced) {      MICROPROFILE_SCOPE(Vulkan_Drawing); diff --git a/src/video_core/renderer_vulkan/vk_rasterizer.h b/src/video_core/renderer_vulkan/vk_rasterizer.h index add1ad88c..138903d60 100644 --- a/src/video_core/renderer_vulkan/vk_rasterizer.h +++ b/src/video_core/renderer_vulkan/vk_rasterizer.h @@ -105,8 +105,7 @@ public:                                VKScheduler& scheduler);      ~RasterizerVulkan() override; -    bool DrawBatch(bool is_indexed) override; -    bool DrawMultiBatch(bool is_indexed) override; +    void Draw(bool is_indexed, bool is_instanced) override;      void Clear() override;      void DispatchCompute(GPUVAddr code_addr) override;      void ResetCounter(VideoCore::QueryType type) override; @@ -143,8 +142,6 @@ private:      static constexpr std::size_t ZETA_TEXCEPTION_INDEX = 8; -    void Draw(bool is_indexed, bool is_instanced); -      void FlushWork();      Texceptions UpdateAttachments(); | 
