Route paint UI clear state through GL backend

This commit is contained in:
2026-06-04 23:05:19 +02:00
parent b65db6f617
commit b8c7cd6e99
8 changed files with 330 additions and 40 deletions

View File

@@ -2377,6 +2377,34 @@ void rejects_invalid_render_target_clear_dispatch(pp::tests::Harness& h)
PP_EXPECT(h, missing_masked_dispatch.code == pp::foundation::StatusCode::invalid_argument);
}
void applies_clear_color_dispatch(pp::tests::Harness& h)
{
recorded_clear_calls.clear();
const auto status = pp::renderer::gl::apply_opengl_clear_color(
{ 0.125F, 0.25F, 0.5F, 1.0F },
pp::renderer::gl::OpenGlClearColorDispatch {
.clear_color = record_clear_color,
});
PP_EXPECT(h, status.ok());
PP_EXPECT(h, recorded_clear_calls.size() == 1U);
PP_EXPECT(h, recorded_clear_calls[0].color[0] == 0.125F);
PP_EXPECT(h, recorded_clear_calls[0].color[1] == 0.25F);
PP_EXPECT(h, recorded_clear_calls[0].color[2] == 0.5F);
PP_EXPECT(h, recorded_clear_calls[0].color[3] == 1.0F);
}
void rejects_incomplete_clear_color_dispatch(pp::tests::Harness& h)
{
const auto status = pp::renderer::gl::apply_opengl_clear_color(
{ 0.0F, 0.0F, 0.0F, 0.0F },
pp::renderer::gl::OpenGlClearColorDispatch {});
PP_EXPECT(h, !status.ok());
PP_EXPECT(h, status.code == pp::foundation::StatusCode::invalid_argument);
}
void activates_texture_unit_through_dispatch(pp::tests::Harness& h)
{
recorded_active_texture_calls.clear();
@@ -2445,6 +2473,60 @@ void rejects_incomplete_viewport_dispatch(pp::tests::Harness& h)
PP_EXPECT(h, status.code == pp::foundation::StatusCode::invalid_argument);
}
void queries_viewport_through_dispatch(pp::tests::Harness& h)
{
recorded_integer_queries.clear();
const auto result = pp::renderer::gl::query_opengl_viewport(
pp::renderer::gl::OpenGlViewportQueryDispatch {
.get_integer = record_get_integer,
});
PP_EXPECT(h, result.ok());
PP_EXPECT(h, result.value().x == 2);
PP_EXPECT(h, result.value().y == 4);
PP_EXPECT(h, result.value().width == 640);
PP_EXPECT(h, result.value().height == 320);
PP_EXPECT(h, recorded_integer_queries.size() == 1U);
PP_EXPECT(h, recorded_integer_queries[0] == pp::renderer::gl::viewport_query());
}
void rejects_incomplete_viewport_query_dispatch(pp::tests::Harness& h)
{
const auto result = pp::renderer::gl::query_opengl_viewport(
pp::renderer::gl::OpenGlViewportQueryDispatch {});
PP_EXPECT(h, !result.ok());
PP_EXPECT(h, result.status().code == pp::foundation::StatusCode::invalid_argument);
}
void queries_clear_color_through_dispatch(pp::tests::Harness& h)
{
recorded_float_queries.clear();
const auto result = pp::renderer::gl::query_opengl_clear_color(
pp::renderer::gl::OpenGlClearColorQueryDispatch {
.get_float = record_get_float,
});
PP_EXPECT(h, result.ok());
PP_EXPECT(h, result.value()[0] == 0.25F);
PP_EXPECT(h, result.value()[1] == 0.5F);
PP_EXPECT(h, result.value()[2] == 0.75F);
PP_EXPECT(h, result.value()[3] == 1.0F);
PP_EXPECT(h, recorded_float_queries.size() == 1U);
PP_EXPECT(h, recorded_float_queries[0] == pp::renderer::gl::color_clear_value_query());
}
void rejects_incomplete_clear_color_query_dispatch(pp::tests::Harness& h)
{
const auto result = pp::renderer::gl::query_opengl_clear_color(
pp::renderer::gl::OpenGlClearColorQueryDispatch {});
PP_EXPECT(h, !result.ok());
PP_EXPECT(h, result.status().code == pp::foundation::StatusCode::invalid_argument);
}
void applies_scissor_dispatch(pp::tests::Harness& h)
{
recorded_state_calls.clear();
@@ -5324,10 +5406,16 @@ int main()
harness.run("clears_color_buffer_with_write_mask_and_restores_previous_mask", clears_color_buffer_with_write_mask_and_restores_previous_mask);
harness.run("applies_color_write_mask_through_dispatch", applies_color_write_mask_through_dispatch);
harness.run("rejects_invalid_render_target_clear_dispatch", rejects_invalid_render_target_clear_dispatch);
harness.run("applies_clear_color_dispatch", applies_clear_color_dispatch);
harness.run("rejects_incomplete_clear_color_dispatch", rejects_incomplete_clear_color_dispatch);
harness.run("activates_texture_unit_through_dispatch", activates_texture_unit_through_dispatch);
harness.run("rejects_incomplete_active_texture_dispatch", rejects_incomplete_active_texture_dispatch);
harness.run("applies_viewport_dispatch", applies_viewport_dispatch);
harness.run("rejects_incomplete_viewport_dispatch", rejects_incomplete_viewport_dispatch);
harness.run("queries_viewport_through_dispatch", queries_viewport_through_dispatch);
harness.run("rejects_incomplete_viewport_query_dispatch", rejects_incomplete_viewport_query_dispatch);
harness.run("queries_clear_color_through_dispatch", queries_clear_color_through_dispatch);
harness.run("rejects_incomplete_clear_color_query_dispatch", rejects_incomplete_clear_color_query_dispatch);
harness.run("applies_scissor_dispatch", applies_scissor_dispatch);
harness.run("rejects_incomplete_scissor_dispatch", rejects_incomplete_scissor_dispatch);
harness.run("applies_scissor_test_dispatch", applies_scissor_test_dispatch);