From e7ea6f39b7f02c15e04f03233b206b9e55a5c4e2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Apr 2026 15:31:22 +0000 Subject: [PATCH 1/3] Initial plan From 8797fdddcb9df17f2f45f73c1f1fd2d81d1b3db0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Apr 2026 15:46:55 +0000 Subject: [PATCH 2/3] Fix OpenGL minimum version handling for compatibility with older hardware Agent-Logs-Url: https://github.com/X65/emu/sessions/7482445c-d7b5-4ffa-ad1d-a48d8ea8583a Co-authored-by: smokku <147687+smokku@users.noreply.github.com> --- CMakeLists.txt | 1 + src/common/CMakeLists.txt | 5 +++++ src/x65.c | 24 ++++++++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3256f12..12ea6f3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -62,6 +62,7 @@ target_link_libraries(emu SDL3::SDL3) target_compile_definitions(emu PUBLIC CHIPS_USE_UI) +target_compile_definitions(emu PRIVATE ${SOKOL_GFX_BACKEND_DEFINE}) if(CMAKE_SYSTEM_NAME STREQUAL "Linux") message(STATUS "Building for Linux") diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index 8a5e695..5a55fea 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -1,15 +1,19 @@ # select the sokol-gfx backend depending on platform if(CMAKE_SYSTEM_NAME STREQUAL "Emscripten") add_definitions(-DSOKOL_GLES3) + set(SOKOL_GFX_BACKEND_DEFINE "SOKOL_GLES3" PARENT_SCOPE) set(slang "glsl300es") elseif(FIPS_ANDROID) add_definitions(-DSOKOL_GLES3) + set(SOKOL_GFX_BACKEND_DEFINE "SOKOL_GLES3" PARENT_SCOPE) set(slang "glsl300es") elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows") add_definitions(-DSOKOL_GLCORE) + set(SOKOL_GFX_BACKEND_DEFINE "SOKOL_GLCORE" PARENT_SCOPE) set(slang "glsl410") elseif(FIPS_OSX) add_definitions(-DSOKOL_METAL) + set(SOKOL_GFX_BACKEND_DEFINE "SOKOL_METAL" PARENT_SCOPE) if (FIPS_IOS) set(slang "metal_ios") else() @@ -17,6 +21,7 @@ elseif(FIPS_OSX) endif() else() add_definitions(-DSOKOL_GLES3) + set(SOKOL_GFX_BACKEND_DEFINE "SOKOL_GLES3" PARENT_SCOPE) set(slang "glsl300es") endif() diff --git a/src/x65.c b/src/x65.c index 98d1fee..86c5d15 100644 --- a/src/x65.c +++ b/src/x65.c @@ -158,6 +158,13 @@ static void app_load_rom_labels(const char* rom_file) { } void app_init(void) { +#if defined(SOKOL_GLES3) || defined(SOKOL_GLCORE) + log_func(3, "app_init", __FILE__, __LINE__, + "OpenGL context: %s %d.%d", + sapp_gl_is_gles() ? "OpenGL ES" : "OpenGL", + sapp_gl_get_major_version(), + sapp_gl_get_minor_version()); +#endif saudio_setup(&(saudio_desc){ .sample_rate = SGU_CHIP_CLOCK, .num_channels = SGU_AUDIO_CHANNELS, @@ -838,6 +845,19 @@ sapp_desc sokol_main(int argc, char* argv[]) { const chips_display_info_t info = x65_display_info(0); const int default_width = info.screen.width + BORDER_LEFT + BORDER_RIGHT; const int default_height = info.screen.height + BORDER_TOP + BORDER_BOTTOM; + + // Use the minimum OpenGL/GLES version required by the compiled shaders to + // maximize compatibility with older hardware. + // - SOKOL_GLES3 shaders are compiled for glsl300es -> requires GLES 3.0 + // - SOKOL_GLCORE shaders are compiled for glsl410 -> requires GL 4.1 +#if defined(SOKOL_GLES3) + const int gl_major = 3, gl_minor = 0; +#elif defined(SOKOL_GLCORE) + const int gl_major = 4, gl_minor = 1; +#else + const int gl_major = 0, gl_minor = 0; // Metal / D3D11 / WebGPU: ignored +#endif + return (sapp_desc){ .init_cb = app_init, .frame_cb = app_frame, @@ -855,6 +875,10 @@ sapp_desc sokol_main(int argc, char* argv[]) { }, .enable_clipboard = true, .enable_dragndrop = true, + .gl = { + .major_version = gl_major, + .minor_version = gl_minor, + }, .html5 = { .bubble_mouse_events = true, .update_document_title = true, From cd0e839736b2724176705fea61438e3bf29209bc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 10 Apr 2026 15:56:14 +0000 Subject: [PATCH 3/3] Use LOG_INFO macro instead of calling log_func directly Agent-Logs-Url: https://github.com/X65/emu/sessions/0aa3d750-91b1-4e8e-842b-25cbb3466e47 Co-authored-by: smokku <147687+smokku@users.noreply.github.com> --- src/x65.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/x65.c b/src/x65.c index 86c5d15..6fda1b8 100644 --- a/src/x65.c +++ b/src/x65.c @@ -159,8 +159,7 @@ static void app_load_rom_labels(const char* rom_file) { void app_init(void) { #if defined(SOKOL_GLES3) || defined(SOKOL_GLCORE) - log_func(3, "app_init", __FILE__, __LINE__, - "OpenGL context: %s %d.%d", + LOG_INFO("OpenGL context: %s %d.%d", sapp_gl_is_gles() ? "OpenGL ES" : "OpenGL", sapp_gl_get_major_version(), sapp_gl_get_minor_version());