From a06b69c5b5c192e7db5bf20afa0c8e25900f8fa2 Mon Sep 17 00:00:00 2001 From: Jelle Raaijmakers Date: Wed, 1 Dec 2021 22:27:48 +0100 Subject: [PATCH] LibGL: Implement the `GL_DITHER` parameter --- Userland/Libraries/LibGL/GL/gl.h | 1 + Userland/Libraries/LibGL/SoftwareGLContext.cpp | 10 ++++++++++ Userland/Libraries/LibGL/SoftwareGLContext.h | 2 ++ 3 files changed, 13 insertions(+) diff --git a/Userland/Libraries/LibGL/GL/gl.h b/Userland/Libraries/LibGL/GL/gl.h index 2c41955992..a50616f309 100644 --- a/Userland/Libraries/LibGL/GL/gl.h +++ b/Userland/Libraries/LibGL/GL/gl.h @@ -59,6 +59,7 @@ extern "C" { #define GL_FOG 0x0B60 #define GL_DEPTH_TEST 0x0B71 #define GL_STENCIL_TEST 0x0B90 +#define GL_DITHER 0x0BD0 #define GL_POLYGON_OFFSET_FILL 0x8037 // Alpha testing diff --git a/Userland/Libraries/LibGL/SoftwareGLContext.cpp b/Userland/Libraries/LibGL/SoftwareGLContext.cpp index 43d3cda9f3..5800b85923 100644 --- a/Userland/Libraries/LibGL/SoftwareGLContext.cpp +++ b/Userland/Libraries/LibGL/SoftwareGLContext.cpp @@ -82,6 +82,8 @@ Optional SoftwareGLContext::get_context_parameter(GLenum name) return ContextParameter { .type = GL_INT, .value = { .integer_value = sizeof(float) * 8 } }; case GL_DEPTH_TEST: return ContextParameter { .type = GL_BOOL, .value = { .boolean_value = m_depth_test_enabled } }; + case GL_DITHER: + return ContextParameter { .type = GL_BOOL, .value = { .boolean_value = m_dither_enabled } }; case GL_DOUBLEBUFFER: return ContextParameter { .type = GL_BOOL, .value = { .boolean_value = true } }; case GL_GREEN_BITS: @@ -653,6 +655,9 @@ void SoftwareGLContext::gl_enable(GLenum capability) rasterizer_options.enable_alpha_test = true; update_rasterizer_options = true; break; + case GL_DITHER: + m_dither_enabled = true; + break; case GL_FOG: rasterizer_options.fog_enabled = true; update_rasterizer_options = true; @@ -715,6 +720,9 @@ void SoftwareGLContext::gl_disable(GLenum capability) rasterizer_options.enable_alpha_test = false; update_rasterizer_options = true; break; + case GL_DITHER: + m_dither_enabled = false; + break; case GL_FOG: rasterizer_options.fog_enabled = false; update_rasterizer_options = true; @@ -764,6 +772,8 @@ GLboolean SoftwareGLContext::gl_is_enabled(GLenum capability) return m_blend_enabled; case GL_ALPHA_TEST: return m_alpha_test_enabled; + case GL_DITHER: + return m_dither_enabled; case GL_FOG: return rasterizer_options.fog_enabled; case GL_LIGHTING: diff --git a/Userland/Libraries/LibGL/SoftwareGLContext.h b/Userland/Libraries/LibGL/SoftwareGLContext.h index 601c08b43c..64a4b995ab 100644 --- a/Userland/Libraries/LibGL/SoftwareGLContext.h +++ b/Userland/Libraries/LibGL/SoftwareGLContext.h @@ -196,6 +196,8 @@ private: GLenum m_alpha_test_func = GL_ALWAYS; GLclampf m_alpha_test_ref_value = 0; + bool m_dither_enabled { true }; + // Stencil configuration bool m_stencil_test_enabled { false };