Skip to content

Commit

Permalink
LibGL+LibSoftGPU: Add GL_MAX_LIGHTS to get_context_parameter
Browse files Browse the repository at this point in the history
This is required to allow lighting to work properly in the GL. We
currently have the maximum number of lights in the software GL context
set to 8, as this is the minimum that OpenGL mandates according to the
spec.
  • Loading branch information
Quaker762 authored and linusg committed Jan 12, 2022
1 parent 9ec2b37 commit 192befa
Show file tree
Hide file tree
Showing 5 changed files with 7 additions and 1 deletion.
2 changes: 2 additions & 0 deletions Userland/Libraries/LibGL/SoftwareGLContext.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,8 @@ Optional<ContextParameter> SoftwareGLContext::get_context_parameter(GLenum name)
return ContextParameter { .type = GL_INT, .value = { .integer_value = sizeof(float) * 8 } };
case GL_LIGHTING:
return ContextParameter { .type = GL_BOOL, .is_capability = true, .value = { .boolean_value = m_lighting_enabled } };
case GL_MAX_LIGHTS:
return ContextParameter { .type = GL_INT, .value = { .integer_value = static_cast<GLint>(m_device_info.num_lights) } };
case GL_MAX_MODELVIEW_STACK_DEPTH:
return ContextParameter { .type = GL_INT, .value = { .integer_value = MODELVIEW_MATRIX_STACK_LIMIT } };
case GL_MAX_PROJECTION_STACK_DEPTH:
Expand Down
1 change: 1 addition & 0 deletions Userland/Libraries/LibGL/SoftwareGLContext.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2021, Stephan Unverwerth <[email protected]>
* Copyright (c) 2021-2022, Jesse Buhagiar <[email protected]>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
Expand Down
1 change: 1 addition & 0 deletions Userland/Libraries/LibSoftGPU/Config.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ namespace SoftGPU {
static constexpr bool ENABLE_STATISTICS_OVERLAY = false;
static constexpr int NUM_SAMPLERS = 32;
static constexpr int SUBPIXEL_BITS = 5;
static constexpr int NUM_LIGHTS = 8;

// See: https://www.khronos.org/opengl/wiki/Common_Mistakes#Texture_edge_color_problem
// FIXME: make this dynamically configurable through ConfigServer
Expand Down
3 changes: 2 additions & 1 deletion Userland/Libraries/LibSoftGPU/Device.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -476,7 +476,8 @@ DeviceInfo Device::info() const
return {
.vendor_name = "SerenityOS",
.device_name = "SoftGPU",
.num_texture_units = NUM_SAMPLERS
.num_texture_units = NUM_SAMPLERS,
.num_lights = NUM_LIGHTS
};
}

Expand Down
1 change: 1 addition & 0 deletions Userland/Libraries/LibSoftGPU/DeviceInfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ struct DeviceInfo final {
String vendor_name;
String device_name;
unsigned num_texture_units;
unsigned num_lights;
};

}

0 comments on commit 192befa

Please sign in to comment.