Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down
5 changes: 5 additions & 0 deletions src/common/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,22 +1,27 @@
# 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()
set(slang "metal_macos")
endif()
else()
add_definitions(-DSOKOL_GLES3)
set(SOKOL_GFX_BACKEND_DEFINE "SOKOL_GLES3" PARENT_SCOPE)
set(slang "glsl300es")
endif()

Expand Down
24 changes: 24 additions & 0 deletions src/x65.c
Original file line number Diff line number Diff line change
Expand Up @@ -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__,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have LOG_INFO macro in src/log.h wrapping this.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done — switched to LOG_INFO in cd0e839.

"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,
Expand Down Expand Up @@ -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,
Expand All @@ -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,
Expand Down
Loading