aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Weissflog <floooh@gmail.com>2025-07-08 19:24:02 +0200
committerAndre Weissflog <floooh@gmail.com>2025-07-08 19:24:02 +0200
commit30010fb2904a2fb0f9922095b02ca23f771c2d7d (patch)
treebdb0192a2fe2e8fe85cbce0e9a544acb1b236959
parentd3b7ad7f2fd8c9732d5e3ee9f5b8671b03dc6c9c (diff)
sokol_debugtext.h: port to texture views
-rw-r--r--util/sokol_debugtext.h32
1 files changed, 20 insertions, 12 deletions
diff --git a/util/sokol_debugtext.h b/util/sokol_debugtext.h
index 826cf675..14dba972 100644
--- a/util/sokol_debugtext.h
+++ b/util/sokol_debugtext.h
@@ -3955,6 +3955,7 @@ typedef struct {
uint32_t init_cookie;
sdtx_desc_t desc;
sg_image font_img;
+ sg_view font_view;
sg_sampler font_smp;
sg_shader shader;
uint32_t fmt_buf_size;
@@ -4365,21 +4366,21 @@ static void _sdtx_setup_common(void) {
shd_desc.attrs[1].hlsl_sem_index = 1;
shd_desc.attrs[2].hlsl_sem_name = "TEXCOORD";
shd_desc.attrs[2].hlsl_sem_index = 2;
- shd_desc.images[0].stage = SG_SHADERSTAGE_FRAGMENT;
- shd_desc.images[0].image_type = SG_IMAGETYPE_2D;
- shd_desc.images[0].sample_type = SG_IMAGESAMPLETYPE_FLOAT;
- shd_desc.images[0].hlsl_register_t_n = 0;
- shd_desc.images[0].msl_texture_n = 0;
- shd_desc.images[0].wgsl_group1_binding_n = 64;
+ shd_desc.textures[0].stage = SG_SHADERSTAGE_FRAGMENT;
+ shd_desc.textures[0].image_type = SG_IMAGETYPE_2D;
+ shd_desc.textures[0].sample_type = SG_IMAGESAMPLETYPE_FLOAT;
+ shd_desc.textures[0].hlsl_register_t_n = 0;
+ shd_desc.textures[0].msl_texture_n = 0;
+ shd_desc.textures[0].wgsl_group1_binding_n = 64;
shd_desc.samplers[0].stage = SG_SHADERSTAGE_FRAGMENT;
shd_desc.samplers[0].sampler_type = SG_SAMPLERTYPE_FILTERING;
shd_desc.samplers[0].hlsl_register_s_n = 0;
shd_desc.samplers[0].msl_sampler_n = 0;
shd_desc.samplers[0].wgsl_group1_binding_n = 80;
- shd_desc.image_sampler_pairs[0].stage = SG_SHADERSTAGE_FRAGMENT;
- shd_desc.image_sampler_pairs[0].image_slot = 0;
- shd_desc.image_sampler_pairs[0].sampler_slot = 0;
- shd_desc.image_sampler_pairs[0].glsl_name = "tex_smp";
+ shd_desc.texture_sampler_pairs[0].stage = SG_SHADERSTAGE_FRAGMENT;
+ shd_desc.texture_sampler_pairs[0].texture_slot = 0;
+ shd_desc.texture_sampler_pairs[0].sampler_slot = 0;
+ shd_desc.texture_sampler_pairs[0].glsl_name = "tex_smp";
#if defined(SOKOL_GLCORE)
shd_desc.vertex_func.source = (const char*)_sdtx_vs_source_glsl410;
shd_desc.fragment_func.source = (const char*)_sdtx_fs_source_glsl410;
@@ -4425,7 +4426,7 @@ static void _sdtx_setup_common(void) {
}
}
- // create font texture and sampler
+ // create font image, texture view and sampler
sg_image_desc img_desc;
_sdtx_clear(&img_desc, sizeof(img_desc));
img_desc.width = 256 * 8;
@@ -4436,6 +4437,12 @@ static void _sdtx_setup_common(void) {
_sdtx.font_img = sg_make_image(&img_desc);
SOKOL_ASSERT(SG_INVALID_ID != _sdtx.font_img.id);
+ sg_view_desc view_desc;
+ _sdtx_clear(&view_desc, sizeof(view_desc));
+ view_desc.texture_binding.image = _sdtx.font_img;
+ _sdtx.font_view = sg_make_view(&view_desc);
+ SOKOL_ASSERT(SG_INVALID_ID != _sdtx.font_view.id);
+
sg_sampler_desc smp_desc;
_sdtx_clear(&smp_desc, sizeof(smp_desc));
smp_desc.min_filter = SG_FILTER_NEAREST;
@@ -4452,6 +4459,7 @@ static void _sdtx_setup_common(void) {
static void _sdtx_discard_common(void) {
sg_push_debug_group("sokol-debugtext");
sg_destroy_sampler(_sdtx.font_smp);
+ sg_destroy_view(_sdtx.font_view);
sg_destroy_image(_sdtx.font_img);
sg_destroy_shader(_sdtx.shader);
if (_sdtx.fmt_buf) {
@@ -4610,7 +4618,7 @@ SOKOL_API_IMPL void _sdtx_draw_layer(_sdtx_context_t* ctx, int layer_id) {
sg_bindings bindings;
_sdtx_clear(&bindings, sizeof(bindings));
bindings.vertex_buffers[0] = ctx->vbuf;
- bindings.images[0] = _sdtx.font_img;
+ bindings.textures[0] = _sdtx.font_view;
bindings.samplers[0] = _sdtx.font_smp;
sg_apply_bindings(&bindings);
for (int cmd_index = 0; cmd_index < ctx->commands.next; cmd_index++) {