@@ -3076,7 +3076,7 @@ typedef struct sg_bindings {
30763076 the buffer will bound as vertex buffer via sg_bindings.vertex_buffers[]
30773077 .index_buffer (default: false)
30783078 the buffer will bound as index buffer via sg_bindings.index_buffer
3079- .storage_buffer (default: false)
3079+ .storage_buffer_binding (default: false)
30803080 the buffer will bound as storage buffer via sg_bindings.storage_buffers[]
30813081 .immutable (default: true)
30823082 the buffer content will never be updated from the CPU side (but
@@ -3089,7 +3089,7 @@ typedef struct sg_bindings {
30893089typedef struct sg_buffer_usage {
30903090 bool vertex_buffer;
30913091 bool index_buffer;
3092- bool storage_buffer ;
3092+ bool storage_buffer_binding ;
30933093 bool immutable;
30943094 bool dynamic_update;
30953095 bool stream_update;
@@ -3169,15 +3169,15 @@ typedef struct sg_buffer_desc {
31693169
31703170 Describes how the image object is going to be used:
31713171
3172- .texture (default: true)
3173- the image object is used as a texture-binding in
3174- a render- or compute-pass
3175- .storage_image (default: false)
3172+ .storage_image_binding (default: false)
31763173 the image object is used as storage-image-binding in a
31773174 compute pass (to be written to by compute shaders)
3178- .attachment (default: false)
3179- the image object is used as color-, resolve- or depth-stencil-
3180- attachment in a render pass
3175+ .color_attachment (default: false)
3176+ the image object is used as a color-attachemnt in a render pass
3177+ .resolve_attachment (default: false)
3178+ the image object is used as a resolve-attachment in a render pass
3179+ .depth_stencil_attachment (default: false)
3180+ the image object is used as a depth-stencil-attachment in a render pass
31813181 .immutable (default: true)
31823182 the image content cannot be updated from the CPU side
31833183 (but may be updated by the GPU in a render- or compute-pass)
@@ -3189,7 +3189,10 @@ typedef struct sg_buffer_desc {
31893189 Note that the usage as texture binding is implicit and always allowed.
31903190*/
31913191typedef struct sg_image_usage {
3192- bool attachment;
3192+ bool storage_image_binding;
3193+ bool color_attachment;
3194+ bool resolve_attachment;
3195+ bool depth_stencil_attachment;
31933196 bool storage_image;
31943197 bool immutable;
31953198 bool dynamic_update;
@@ -4252,20 +4255,20 @@ typedef struct sg_frame_stats {
42524255 _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDATA_DATA_SIZE, "sg_image_data: data size doesn't match expected surface size") \
42534256 _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_CANARY, "sg_image_desc not initialized") \
42544257 _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_IMMUTABLE_DYNAMIC_STREAM, "sg_image_desc.usage: only one of .immutable, .dynamic_update, .stream_update can be true") \
4255- _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_ATTACHMENT_VS_STORAGE_IMAGE, "sg_image_desc.usage: only one of .attachment or .storage_image can be true") \
42564258 _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_WIDTH, "sg_image_desc.width must be > 0") \
42574259 _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_HEIGHT, "sg_image_desc.height must be > 0") \
42584260 _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_NONRT_PIXELFORMAT, "invalid pixel format for non-render-target image") \
42594261 _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_MSAA_BUT_NO_ATTACHMENT, "non-attachment images cannot be multisampled") \
42604262 _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_DEPTH_3D_IMAGE, "3D images cannot have a depth/stencil image format") \
42614263 _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_ATTACHMENT_EXPECT_IMMUTABLE, "render/storage attachment images must be sg_image_usage.immutable") \
42624264 _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_ATTACHMENT_EXPECT_NO_DATA, "render/storage attachment images cannot be initialized with data") \
4263- _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_RENDERATTACHMENT_NO_MSAA_SUPPORT, "multisampling not supported for this pixel format") \
4264- _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_RENDERATTACHMENT_MSAA_NUM_MIPMAPS, "multisample images must have num_mipmaps == 1") \
4265- _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_RENDERATTACHMENT_MSAA_3D_IMAGE, "3D images cannot have a sample_count > 1") \
4266- _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_RENDERATTACHMENT_MSAA_CUBE_IMAGE, "cube images cannot have sample_count > 1") \
4267- _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_RENDERATTACHMENT_MSAA_ARRAY_IMAGE, "array images cannot have sample_count > 1") \
4268- _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_RENDERATTACHMENT_PIXELFORMAT, "invalid pixel format for render attachment image") \
4265+ _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_ATTACHMENT_PIXELFORMAT, "invalid pixel format for render attachment image") \
4266+ _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_ATTACHMENT_RESOLVE_EXPECT_NO_MSAA, "resolve attachment images cannot be multisampled") \
4267+ _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_ATTACHMENT_NO_MSAA_SUPPORT, "multisampling not supported for this pixel format") \
4268+ _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_ATTACHMENT_MSAA_NUM_MIPMAPS, "multisample images must have num_mipmaps == 1") \
4269+ _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_ATTACHMENT_MSAA_3D_IMAGE, "3D images cannot have a sample_count > 1") \
4270+ _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_ATTACHMENT_MSAA_CUBE_IMAGE, "cube images cannot have sample_count > 1") \
4271+ _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_ATTACHMENT_MSAA_ARRAY_IMAGE, "array images cannot have sample_count > 1") \
42694272 _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_STORAGEIMAGE_PIXELFORMAT, "invalid pixel format for storage image") \
42704273 _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_STORAGEIMAGE_EXPECT_NO_MSAA, "storage images cannot be multisampled") \
42714274 _SG_LOGITEM_XMACRO(VALIDATE_IMAGEDESC_INJECTED_NO_DATA, "images with injected textures cannot be initialized with data") \
@@ -14507,16 +14510,19 @@ _SOKOL_PRIVATE bool _sg_mtl_init_texdesc(MTLTextureDescriptor* mtl_desc, _sg_ima
1450714510 }
1450814511 mtl_desc.sampleCount = (NSUInteger)img->cmn.sample_count;
1450914512
14513+ const sg_image_usage* usg = &img->cmn.usage;
14514+ const bool any_attachment = usg->color_attachment || usg->resolve_attachment || usg->depth_stencil_attachment;
1451014515 MTLTextureUsage mtl_tex_usage = MTLTextureUsageShaderRead;
14511- if (img->cmn.usage.attachment ) {
14516+ if (any_attachment ) {
1451214517 mtl_tex_usage |= MTLTextureUsageRenderTarget;
14513- } else if (img->cmn.usage.storage_image) {
14518+ }
14519+ if (img->cmn.usage.storage_image_binding) {
1451414520 mtl_tex_usage |= MTLTextureUsageShaderWrite;
1451514521 }
1451614522 mtl_desc.usage = mtl_tex_usage;
1451714523
1451814524 MTLResourceOptions mtl_res_options = 0;
14519- if (img->cmn.usage.attachment || img->cmn.usage.storage_image ) {
14525+ if (any_attachment || img->cmn.usage.storage_image_binding ) {
1452014526 mtl_res_options |= MTLResourceStorageModePrivate;
1452114527 } else {
1452214528 mtl_res_options |= _sg_mtl_resource_options_storage_mode_managed_or_shared();
@@ -14525,7 +14531,6 @@ _SOKOL_PRIVATE bool _sg_mtl_init_texdesc(MTLTextureDescriptor* mtl_desc, _sg_ima
1452514531 }
1452614532 }
1452714533 mtl_desc.resourceOptions = mtl_res_options;
14528-
1452914534 return true;
1453014535}
1453114536
@@ -18466,7 +18471,7 @@ _SOKOL_PRIVATE bool _sg_validate_buffer_desc(const sg_buffer_desc* desc) {
1846618471 _SG_VALIDATE(desc->size > 0, VALIDATE_BUFFERDESC_EXPECT_NONZERO_SIZE);
1846718472 _SG_VALIDATE(_sg_one(desc->usage.immutable, desc->usage.dynamic_update, desc->usage.stream_update), VALIDATE_BUFFERDESC_IMMUTABLE_DYNAMIC_STREAM);
1846818473 if (_sg.features.separate_buffer_types) {
18469- _SG_VALIDATE(_sg_one(desc->usage.vertex_buffer, desc->usage.index_buffer, desc->usage.storage_buffer ), VALIDATE_BUFFERDESC_SEPARATE_BUFFER_TYPES);
18474+ _SG_VALIDATE(_sg_one(desc->usage.vertex_buffer, desc->usage.index_buffer, desc->usage.storage_buffer_binding ), VALIDATE_BUFFERDESC_SEPARATE_BUFFER_TYPES);
1847018475 }
1847118476 bool injected = (0 != desc->gl_buffers[0]) ||
1847218477 (0 != desc->mtl_buffers[0]) ||
@@ -18476,14 +18481,14 @@ _SOKOL_PRIVATE bool _sg_validate_buffer_desc(const sg_buffer_desc* desc) {
1847618481 if (desc->data.ptr) {
1847718482 _SG_VALIDATE(desc->size == desc->data.size, VALIDATE_BUFFERDESC_EXPECT_MATCHING_DATA_SIZE);
1847818483 } else {
18479- _SG_VALIDATE(desc->usage.storage_buffer , VALIDATE_BUFFERDESC_EXPECT_DATA);
18484+ _SG_VALIDATE(desc->usage.storage_buffer_binding , VALIDATE_BUFFERDESC_EXPECT_DATA);
1848018485 _SG_VALIDATE(desc->data.size == 0, VALIDATE_BUFFERDESC_EXPECT_ZERO_DATA_SIZE);
1848118486 }
1848218487 } else {
1848318488 _SG_VALIDATE(0 == desc->data.ptr, VALIDATE_BUFFERDESC_EXPECT_NO_DATA);
1848418489 _SG_VALIDATE(desc->data.size == 0, VALIDATE_BUFFERDESC_EXPECT_ZERO_DATA_SIZE);
1848518490 }
18486- if (desc->usage.storage_buffer ) {
18491+ if (desc->usage.storage_buffer_binding ) {
1848718492 _SG_VALIDATE(_sg.features.compute, VALIDATE_BUFFERDESC_STORAGEBUFFER_SUPPORTED);
1848818493 _SG_VALIDATE(_sg_multiple_u64(desc->size, 4), VALIDATE_BUFFERDESC_STORAGEBUFFER_SIZE_MULTIPLE_4);
1848918494 }
@@ -18524,39 +18529,40 @@ _SOKOL_PRIVATE bool _sg_validate_image_desc(const sg_image_desc* desc) {
1852418529 if (_sg.desc.disable_validation) {
1852518530 return true;
1852618531 }
18532+ const sg_image_usage* usg = &desc->usage;
18533+ const bool any_attachment = usg->color_attachment || usg->resolve_attachment || usg->depth_stencil_attachment;
1852718534 SOKOL_ASSERT(desc);
1852818535 _sg_validate_begin();
1852918536 _SG_VALIDATE(desc->_start_canary == 0, VALIDATE_IMAGEDESC_CANARY);
1853018537 _SG_VALIDATE(desc->_end_canary == 0, VALIDATE_IMAGEDESC_CANARY);
18531- _SG_VALIDATE(_sg_one(desc->usage.immutable, desc->usage.dynamic_update, desc->usage.stream_update), VALIDATE_IMAGEDESC_IMMUTABLE_DYNAMIC_STREAM);
18532- if (desc->usage.attachment || desc->usage.storage_image) {
18533- _SG_VALIDATE(_sg_one(desc->usage.attachment, desc->usage.storage_image, false), VALIDATE_IMAGEDESC_ATTACHMENT_VS_STORAGE_IMAGE);
18534- }
18538+ _SG_VALIDATE(_sg_one(usg->immutable, usg->dynamic_update, usg->stream_update), VALIDATE_IMAGEDESC_IMMUTABLE_DYNAMIC_STREAM);
1853518539 _SG_VALIDATE(desc->width > 0, VALIDATE_IMAGEDESC_WIDTH);
1853618540 _SG_VALIDATE(desc->height > 0, VALIDATE_IMAGEDESC_HEIGHT);
1853718541 const sg_pixel_format fmt = desc->pixel_format;
18538- const sg_image_usage* usage = &desc->usage;
1853918542 const bool injected = (0 != desc->gl_textures[0]) ||
1854018543 (0 != desc->mtl_textures[0]) ||
1854118544 (0 != desc->d3d11_texture) ||
1854218545 (0 != desc->wgpu_texture);
1854318546 if (_sg_is_depth_or_depth_stencil_format(fmt)) {
1854418547 _SG_VALIDATE(desc->type != SG_IMAGETYPE_3D, VALIDATE_IMAGEDESC_DEPTH_3D_IMAGE);
1854518548 }
18546- if (usage->attachment || usage->storage_image ) {
18549+ if (any_attachment || usg->storage_image_binding ) {
1854718550 SOKOL_ASSERT(((int)fmt >= 0) && ((int)fmt < _SG_PIXELFORMAT_NUM));
18548- _SG_VALIDATE(usage ->immutable, VALIDATE_IMAGEDESC_ATTACHMENT_EXPECT_IMMUTABLE);
18551+ _SG_VALIDATE(usg ->immutable, VALIDATE_IMAGEDESC_ATTACHMENT_EXPECT_IMMUTABLE);
1854918552 _SG_VALIDATE(desc->data.subimage[0][0].ptr==0, VALIDATE_IMAGEDESC_ATTACHMENT_EXPECT_NO_DATA);
18550- if (usage->attachment) {
18551- _SG_VALIDATE(_sg.formats[fmt].render, VALIDATE_IMAGEDESC_RENDERATTACHMENT_PIXELFORMAT);
18553+ if (any_attachment) {
18554+ _SG_VALIDATE(_sg.formats[fmt].render, VALIDATE_IMAGEDESC_ATTACHMENT_PIXELFORMAT);
18555+ if (usg->resolve_attachment) {
18556+ _SG_VALIDATE(desc->sample_count == 1, VALIDATE_IMAGEDESC_ATTACHMENT_RESOLVE_EXPECT_NO_MSAA);
18557+ }
1855218558 if (desc->sample_count > 1) {
18553- _SG_VALIDATE(_sg.formats[fmt].msaa, VALIDATE_IMAGEDESC_RENDERATTACHMENT_NO_MSAA_SUPPORT );
18554- _SG_VALIDATE(desc->num_mipmaps == 1, VALIDATE_IMAGEDESC_RENDERATTACHMENT_MSAA_NUM_MIPMAPS );
18555- _SG_VALIDATE(desc->type != SG_IMAGETYPE_ARRAY, VALIDATE_IMAGEDESC_RENDERATTACHMENT_MSAA_ARRAY_IMAGE );
18556- _SG_VALIDATE(desc->type != SG_IMAGETYPE_3D, VALIDATE_IMAGEDESC_RENDERATTACHMENT_MSAA_3D_IMAGE );
18557- _SG_VALIDATE(desc->type != SG_IMAGETYPE_CUBE, VALIDATE_IMAGEDESC_RENDERATTACHMENT_MSAA_CUBE_IMAGE );
18559+ _SG_VALIDATE(_sg.formats[fmt].msaa, VALIDATE_IMAGEDESC_ATTACHMENT_NO_MSAA_SUPPORT );
18560+ _SG_VALIDATE(desc->num_mipmaps == 1, VALIDATE_IMAGEDESC_ATTACHMENT_MSAA_NUM_MIPMAPS );
18561+ _SG_VALIDATE(desc->type != SG_IMAGETYPE_ARRAY, VALIDATE_IMAGEDESC_ATTACHMENT_MSAA_ARRAY_IMAGE );
18562+ _SG_VALIDATE(desc->type != SG_IMAGETYPE_3D, VALIDATE_IMAGEDESC_ATTACHMENT_MSAA_3D_IMAGE );
18563+ _SG_VALIDATE(desc->type != SG_IMAGETYPE_CUBE, VALIDATE_IMAGEDESC_ATTACHMENT_MSAA_CUBE_IMAGE );
1855818564 }
18559- } else if (usage ->storage_image) {
18565+ } else if (usg ->storage_image) {
1856018566 _SG_VALIDATE(_sg_is_valid_storage_image_format(fmt), VALIDATE_IMAGEDESC_STORAGEIMAGE_PIXELFORMAT);
1856118567 // D3D11 doesn't allow multisampled UAVs (see: https://github.com/gpuweb/gpuweb/issues/513)
1856218568 _SG_VALIDATE(desc->sample_count == 1, VALIDATE_IMAGEDESC_STORAGEIMAGE_EXPECT_NO_MSAA);
@@ -18567,9 +18573,9 @@ _SOKOL_PRIVATE bool _sg_validate_image_desc(const sg_image_desc* desc) {
1856718573 _SG_VALIDATE(valid_nonrt_fmt, VALIDATE_IMAGEDESC_NONRT_PIXELFORMAT);
1856818574 const bool is_compressed = _sg_is_compressed_pixel_format(desc->pixel_format);
1856918575 if (is_compressed) {
18570- _SG_VALIDATE(usage ->immutable, VALIDATE_IMAGEDESC_COMPRESSED_IMMUTABLE);
18576+ _SG_VALIDATE(usg ->immutable, VALIDATE_IMAGEDESC_COMPRESSED_IMMUTABLE);
1857118577 }
18572- if (!injected && usage ->immutable) {
18578+ if (!injected && usg ->immutable) {
1857318579 // image desc must have valid data
1857418580 _sg_validate_image_data(&desc->data,
1857518581 desc->pixel_format,
@@ -18587,7 +18593,7 @@ _SOKOL_PRIVATE bool _sg_validate_image_desc(const sg_image_desc* desc) {
1858718593 if (injected) {
1858818594 _SG_VALIDATE(no_data && no_size, VALIDATE_IMAGEDESC_INJECTED_NO_DATA);
1858918595 }
18590- if (!usage ->immutable) {
18596+ if (!usg ->immutable) {
1859118597 _SG_VALIDATE(no_data && no_size, VALIDATE_IMAGEDESC_DYNAMIC_NO_DATA);
1859218598 }
1859318599 }
@@ -19119,29 +19125,29 @@ _SOKOL_PRIVATE bool _sg_validate_view_desc(const sg_view_desc* desc) {
1911919125 switch (view_type) {
1912019126 case SG_VIEWTYPE_STORAGEBUFFER:
1912119127 SOKOL_ASSERT(buf);
19122- _SG_VALIDATE(buf->cmn.usage.storage_buffer , VALIDATE_VIEWDESC_STORAGEBUFFER_USAGE);
19128+ _SG_VALIDATE(buf->cmn.usage.storage_buffer_binding , VALIDATE_VIEWDESC_STORAGEBUFFER_USAGE);
1912319129 break;
1912419130 case SG_VIEWTYPE_STORAGEIMAGE:
1912519131 SOKOL_ASSERT(img);
19126- _SG_VALIDATE(img->cmn.usage.storage_image , VALIDATE_VIEWDESC_STORAGEIMAGE_USAGE);
19132+ _SG_VALIDATE(img->cmn.usage.storage_image_binding , VALIDATE_VIEWDESC_STORAGEIMAGE_USAGE);
1912719133 _SG_VALIDATE(_sg_is_valid_storage_image_format(img->cmn.pixel_format), VALIDATE_VIEWDESC_STORAGEIMAGE_PIXELFORMAT);
1912819134 break;
1912919135 case SG_VIEWTYPE_TEXTURE:
1913019136 // nothing to validate?
1913119137 break;
1913219138 case SG_VIEWTYPE_COLORATTACHMENT:
1913319139 SOKOL_ASSERT(img);
19134- _SG_VALIDATE(img->cmn.usage.attachment , VALIDATE_VIEWDESC_COLORATTACHMENT_USAGE);
19140+ _SG_VALIDATE(img->cmn.usage.color_attachment , VALIDATE_VIEWDESC_COLORATTACHMENT_USAGE);
1913519141 _SG_VALIDATE(_sg_is_valid_attachment_color_format(img->cmn.pixel_format), VALIDATE_VIEWDESC_COLORATTACHMENT_PIXELFORMAT);
1913619142 break;
1913719143 case SG_VIEWTYPE_RESOLVEATTACHMENT:
1913819144 SOKOL_ASSERT(img);
19139- _SG_VALIDATE(img->cmn.usage.attachment , VALIDATE_VIEWDESC_RESOLVEATTACHMENT_USAGE);
19145+ _SG_VALIDATE(img->cmn.usage.resolve_attachment , VALIDATE_VIEWDESC_RESOLVEATTACHMENT_USAGE);
1914019146 _SG_VALIDATE(img->cmn.sample_count == 1, VALIDATE_VIEWDESC_RESOLVEATTACHMENT_SAMPLECOUNT);
1914119147 break;
1914219148 case SG_VIEWTYPE_DEPTHSTENCILATTACHMENT:
1914319149 SOKOL_ASSERT(img);
19144- _SG_VALIDATE(img->cmn.usage.attachment , VALIDATE_VIEWDESC_DEPTHSTENCILATTACHMENT_USAGE);
19150+ _SG_VALIDATE(img->cmn.usage.depth_stencil_attachment , VALIDATE_VIEWDESC_DEPTHSTENCILATTACHMENT_USAGE);
1914519151 _SG_VALIDATE(_sg_is_valid_attachment_depth_format(img->cmn.pixel_format), VALIDATE_VIEWDESC_DEPTHSTENCILATTACHMENT_PIXELFORMAT);
1914619152 break;
1914719153 case SG_VIEWTYPE_INVALID:
@@ -19847,7 +19853,7 @@ _SOKOL_PRIVATE bool _sg_validate_update_image(const _sg_image_t* img, const sg_i
1984719853// >>resources
1984819854_SOKOL_PRIVATE sg_buffer_usage _sg_buffer_usage_defaults(const sg_buffer_usage* usg) {
1984919855 sg_buffer_usage def = *usg;
19850- if (!(def.vertex_buffer || def.index_buffer || def.storage_buffer )) {
19856+ if (!(def.vertex_buffer || def.index_buffer || def.storage_buffer_binding )) {
1985119857 def.vertex_buffer = true;
1985219858 }
1985319859 if (!(def.immutable || def.stream_update || def.dynamic_update)) {
@@ -19880,9 +19886,12 @@ _SOKOL_PRIVATE sg_image_desc _sg_image_desc_defaults(const sg_image_desc* desc)
1988019886 def.usage = _sg_image_usage_defaults(&def.usage);
1988119887 def.num_slices = _sg_def(def.num_slices, 1);
1988219888 def.num_mipmaps = _sg_def(def.num_mipmaps, 1);
19883- if (def.usage.attachment ) {
19889+ if (def.usage.color_attachment || def.usage.resolve_attachment ) {
1988419890 def.pixel_format = _sg_def(def.pixel_format, _sg.desc.environment.defaults.color_format);
1988519891 def.sample_count = _sg_def(def.sample_count, _sg.desc.environment.defaults.sample_count);
19892+ } else if (def.usage.depth_stencil_attachment) {
19893+ def.pixel_format = _sg_def(def.pixel_format, _sg.desc.environment.defaults.depth_format);
19894+ def.sample_count = _sg_def(def.sample_count, _sg.desc.environment.defaults.sample_count);
1988619895 } else {
1988719896 def.pixel_format = _sg_def(def.pixel_format, SG_PIXELFORMAT_RGBA8);
1988819897 def.sample_count = _sg_def(def.sample_count, 1);
0 commit comments