Add OpenGL renderer capability target
This commit is contained in:
@@ -186,6 +186,18 @@ add_test(NAME pp_renderer_api_tests COMMAND pp_renderer_api_tests)
|
||||
set_tests_properties(pp_renderer_api_tests PROPERTIES
|
||||
LABELS "renderer;desktop-fast")
|
||||
|
||||
if(TARGET pp_renderer_gl)
|
||||
add_executable(pp_renderer_gl_capabilities_tests
|
||||
renderer_gl/capabilities_tests.cpp)
|
||||
target_link_libraries(pp_renderer_gl_capabilities_tests PRIVATE
|
||||
pp_renderer_gl
|
||||
pp_test_harness)
|
||||
|
||||
add_test(NAME pp_renderer_gl_capabilities_tests COMMAND pp_renderer_gl_capabilities_tests)
|
||||
set_tests_properties(pp_renderer_gl_capabilities_tests PROPERTIES
|
||||
LABELS "renderer;desktop-fast")
|
||||
endif()
|
||||
|
||||
add_executable(pp_paint_renderer_compositor_tests
|
||||
paint_renderer/compositor_tests.cpp)
|
||||
target_link_libraries(pp_paint_renderer_compositor_tests PRIVATE
|
||||
|
||||
81
tests/renderer_gl/capabilities_tests.cpp
Normal file
81
tests/renderer_gl/capabilities_tests.cpp
Normal file
@@ -0,0 +1,81 @@
|
||||
#include "renderer_gl/opengl_capabilities.h"
|
||||
#include "test_harness.h"
|
||||
|
||||
#include <array>
|
||||
#include <string_view>
|
||||
|
||||
namespace {
|
||||
|
||||
void detects_common_extension_capabilities(pp::tests::Harness& h)
|
||||
{
|
||||
constexpr std::array<std::string_view, 2> extensions {
|
||||
"GL_EXT_shader_framebuffer_fetch",
|
||||
"GL_ARB_map_buffer_alignment",
|
||||
};
|
||||
|
||||
const auto capabilities = pp::renderer::gl::detect_opengl_capabilities(
|
||||
extensions,
|
||||
pp::renderer::gl::OpenGlRuntime {});
|
||||
|
||||
PP_EXPECT(h, capabilities.framebuffer_fetch);
|
||||
PP_EXPECT(h, capabilities.map_buffer_alignment);
|
||||
PP_EXPECT(h, !capabilities.float32_textures);
|
||||
PP_EXPECT(h, !capabilities.float16_textures);
|
||||
}
|
||||
|
||||
void treats_desktop_gl_float_rendering_as_core(pp::tests::Harness& h)
|
||||
{
|
||||
const auto capabilities = pp::renderer::gl::detect_opengl_capabilities(
|
||||
{},
|
||||
pp::renderer::gl::OpenGlRuntime { .desktop_gl = true });
|
||||
|
||||
PP_EXPECT(h, capabilities.float32_textures);
|
||||
PP_EXPECT(h, capabilities.float32_linear);
|
||||
PP_EXPECT(h, capabilities.float16_textures);
|
||||
}
|
||||
|
||||
void detects_gles_texture_float_extensions(pp::tests::Harness& h)
|
||||
{
|
||||
constexpr std::array<std::string_view, 3> extensions {
|
||||
"GL_OES_texture_float",
|
||||
"GL_OES_texture_float_linear",
|
||||
"GL_EXT_color_buffer_half_float",
|
||||
};
|
||||
|
||||
const auto capabilities = pp::renderer::gl::detect_opengl_capabilities(
|
||||
extensions,
|
||||
pp::renderer::gl::OpenGlRuntime { .gles = true });
|
||||
|
||||
PP_EXPECT(h, capabilities.float32_textures);
|
||||
PP_EXPECT(h, capabilities.float32_linear);
|
||||
PP_EXPECT(h, capabilities.float16_textures);
|
||||
}
|
||||
|
||||
void ignores_gles_texture_extensions_for_webgl_runtime(pp::tests::Harness& h)
|
||||
{
|
||||
constexpr std::array<std::string_view, 3> extensions {
|
||||
"GL_OES_texture_float",
|
||||
"GL_OES_texture_float_linear",
|
||||
"GL_EXT_color_buffer_half_float",
|
||||
};
|
||||
|
||||
const auto capabilities = pp::renderer::gl::detect_opengl_capabilities(
|
||||
extensions,
|
||||
pp::renderer::gl::OpenGlRuntime { .gles = true, .web = true });
|
||||
|
||||
PP_EXPECT(h, !capabilities.float32_textures);
|
||||
PP_EXPECT(h, !capabilities.float32_linear);
|
||||
PP_EXPECT(h, !capabilities.float16_textures);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
pp::tests::Harness harness;
|
||||
harness.run("detects_common_extension_capabilities", detects_common_extension_capabilities);
|
||||
harness.run("treats_desktop_gl_float_rendering_as_core", treats_desktop_gl_float_rendering_as_core);
|
||||
harness.run("detects_gles_texture_float_extensions", detects_gles_texture_float_extensions);
|
||||
harness.run("ignores_gles_texture_extensions_for_webgl_runtime", ignores_gles_texture_extensions_for_webgl_runtime);
|
||||
return harness.finish();
|
||||
}
|
||||
Reference in New Issue
Block a user