Skip to content
Draft
Show file tree
Hide file tree
Changes from all 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
561 changes: 555 additions & 6 deletions sokol_app.h

Large diffs are not rendered by default.

5,566 changes: 5,453 additions & 113 deletions sokol_gfx.h

Large diffs are not rendered by default.

11 changes: 11 additions & 0 deletions sokol_glue.h
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,11 @@ SOKOL_API_IMPL sg_environment sglue_environment(void) {
res.metal.device = env.metal.device;
res.d3d11.device = env.d3d11.device;
res.d3d11.device_context = env.d3d11.device_context;
res.d3d12.device = env.d3d12.device;
res.d3d12.command_queue = env.d3d12.command_queue;
res.d3d12.fence = env.d3d12.fence;
res.d3d12.fence_event = env.d3d12.fence_event;
res.d3d12.fence_value = env.d3d12.fence_value;
res.wgpu.device = env.wgpu.device;
res.vulkan.instance = env.vulkan.instance;
res.vulkan.physical_device = env.vulkan.physical_device;
Expand All @@ -189,6 +194,12 @@ SOKOL_API_IMPL sg_swapchain sglue_swapchain(void) {
res.d3d11.render_view = sc.d3d11.render_view;
res.d3d11.resolve_view = sc.d3d11.resolve_view;
res.d3d11.depth_stencil_view = sc.d3d11.depth_stencil_view;
res.d3d12.render_target = sc.d3d12.render_target;
res.d3d12.render_view = sc.d3d12.render_view;
res.d3d12.resolve_target = sc.d3d12.resolve_target;
res.d3d12.resolve_view = sc.d3d12.resolve_view;
res.d3d12.depth_stencil = sc.d3d12.depth_stencil;
res.d3d12.depth_stencil_view = sc.d3d12.depth_stencil_view;
res.wgpu.render_view = sc.wgpu.render_view;
res.wgpu.resolve_view = sc.wgpu.resolve_view;
res.wgpu.depth_stencil_view = sc.wgpu.depth_stencil_view;
Expand Down
8 changes: 4 additions & 4 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 11)

# SOKOL_GLCORE, SOKOL_GLES3, SOKOL_D3D11, SOKOL_METAL, SOKOL_WGPU, SOKOL_DUMMY
# SOKOL_GLCORE, SOKOL_GLES3, SOKOL_D3D11, SOKOL_D3D12, SOKOL_METAL, SOKOL_WGPU, SOKOL_VULKAN, SOKOL_DUMMY
set(SOKOL_BACKEND "SOKOL_DUMMY_BACKEND" CACHE STRING "Select 3D backend API")
set_property(CACHE SOKOL_BACKEND PROPERTY STRINGS SOKOL_GLCORE SOKOL_METAL SOKOL_D3D11 SOKOL_VULKAN SOKOL_DUMMY_BACKEND)
set_property(CACHE SOKOL_BACKEND PROPERTY STRINGS SOKOL_GLCORE SOKOL_METAL SOKOL_D3D11 SOKOL_D3D12 SOKOL_VULKAN SOKOL_DUMMY_BACKEND)
option(SOKOL_FORCE_EGL "Force EGL with GLCORE backend" OFF)
option(USE_ARC "Enable/disable ARC" OFF)
option(USE_ANALYZER "Enable/disable clang analyzer" OFF)
Expand Down Expand Up @@ -63,8 +63,8 @@ else()
# FIXME: consider using clang-tidy via CMAKE_CXX_CLANG_TIDY: https://ortogonal.github.io/cmake-clang-tidy/
# with the default settings this spams the output with irrelevant C++ coding style warnings in 3rd party libs though
message(">> Configuring for static code analysis")
set(c_flags ${c_flags} --analyze -Xanalyzer -analyzer-opt-analyze-headers)
set(cxx_flags ${cxx_flags} --analyze -Xanalyzer -analyzer-opt-analyze-headers)
set(c_flags ${c_flags} --analyze -Xanalyzer -analyzer-opt-analyze-headers -Wno-unused-command-line-argument)
set(cxx_flags ${cxx_flags} --analyze -Xanalyzer -analyzer-opt-analyze-headers -Wno-unused-command-line-argument)
set(link_flags ${link_flags} --analyze -Wno-unused-command-line-argument)
endif()
endif()
Expand Down
36 changes: 36 additions & 0 deletions tests/CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -532,6 +532,28 @@
"CMAKE_C_COMPILER": "clang",
"CMAKE_CXX_COMPILER": "clang++"
}
},
{
"name": "win_d3d12",
"binaryDir": "build/win_d3d12",
"cacheVariables": {
"SOKOL_BACKEND": "SOKOL_D3D12"
}
},
{
"name": "win_d3d12_analyze",
"generator": "Ninja",
"binaryDir": "build/win_d3d12_analyze",
"cacheVariables": {
"SOKOL_BACKEND": "SOKOL_D3D12",
"CMAKE_BUILD_TYPE": "Debug",
"USE_ANALYZER": {
"type": "BOOL",
"value": "ON"
},
"CMAKE_C_COMPILER": "clang",
"CMAKE_CXX_COMPILER": "clang++"
}
}
],
"buildPresets": [
Expand Down Expand Up @@ -752,6 +774,20 @@
{
"name": "win_d3d11_analyze",
"configurePreset": "win_d3d11_analyze"
},
{
"name": "win_d3d12_debug",
"configurePreset": "win_d3d12",
"configuration": "Debug"
},
{
"name": "win_d3d12_release",
"configurePreset": "win_d3d12",
"configuration": "Release"
},
{
"name": "win_d3d12_analyze",
"configurePreset": "win_d3d12_analyze"
}
]
}
3 changes: 3 additions & 0 deletions tests/functional/force_dummy_backend.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@
#if defined(SOKOL_D3D11)
#undef SOKOL_D3D11
#endif
#if defined(SOKOL_D3D12)
#undef SOKOL_D3D12
#endif
#if defined(SOKOL_WGPU)
#undef SOKOL_WGPU
#endif
Expand Down
4 changes: 2 additions & 2 deletions util/sokol_debugtext.h
Original file line number Diff line number Diff line change
Expand Up @@ -3534,7 +3534,7 @@ static const uint8_t _sdtx_fs_source_metal_sim[441] = {
0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,
0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
};
#elif defined(SOKOL_D3D11)
#elif defined(SOKOL_D3D11) || defined(SOKOL_D3D12)
/*
static float4 gl_Position;
static float2 position;
Expand Down Expand Up @@ -4564,7 +4564,7 @@ static void _sdtx_setup_common(void) {
shd_desc.fragment_func.source = (const char*)_sdtx_fs_source_metal_sim;
break;
}
#elif defined(SOKOL_D3D11)
#elif defined(SOKOL_D3D11) || defined(SOKOL_D3D12)
shd_desc.vertex_func.bytecode = SG_RANGE(_sdtx_vs_bytecode_hlsl4);
shd_desc.fragment_func.bytecode = SG_RANGE(_sdtx_fs_bytecode_hlsl4);
#elif defined(SOKOL_WGPU)
Expand Down
4 changes: 2 additions & 2 deletions util/sokol_fontstash.h
Original file line number Diff line number Diff line change
Expand Up @@ -1589,7 +1589,7 @@ static const uint8_t _sfons_fs_source_metal_sim[464] = {
0x2a,0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,
0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
};
#elif defined(SOKOL_D3D11)
#elif defined(SOKOL_D3D11) || defined(SOKOL_D3D12)
/*
cbuffer vs_params : register(b0)
{
Expand Down Expand Up @@ -2312,7 +2312,7 @@ static int _sfons_render_create(void* user_ptr, int width, int height) {
shd_desc.fragment_func.source = (const char*)_sfons_fs_source_metal_sim;
break;
}
#elif defined(SOKOL_D3D11)
#elif defined(SOKOL_D3D11) || defined(SOKOL_D3D12)
shd_desc.vertex_func.bytecode = SG_RANGE(_sfons_vs_bytecode_hlsl4);
shd_desc.fragment_func.bytecode = SG_RANGE(_sfons_fs_bytecode_hlsl4);
#elif defined(SOKOL_WGPU)
Expand Down
4 changes: 2 additions & 2 deletions util/sokol_gl.h
Original file line number Diff line number Diff line change
Expand Up @@ -2285,7 +2285,7 @@ static const uint8_t _sgl_fs_source_metal_sim[439] = {
0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,
0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
};
#elif defined(SOKOL_D3D11)
#elif defined(SOKOL_D3D11) || defined(SOKOL_D3D12)
/*
cbuffer vs_params : register(b0)
{
Expand Down Expand Up @@ -4026,7 +4026,7 @@ static void _sgl_setup_common(void) {
shd_desc.fragment_func.source = (const char*)_sgl_fs_source_metal_sim;
break;
}
#elif defined(SOKOL_D3D11)
#elif defined(SOKOL_D3D11) || defined(SOKOL_D3D12)
shd_desc.vertex_func.bytecode = SG_RANGE(_sgl_vs_bytecode_hlsl4);
shd_desc.fragment_func.bytecode = SG_RANGE(_sgl_fs_bytecode_hlsl4);
#elif defined(SOKOL_WGPU)
Expand Down
4 changes: 2 additions & 2 deletions util/sokol_imgui.h
Original file line number Diff line number Diff line change
Expand Up @@ -1868,7 +1868,7 @@ static const uint8_t _simgui_fs_source_metal_sim[436] = {
0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,
0x7d,0x0a,0x0a,0x00,
};
#elif defined(SOKOL_D3D11)
#elif defined(SOKOL_D3D11) || defined(SOKOL_D3D12)
/*
cbuffer vs_params : register(b0)
{
Expand Down Expand Up @@ -2954,7 +2954,7 @@ SOKOL_API_IMPL void simgui_setup(const simgui_desc_t* desc) {
shd_desc.fragment_func.source = (const char*)_simgui_fs_source_metal_sim;
break;
}
#elif defined(SOKOL_D3D11)
#elif defined(SOKOL_D3D11) || defined(SOKOL_D3D12)
shd_desc.vertex_func.bytecode = SG_RANGE(_simgui_vs_bytecode_hlsl4);
shd_desc.fragment_func.bytecode = SG_RANGE(_simgui_fs_bytecode_hlsl4);
#elif defined(SOKOL_WGPU)
Expand Down
4 changes: 2 additions & 2 deletions util/sokol_nuklear.h
Original file line number Diff line number Diff line change
Expand Up @@ -1815,7 +1815,7 @@ static const uint8_t _snk_fs_source_metal_sim[436] = {
0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,
0x7d,0x0a,0x0a,0x00,
};
#elif defined(SOKOL_D3D11)
#elif defined(SOKOL_D3D11) || defined(SOKOL_D3D12)
/*
cbuffer vs_params : register(b0)
{
Expand Down Expand Up @@ -2845,7 +2845,7 @@ SOKOL_API_IMPL void snk_setup(const snk_desc_t* desc) {
fs_source = (const char*)_snk_fs_source_metal_sim;
break;
}
#elif defined(SOKOL_D3D11)
#elif defined(SOKOL_D3D11) || defined(SOKOL_D3D12)
vs_bytecode = SG_RANGE(_snk_vs_bytecode_hlsl4);
fs_bytecode = SG_RANGE(_snk_fs_bytecode_hlsl4);
#elif defined(SOKOL_WGPU)
Expand Down
4 changes: 2 additions & 2 deletions util/sokol_spine.h
Original file line number Diff line number Diff line change
Expand Up @@ -1653,7 +1653,7 @@ static const uint8_t _sspine_fs_source_glsl300es[399] = {
0x6f,0x72,0x2c,0x20,0x76,0x65,0x63,0x34,0x28,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,
0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78,0x29,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x00,
};
#elif defined(SOKOL_D3D11)
#elif defined(SOKOL_D3D11) || defined(SOKOL_D3D12)
/*
cbuffer vs_params : register(b0)
{
Expand Down Expand Up @@ -5441,7 +5441,7 @@ static void _sspine_init_shared(void) {
shd_desc.fragment_func.source = (const char*)_sspine_fs_source_metal_sim;
break;
}
#elif defined(SOKOL_D3D11)
#elif defined(SOKOL_D3D11) || defined(SOKOL_D3D12)
shd_desc.vertex_func.bytecode = SG_RANGE(_sspine_vs_bytecode_hlsl4);
shd_desc.fragment_func.bytecode = SG_RANGE(_sspine_fs_bytecode_hlsl4);
#elif defined(SOKOL_WGPU)
Expand Down
Loading