summaryrefslogtreecommitdiff
path: root/engine/src/rendering/backend/opengl.rs
diff options
context:
space:
mode:
Diffstat (limited to 'engine/src/rendering/backend/opengl.rs')
-rw-r--r--engine/src/rendering/backend/opengl.rs44
1 files changed, 9 insertions, 35 deletions
diff --git a/engine/src/rendering/backend/opengl.rs b/engine/src/rendering/backend/opengl.rs
index 0a58417..aad9b6c 100644
--- a/engine/src/rendering/backend/opengl.rs
+++ b/engine/src/rendering/backend/opengl.rs
@@ -124,7 +124,6 @@ use crate::rendering::shader::{
Context as ShaderContext,
ContextSessionInitOpts as ShaderContextSessionInitOpts,
DebugInfoLevel as ShaderDebugInfoLevel,
- EntrypointFlags as ShaderEntrypointFlags,
Error as ShaderError,
LineDirectiveMode as ShaderLineDirectiveMode,
OptimizationLevel as ShaderOptimizationLevel,
@@ -953,8 +952,8 @@ fn handle_commands(
info: ShaderInfo {
vertex_desc: if shader_program
.metadata()
- .link_entrypoints
- .contains(ShaderEntrypointFlags::VERTEX)
+ .vertex_stage_entry_point_idx
+ .is_some()
{
Some(shader_program.create_vertex_desc(
backend_properties.shader_target_id,
@@ -1869,26 +1868,13 @@ fn create_and_init_gl_shader_program(
{
let gl_shader_program = GlShaderProgram::new(current_context);
- let shader_program_reflection = shader_program
- .reflection(backend_properties.shader_target_id)
- .expect("Not possible");
-
- if shader_program
- .metadata()
- .link_entrypoints
- .contains(ShaderEntrypointFlags::VERTEX)
+ if let Some(vertex_stage_entry_point_idx) =
+ shader_program.metadata().vertex_stage_entry_point_idx
{
- let Some(vs_entry_point_index) = shader_program_reflection
- .entry_points()
- .position(|entry_point| entry_point.stage() == ShaderStage::Vertex)
- else {
- unreachable!();
- };
-
let gl_vertex_shader = create_and_init_gl_shader(
current_context,
shader_program,
- vs_entry_point_index,
+ vertex_stage_entry_point_idx,
GlShaderKind::Vertex,
backend_properties,
)?;
@@ -1896,22 +1882,13 @@ fn create_and_init_gl_shader_program(
gl_shader_program.attach(current_context, &gl_vertex_shader);
}
- if shader_program
- .metadata()
- .link_entrypoints
- .contains(ShaderEntrypointFlags::FRAGMENT)
+ if let Some(fragment_stage_entry_point_idx) =
+ shader_program.metadata().fragment_stage_entry_point_idx
{
- let Some(fs_entry_point_index) = shader_program_reflection
- .entry_points()
- .position(|entry_point| entry_point.stage() == ShaderStage::Fragment)
- else {
- unreachable!();
- };
-
let gl_fragment_shader = create_and_init_gl_shader(
current_context,
shader_program,
- fs_entry_point_index,
+ fragment_stage_entry_point_idx,
GlShaderKind::Fragment,
backend_properties,
)?;
@@ -1927,14 +1904,11 @@ fn create_and_init_gl_shader_program(
fn create_and_init_gl_shader(
current_context: &MaybeCurrentContextWithFns,
shader_program: &ShaderProgram,
- entry_point_index: usize,
+ entry_point_index: u32,
gl_shader_kind: GlShaderKind,
backend_properties: &BackendProperties,
) -> Result<GlShader, GlShaderCreationError>
{
- let entry_point_index = u32::try_from(entry_point_index)
- .expect("Shader entry point index does not fit in 32-bit unsigned int");
-
let entry_point_code = shader_program
.get_entry_point_code(entry_point_index, backend_properties.shader_target_id)
.map_err(|err| GlShaderCreationError::GetShaderEntryPointCodeFailed {