summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibGL
diff options
context:
space:
mode:
authorStephan Unverwerth <s.unverwerth@serenityos.org>2021-12-22 23:11:35 +0100
committerBrian Gianforcaro <b.gianfo@gmail.com>2021-12-24 05:10:28 -0800
commitc720cd00db9c931eefc657d9b2179605067a0f0a (patch)
tree4a40db47a75ed16bc0314664c19cf01edee2cde9 /Userland/Libraries/LibGL
parent40bd73bdef80d69d72cbc0699ea3690adc677ed3 (diff)
downloadserenity-c720cd00db9c931eefc657d9b2179605067a0f0a.zip
LibSoftGPU: Remove OpenGL type for alpha blend factors
Replaces the GLenum used for configuring alpha blend factors in the SoftGPU device with out own enum.
Diffstat (limited to 'Userland/Libraries/LibGL')
-rw-r--r--Userland/Libraries/LibGL/SoftwareGLContext.cpp34
1 files changed, 32 insertions, 2 deletions
diff --git a/Userland/Libraries/LibGL/SoftwareGLContext.cpp b/Userland/Libraries/LibGL/SoftwareGLContext.cpp
index 7eee9d985b..b75de83362 100644
--- a/Userland/Libraries/LibGL/SoftwareGLContext.cpp
+++ b/Userland/Libraries/LibGL/SoftwareGLContext.cpp
@@ -1130,9 +1130,39 @@ void SoftwareGLContext::gl_blend_func(GLenum src_factor, GLenum dst_factor)
m_blend_source_factor = src_factor;
m_blend_destination_factor = dst_factor;
+ auto map_gl_blend_factor_to_device = [](GLenum factor) constexpr
+ {
+ switch (factor) {
+ case GL_ZERO:
+ return SoftGPU::BlendFactor::Zero;
+ case GL_ONE:
+ return SoftGPU::BlendFactor::One;
+ case GL_SRC_ALPHA:
+ return SoftGPU::BlendFactor::SrcAlpha;
+ case GL_ONE_MINUS_SRC_ALPHA:
+ return SoftGPU::BlendFactor::OneMinusSrcAlpha;
+ case GL_SRC_COLOR:
+ return SoftGPU::BlendFactor::SrcColor;
+ case GL_ONE_MINUS_SRC_COLOR:
+ return SoftGPU::BlendFactor::OneMinusSrcColor;
+ case GL_DST_ALPHA:
+ return SoftGPU::BlendFactor::DstAlpha;
+ case GL_ONE_MINUS_DST_ALPHA:
+ return SoftGPU::BlendFactor::OneMinusDstAlpha;
+ case GL_DST_COLOR:
+ return SoftGPU::BlendFactor::DstColor;
+ case GL_ONE_MINUS_DST_COLOR:
+ return SoftGPU::BlendFactor::OneMinusDstColor;
+ case GL_SRC_ALPHA_SATURATE:
+ return SoftGPU::BlendFactor::SrcAlphaSaturate;
+ default:
+ VERIFY_NOT_REACHED();
+ }
+ };
+
auto options = m_rasterizer.options();
- options.blend_source_factor = m_blend_source_factor;
- options.blend_destination_factor = m_blend_destination_factor;
+ options.blend_source_factor = map_gl_blend_factor_to_device(m_blend_source_factor);
+ options.blend_destination_factor = map_gl_blend_factor_to_device(m_blend_destination_factor);
m_rasterizer.set_options(options);
}