63 lines
2.9 KiB
C
63 lines
2.9 KiB
C
/* SPDX-License-Identifier: GPL-3.0-or-later */
|
|
#include <chimera/gfx/adapters/retroarch.h>
|
|
#include <chimera/gfx/adapters/sdl2.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
static int failures;
|
|
|
|
#define CHECK(expression) \
|
|
do { \
|
|
if (!(expression)) { \
|
|
(void)fprintf(stderr, "%s:%d: check failed: %s\n", __FILE__, \
|
|
__LINE__, #expression); \
|
|
failures += 1; \
|
|
} \
|
|
} while (0)
|
|
|
|
int main(void) {
|
|
chimera_gfx_config config = CHIMERA_GFX_CONFIG_INIT;
|
|
chimera_gfx_context *context = NULL;
|
|
chimera_gfx_retroarch_adapter_info retroarch =
|
|
CHIMERA_GFX_RETROARCH_ADAPTER_INFO_INIT;
|
|
chimera_gfx_sdl2_adapter_info sdl2 = CHIMERA_GFX_SDL2_ADAPTER_INFO_INIT;
|
|
|
|
CHECK(chimera_gfx_retroarch_query_scaffold(NULL) ==
|
|
CHIMERA_GFX_STATUS_INVALID_ARGUMENT);
|
|
retroarch.struct_size = sizeof(retroarch) - 1u;
|
|
CHECK(chimera_gfx_retroarch_query_scaffold(&retroarch) ==
|
|
CHIMERA_GFX_STATUS_INVALID_ARGUMENT);
|
|
retroarch = (chimera_gfx_retroarch_adapter_info)
|
|
CHIMERA_GFX_RETROARCH_ADAPTER_INFO_INIT;
|
|
CHECK(chimera_gfx_retroarch_query_scaffold(&retroarch) ==
|
|
CHIMERA_GFX_STATUS_OK);
|
|
CHECK(retroarch.supports_rgui == 1u);
|
|
CHECK(retroarch.supports_hardware_contexts == 0u);
|
|
CHECK(retroarch.accepts_software_frames == 0u);
|
|
CHECK(chimera_gfx_sdl2_query_scaffold(NULL) ==
|
|
CHIMERA_GFX_STATUS_INVALID_ARGUMENT);
|
|
sdl2.struct_size = sizeof(sdl2) - 1u;
|
|
CHECK(chimera_gfx_sdl2_query_scaffold(&sdl2) ==
|
|
CHIMERA_GFX_STATUS_INVALID_ARGUMENT);
|
|
sdl2 = (chimera_gfx_sdl2_adapter_info)CHIMERA_GFX_SDL2_ADAPTER_INFO_INIT;
|
|
CHECK(chimera_gfx_sdl2_query_scaffold(&sdl2) == CHIMERA_GFX_STATUS_OK);
|
|
CHECK(sdl2.accelerated_renderer_available == 0u);
|
|
CHECK(sdl2.software_fallback_required == 1u);
|
|
|
|
CHECK(chimera_gfx_create(&config, &context) == CHIMERA_GFX_STATUS_OK);
|
|
CHECK(chimera_gfx_retroarch_bind_scaffold(NULL, 0u) ==
|
|
CHIMERA_GFX_STATUS_INVALID_ARGUMENT);
|
|
CHECK(chimera_gfx_retroarch_bind_scaffold(context, 0u) ==
|
|
CHIMERA_GFX_STATUS_UNSUPPORTED);
|
|
CHECK(chimera_gfx_retroarch_bind_scaffold(context, 1u) ==
|
|
CHIMERA_GFX_STATUS_SAFETY_POLICY);
|
|
CHECK(chimera_gfx_sdl2_create_renderer_scaffold(NULL, 0u) ==
|
|
CHIMERA_GFX_STATUS_INVALID_ARGUMENT);
|
|
CHECK(chimera_gfx_sdl2_create_renderer_scaffold(context, 0u) ==
|
|
CHIMERA_GFX_STATUS_UNSUPPORTED);
|
|
CHECK(chimera_gfx_sdl2_create_renderer_scaffold(context, 1u) ==
|
|
CHIMERA_GFX_STATUS_SAFETY_POLICY);
|
|
CHECK(chimera_gfx_context_destroy(context) == CHIMERA_GFX_STATUS_OK);
|
|
return failures == 0 ? 0 : 1;
|
|
}
|