Merge pull request #3414 from ReinUsesLisp/maxwell-3d-draw
maxwell_3d: Unify draw methods
This commit is contained in:
		| @@ -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 | ||||
|   | ||||
| @@ -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; | ||||
|   | ||||
| @@ -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; | ||||
|   | ||||
| @@ -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); | ||||
|  | ||||
|   | ||||
| @@ -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); | ||||
|  | ||||
|   | ||||
| @@ -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(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user