gg: fix cached images loaded from memory

pull/7300/head
Alexander Medvednikov 2020-12-12 23:30:31 +01:00
parent fb9db11a00
commit 576396cf20
2 changed files with 9 additions and 13 deletions

View File

@ -9490,7 +9490,7 @@ _SOKOL_PRIVATE void _sg_mtl_copy_image_content(const _sg_image_t* img, __unsafe_
for (int slice_index = 0; slice_index < num_slices; slice_index++) { for (int slice_index = 0; slice_index < num_slices; slice_index++) {
const int mtl_slice_index = (img->cmn.type == SG_IMAGETYPE_CUBE) ? face_index : slice_index; const int mtl_slice_index = (img->cmn.type == SG_IMAGETYPE_CUBE) ? face_index : slice_index;
const int slice_offset = slice_index * bytes_per_slice; const int slice_offset = slice_index * bytes_per_slice;
SOKOL_ASSERT((slice_offset + bytes_per_slice) <= (int)content->subimage[face_index][mip_index].size); /// SOKOL_ASSERT((slice_offset + bytes_per_slice) <= (int)content->subimage[face_index][mip_index].size);
[mtl_tex replaceRegion:region [mtl_tex replaceRegion:region
mipmapLevel:mip_index mipmapLevel:mip_index
slice:mtl_slice_index slice:mtl_slice_index

View File

@ -31,9 +31,7 @@ pub fn (mut ctx Context) create_image(file string) Image {
if !C.sg_isvalid() { if !C.sg_isvalid() {
// Sokol is not initialized yet, add stbi object to a queue/cache // Sokol is not initialized yet, add stbi object to a queue/cache
// ctx.image_queue << file // ctx.image_queue << file
stb_img := stbi.load(file) or { stb_img := stbi.load(file) or { return Image{} }
return Image{}
}
img := Image{ img := Image{
width: stb_img.width width: stb_img.width
height: stb_img.height height: stb_img.height
@ -59,9 +57,7 @@ fn create_image(file string) Image {
println('gg.create_image(): file not found: $file') println('gg.create_image(): file not found: $file')
return Image{} // none return Image{} // none
} }
stb_img := stbi.load(file) or { stb_img := stbi.load(file) or { return Image{} }
return Image{}
}
mut img := Image{ mut img := Image{
width: stb_img.width width: stb_img.width
height: stb_img.height height: stb_img.height
@ -75,10 +71,8 @@ fn create_image(file string) Image {
return img return img
} }
pub fn create_image_from_memory(buf byteptr, bufsize int) Image { pub fn (mut ctx Context) create_image_from_memory(buf byteptr, bufsize int) Image {
stb_img := stbi.load_from_memory(buf, bufsize) or { stb_img := stbi.load_from_memory(buf, bufsize) or { return Image{} }
return Image{}
}
mut img := Image{ mut img := Image{
width: stb_img.width width: stb_img.width
height: stb_img.height height: stb_img.height
@ -86,12 +80,14 @@ pub fn create_image_from_memory(buf byteptr, bufsize int) Image {
ok: stb_img.ok ok: stb_img.ok
data: stb_img.data data: stb_img.data
ext: stb_img.ext ext: stb_img.ext
id: ctx.image_cache.len
} }
ctx.image_cache << img
return img return img
} }
pub fn create_image_from_byte_array(b []byte) Image { pub fn (mut ctx Context) create_image_from_byte_array(b []byte) Image {
return create_image_from_memory(b.data, b.len) return ctx.create_image_from_memory(b.data, b.len)
} }
pub fn (mut img Image) init_sokol_image() &Image { pub fn (mut img Image) init_sokol_image() &Image {