Map renderer depth state to OpenGL

This commit is contained in:
2026-06-02 20:23:49 +02:00
parent 9b6c5b0849
commit 36f9e73dd4
5 changed files with 61 additions and 2 deletions

View File

@@ -274,26 +274,31 @@ void maps_render_pass_clear_masks(pp::tests::Harness& h)
{
const auto no_clear = pp::renderer::gl::clear_mask_for_render_pass(pp::renderer::RenderPassDesc {
.clear_color_enabled = false,
.clear_color = {},
.clear_depth_enabled = false,
.clear_stencil_enabled = false,
});
const auto color_only = pp::renderer::gl::clear_mask_for_render_pass(pp::renderer::RenderPassDesc {
.clear_color_enabled = true,
.clear_color = {},
.clear_depth_enabled = false,
.clear_stencil_enabled = false,
});
const auto depth_only = pp::renderer::gl::clear_mask_for_render_pass(pp::renderer::RenderPassDesc {
.clear_color_enabled = false,
.clear_color = {},
.clear_depth_enabled = true,
.clear_stencil_enabled = false,
});
const auto stencil_only = pp::renderer::gl::clear_mask_for_render_pass(pp::renderer::RenderPassDesc {
.clear_color_enabled = false,
.clear_color = {},
.clear_depth_enabled = false,
.clear_stencil_enabled = true,
});
const auto all_buffers = pp::renderer::gl::clear_mask_for_render_pass(pp::renderer::RenderPassDesc {
.clear_color_enabled = true,
.clear_color = {},
.clear_depth_enabled = true,
.clear_stencil_enabled = true,
});
@@ -635,6 +640,37 @@ void maps_renderer_depth_compare_tokens(pp::tests::Harness& h)
PP_EXPECT(h, invalid.value == 0U);
}
void maps_renderer_depth_states(pp::tests::Harness& h)
{
const auto disabled = pp::renderer::gl::depth_state_for_renderer_depth_state(
pp::renderer::DepthState {});
const auto read_write = pp::renderer::gl::depth_state_for_renderer_depth_state(
pp::renderer::DepthState {
.test_enabled = true,
.write_enabled = true,
.compare = pp::renderer::CompareOp::greater,
});
const auto invalid_compare = pp::renderer::gl::depth_state_for_renderer_depth_state(
pp::renderer::DepthState {
.test_enabled = true,
.write_enabled = false,
.compare = static_cast<pp::renderer::CompareOp>(255U),
});
PP_EXPECT(h, disabled.supported);
PP_EXPECT(h, disabled.test_enabled == 0U);
PP_EXPECT(h, disabled.write_enabled == 0U);
PP_EXPECT(h, disabled.compare_function == 0x0203U);
PP_EXPECT(h, read_write.supported);
PP_EXPECT(h, read_write.test_enabled == 1U);
PP_EXPECT(h, read_write.write_enabled == 1U);
PP_EXPECT(h, read_write.compare_function == 0x0204U);
PP_EXPECT(h, !invalid_compare.supported);
PP_EXPECT(h, invalid_compare.test_enabled == 1U);
PP_EXPECT(h, invalid_compare.write_enabled == 0U);
PP_EXPECT(h, invalid_compare.compare_function == 0U);
}
void maps_windows_wgl_core_context_parameters(pp::tests::Harness& h)
{
const auto config = pp::renderer::gl::windows_wgl_core_context_3_3_config();
@@ -768,6 +804,7 @@ int main()
harness.run("maps_renderer_blend_state_tokens", maps_renderer_blend_state_tokens);
harness.run("maps_renderer_color_write_masks", maps_renderer_color_write_masks);
harness.run("maps_renderer_depth_compare_tokens", maps_renderer_depth_compare_tokens);
harness.run("maps_renderer_depth_states", maps_renderer_depth_states);
harness.run("maps_windows_wgl_core_context_parameters", maps_windows_wgl_core_context_parameters);
harness.run("rejects_invalid_shader_attribute_binding_catalogs", rejects_invalid_shader_attribute_binding_catalogs);
harness.run("exposes_shader_uniform_catalog", exposes_shader_uniform_catalog);