aboutsummaryrefslogtreecommitdiff
path: root/tests/functional/sokol_gfx_test.c
diff options
context:
space:
mode:
authorAndre Weissflog <floooh@gmail.com>2025-05-29 14:57:28 +0200
committerAndre Weissflog <floooh@gmail.com>2025-05-29 14:57:28 +0200
commit9bfe9f2e696d2a202306ae8267a16127b7506fef (patch)
treec8714d411e2dbe778d8356508af7c639248c557a /tests/functional/sokol_gfx_test.c
parentedbb47ae20fcd9468a721fc9f5bf570aef9104b6 (diff)
sokol_gfx.h: safe internal resource refs wip
Diffstat (limited to 'tests/functional/sokol_gfx_test.c')
-rw-r--r--tests/functional/sokol_gfx_test.c89
1 files changed, 89 insertions, 0 deletions
diff --git a/tests/functional/sokol_gfx_test.c b/tests/functional/sokol_gfx_test.c
index 82742b8d..4b8694d5 100644
--- a/tests/functional/sokol_gfx_test.c
+++ b/tests/functional/sokol_gfx_test.c
@@ -1341,6 +1341,95 @@ UTEST(sokol_gfx, attachments_resource_states) {
sg_shutdown();
}
+UTEST(sokol_gfx, buffer_uninit_count) {
+ setup(&(sg_desc){0});
+ const sg_buffer_desc desc = { .usage.stream_update = true, .size = 128 };
+ sg_buffer buf = sg_make_buffer(&desc);
+ T(sg_query_buffer_info(buf).slot.uninit_count == 0);
+ sg_uninit_buffer(buf);
+ T(sg_query_buffer_info(buf).slot.uninit_count == 1);
+ sg_init_buffer(buf, &desc);
+ T(sg_query_buffer_info(buf).slot.uninit_count == 1);
+ sg_uninit_buffer(buf);
+ T(sg_query_buffer_info(buf).slot.uninit_count == 2);
+ sg_dealloc_buffer(buf);
+ T(sg_query_buffer_info(buf).slot.uninit_count == 0);
+ sg_shutdown();
+}
+
+UTEST(sokol_gfx, image_uninit_count) {
+ setup(&(sg_desc){0});
+ const sg_image_desc desc = { .usage.render_attachment = true, .width = 128, .height = 128 };
+ sg_image img = sg_make_image(&desc);
+ T(sg_query_image_info(img).slot.uninit_count == 0);
+ sg_uninit_image(img);
+ T(sg_query_image_info(img).slot.uninit_count == 1);
+ sg_init_image(img, &desc);
+ T(sg_query_image_info(img).slot.uninit_count == 1);
+ sg_uninit_image(img);
+ T(sg_query_image_info(img).slot.uninit_count == 2);
+ sg_dealloc_image(img);
+ T(sg_query_image_info(img).slot.uninit_count == 0);
+ sg_shutdown();
+}
+
+UTEST(sokol_gfx, shader_uninit_count) {
+ setup(&(sg_desc){0});
+ const sg_shader_desc desc = {0};
+ sg_shader shd = sg_make_shader(&desc);
+ T(sg_query_shader_info(shd).slot.uninit_count == 0);
+ sg_uninit_shader(shd);
+ T(sg_query_shader_info(shd).slot.uninit_count == 1);
+ sg_init_shader(shd, &desc);
+ T(sg_query_shader_info(shd).slot.uninit_count == 1);
+ sg_uninit_shader(shd);
+ T(sg_query_shader_info(shd).slot.uninit_count == 2);
+ sg_dealloc_shader(shd);
+ T(sg_query_shader_info(shd).slot.uninit_count == 0);
+ sg_shutdown();
+}
+
+UTEST(sokol_gfx, pipeline_uninit_count) {
+ setup(&(sg_desc){0});
+ const sg_pipeline_desc desc = { .shader = sg_make_shader(&(sg_shader_desc){0}) };
+ sg_pipeline pip = sg_make_pipeline(&desc);
+ T(sg_query_pipeline_info(pip).slot.uninit_count == 0);
+ sg_uninit_pipeline(pip);
+ T(sg_query_pipeline_info(pip).slot.uninit_count == 1);
+ sg_init_pipeline(pip, &desc);
+ T(sg_query_pipeline_info(pip).slot.uninit_count == 1);
+ sg_uninit_pipeline(pip);
+ T(sg_query_pipeline_info(pip).slot.uninit_count == 2);
+ sg_dealloc_pipeline(pip);
+ T(sg_query_pipeline_info(pip).slot.uninit_count == 0);
+ sg_shutdown();
+}
+
+UTEST(sokol_gfx, atachments_uninit_count) {
+ setup(&(sg_desc){0});
+ const sg_image_desc img_desc = {
+ .usage.render_attachment = true,
+ .width = 128,
+ .height = 128,
+ };
+ const sg_attachments_desc desc = {
+ .colors = {
+ [0].image = sg_make_image(&img_desc),
+ }
+ };
+ sg_attachments atts = sg_make_attachments(&desc);
+ T(sg_query_attachments_info(atts).slot.uninit_count == 0);
+ sg_uninit_attachments(atts);
+ T(sg_query_attachments_info(atts).slot.uninit_count == 1);
+ sg_init_attachments(atts, &desc);
+ T(sg_query_attachments_info(atts).slot.uninit_count == 1);
+ sg_uninit_attachments(atts);
+ T(sg_query_attachments_info(atts).slot.uninit_count == 2);
+ sg_dealloc_attachments(atts);
+ T(sg_query_attachments_info(atts).slot.uninit_count == 0);
+ sg_shutdown();
+}
+
UTEST(sokol_gfx, query_buffer_will_overflow) {
setup(&(sg_desc){0});
sg_buffer buf = sg_make_buffer(&(sg_buffer_desc){