aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Weissflog <floooh@gmail.com>2025-04-21 17:02:29 +0200
committerAndre Weissflog <floooh@gmail.com>2025-04-21 17:02:29 +0200
commitff9c6d316b7fe622b3ff48ef5b548fd449c29ca3 (patch)
tree149e783c576745a8316ad0c2d404178392221368
parent95081e3101a367f18ccb03d9059a56ec1068a91a (diff)
sokol_gfx_imgui.h: add storage images to shader panel
-rw-r--r--util/sokol_gfx_imgui.h70
1 files changed, 48 insertions, 22 deletions
diff --git a/util/sokol_gfx_imgui.h b/util/sokol_gfx_imgui.h
index 375d19c1..6781bbf1 100644
--- a/util/sokol_gfx_imgui.h
+++ b/util/sokol_gfx_imgui.h
@@ -3555,6 +3555,12 @@ _SOKOL_PRIVATE void _sgimgui_draw_shader_panel(sgimgui_t* ctx, sg_shader shd) {
num_valid_storage_buffers++;
}
}
+ int num_valid_storage_images = 0;
+ for (int i = 0; i < SG_MAX_STORAGE_ATTACHMENTS; i++) {
+ if (shd_ui->desc.storage_images[i].stage != SG_SHADERSTAGE_NONE) {
+ num_valid_storage_images++;
+ }
+ }
if (num_valid_ubs > 0) {
if (igTreeNode("Uniform Blocks")) {
for (int i = 0; i < SG_MAX_UNIFORMBLOCK_BINDSLOTS; i++) {
@@ -3584,28 +3590,6 @@ _SOKOL_PRIVATE void _sgimgui_draw_shader_panel(sgimgui_t* ctx, sg_shader shd) {
igTreePop();
}
}
- if (num_valid_storage_buffers > 0) {
- if (igTreeNode("Storage Buffers")) {
- for (int i = 0; i < SG_MAX_STORAGEBUFFER_BINDSLOTS; i++) {
- const sg_shader_storage_buffer* sbuf = &shd_ui->desc.storage_buffers[i];
- if (sbuf->stage == SG_SHADERSTAGE_NONE) {
- continue;
- }
- igText("- slot: %d", i);
- igText(" stage: %s", _sgimgui_shaderstage_string(sbuf->stage));
- igText(" readonly: %s", _sgimgui_bool_string(sbuf->readonly));
- if (sbuf->readonly) {
- igText(" hlsl_register_t_n: %d", sbuf->hlsl_register_t_n);
- } else {
- igText(" hlsl_register_u_n: %d", sbuf->hlsl_register_u_n);
- }
- igText(" msl_buffer_n: %d", sbuf->msl_buffer_n);
- igText(" wgsl_group1_binding_n: %d", sbuf->wgsl_group1_binding_n);
- igText(" glsl_binding_n: %d", sbuf->glsl_binding_n);
- }
- igTreePop();
- }
- }
if (num_valid_images > 0) {
if (igTreeNode("Images")) {
for (int i = 0; i < SG_MAX_IMAGE_BINDSLOTS; i++) {
@@ -3658,6 +3642,48 @@ _SOKOL_PRIVATE void _sgimgui_draw_shader_panel(sgimgui_t* ctx, sg_shader shd) {
igTreePop();
}
}
+ if (num_valid_storage_buffers > 0) {
+ if (igTreeNode("Storage Buffers")) {
+ for (int i = 0; i < SG_MAX_STORAGEBUFFER_BINDSLOTS; i++) {
+ const sg_shader_storage_buffer* sbuf = &shd_ui->desc.storage_buffers[i];
+ if (sbuf->stage == SG_SHADERSTAGE_NONE) {
+ continue;
+ }
+ igText("- slot: %d", i);
+ igText(" stage: %s", _sgimgui_shaderstage_string(sbuf->stage));
+ igText(" readonly: %s", _sgimgui_bool_string(sbuf->readonly));
+ if (sbuf->readonly) {
+ igText(" hlsl_register_t_n: %d", sbuf->hlsl_register_t_n);
+ } else {
+ igText(" hlsl_register_u_n: %d", sbuf->hlsl_register_u_n);
+ }
+ igText(" msl_buffer_n: %d", sbuf->msl_buffer_n);
+ igText(" wgsl_group1_binding_n: %d", sbuf->wgsl_group1_binding_n);
+ igText(" glsl_binding_n: %d", sbuf->glsl_binding_n);
+ }
+ igTreePop();
+ }
+ }
+ if (num_valid_storage_images > 0) {
+ if (igTreeNode("Storage Images")) {
+ for (int i = 0; i < SG_MAX_STORAGE_ATTACHMENTS; i++) {
+ const sg_shader_storage_image* simg = &shd_ui->desc.storage_images[i];
+ if (simg->stage == SG_SHADERSTAGE_NONE) {
+ continue;
+ }
+ igText("- slot: %d", i);
+ igText(" stage: %s", _sgimgui_shaderstage_string(simg->stage));
+ igText(" image_type: %s", _sgimgui_imagetype_string(simg->image_type));
+ igText(" access_format: %s", _sgimgui_pixelformat_string(simg->access_format));
+ igText(" writeonly: %s", _sgimgui_bool_string(simg->writeonly));
+ igText(" hlsl_register_u_n: %d", simg->hlsl_register_u_n);
+ igText(" msl_texture_n: %d", simg->msl_texture_n);
+ igText(" wgsl_group2_binding_n: %d", simg->wgsl_group2_binding_n);
+ igText(" glsl_binding_n: %d", simg->glsl_binding_n);
+ }
+ igTreePop();
+ }
+ }
_sgimgui_draw_shader_func("Vertex Function", &shd_ui->desc.vertex_func);
_sgimgui_draw_shader_func("Fragment Function", &shd_ui->desc.fragment_func);
_sgimgui_draw_shader_func("Compute Function", &shd_ui->desc.compute_func);