diff --git a/Userland/Libraries/LibGL/SoftwareGLContext.cpp b/Userland/Libraries/LibGL/SoftwareGLContext.cpp index ef3b5e54fd..e17f0661e1 100644 --- a/Userland/Libraries/LibGL/SoftwareGLContext.cpp +++ b/Userland/Libraries/LibGL/SoftwareGLContext.cpp @@ -1317,7 +1317,9 @@ void SoftwareGLContext::gl_draw_buffer(GLenum buffer) m_current_draw_buffer = buffer; auto rasterizer_options = m_rasterizer.options(); - rasterizer_options.draw_buffer = m_current_draw_buffer; + // FIXME: We only have a single draw buffer in SoftGPU at the moment, + // so we simply disable color writes if GL_NONE is selected + rasterizer_options.enable_color_write = m_current_draw_buffer != GL_NONE; m_rasterizer.set_options(rasterizer_options); } diff --git a/Userland/Libraries/LibSoftGPU/Device.cpp b/Userland/Libraries/LibSoftGPU/Device.cpp index 290391fb5a..d5ddcd36b7 100644 --- a/Userland/Libraries/LibSoftGPU/Device.cpp +++ b/Userland/Libraries/LibSoftGPU/Device.cpp @@ -348,7 +348,7 @@ static void rasterize_triangle(const RasterizerOptions& options, Gfx::Bitmap& re } // We will not update the color buffer at all - if (!options.color_mask || options.draw_buffer == GL_NONE) + if (!options.color_mask || !options.enable_color_write) continue; // Draw the pixels according to the previously generated mask diff --git a/Userland/Libraries/LibSoftGPU/Device.h b/Userland/Libraries/LibSoftGPU/Device.h index 25209a7efd..01f90a0f33 100644 --- a/Userland/Libraries/LibSoftGPU/Device.h +++ b/Userland/Libraries/LibSoftGPU/Device.h @@ -79,7 +79,7 @@ struct RasterizerOptions { float fog_end { 1.0f }; bool scissor_enabled { false }; Gfx::IntRect scissor_box; - GLenum draw_buffer { GL_BACK }; + bool enable_color_write { true }; float depth_offset_factor { 0 }; float depth_offset_constant { 0 }; bool enable_culling { false };