diff --git a/Userland/Libraries/LibGL/GL/gl.h b/Userland/Libraries/LibGL/GL/gl.h index 2be8dc296c..de29dc04ae 100644 --- a/Userland/Libraries/LibGL/GL/gl.h +++ b/Userland/Libraries/LibGL/GL/gl.h @@ -57,6 +57,7 @@ extern "C" { #define GL_CULL_FACE 0x0B44 #define GL_FOG 0x0B60 #define GL_DEPTH_TEST 0x0B71 +#define GL_STENCIL_TEST 0x0B90 #define GL_POLYGON_OFFSET_FILL 0x8037 // Alpha testing diff --git a/Userland/Libraries/LibGL/SoftwareGLContext.cpp b/Userland/Libraries/LibGL/SoftwareGLContext.cpp index efb526cf1e..4e751bbbe6 100644 --- a/Userland/Libraries/LibGL/SoftwareGLContext.cpp +++ b/Userland/Libraries/LibGL/SoftwareGLContext.cpp @@ -574,6 +574,9 @@ void SoftwareGLContext::gl_enable(GLenum capability) rasterizer_options.scissor_enabled = true; update_rasterizer_options = true; break; + case GL_STENCIL_TEST: + m_stencil_test_enabled = true; + break; case GL_TEXTURE_1D: m_active_texture_unit->set_texture_1d_enabled(true); break; @@ -630,6 +633,9 @@ void SoftwareGLContext::gl_disable(GLenum capability) rasterizer_options.scissor_enabled = false; update_rasterizer_options = true; break; + case GL_STENCIL_TEST: + m_stencil_test_enabled = false; + break; case GL_TEXTURE_1D: m_active_texture_unit->set_texture_1d_enabled(false); break; @@ -669,6 +675,8 @@ GLboolean SoftwareGLContext::gl_is_enabled(GLenum capability) return rasterizer_options.fog_enabled; case GL_SCISSOR_TEST: return rasterizer_options.scissor_enabled; + case GL_STENCIL_TEST: + return m_stencil_test_enabled; } RETURN_VALUE_WITH_ERROR_IF(true, GL_INVALID_ENUM, 0); @@ -1554,6 +1562,9 @@ void SoftwareGLContext::gl_get_booleanv(GLenum pname, GLboolean* data) case GL_CULL_FACE: *data = m_cull_faces ? GL_TRUE : GL_FALSE; break; + case GL_STENCIL_TEST: + *data = m_stencil_test_enabled ? GL_TRUE : GL_FALSE; + break; case GL_TEXTURE_1D: *data = m_active_texture_unit->texture_1d_enabled() ? GL_TRUE : GL_FALSE; break; diff --git a/Userland/Libraries/LibGL/SoftwareGLContext.h b/Userland/Libraries/LibGL/SoftwareGLContext.h index 6bc51700b3..4eec2aeb46 100644 --- a/Userland/Libraries/LibGL/SoftwareGLContext.h +++ b/Userland/Libraries/LibGL/SoftwareGLContext.h @@ -164,6 +164,8 @@ private: GLenum m_alpha_test_func = GL_ALWAYS; GLclampf m_alpha_test_ref_value = 0; + bool m_stencil_test_enabled { false }; + GLenum m_current_read_buffer = GL_BACK; GLenum m_current_draw_buffer = GL_BACK;