gamut v0.0.7 ask for what you want
wjoe
invalid at example.com
Thu Aug 11 11:06:43 UTC 2022
On Tuesday, 9 August 2022 at 22:02:37 UTC, Guillaume Piolat wrote:
> On Monday, 8 August 2022 at 16:07:54 UTC, wjoe wrote:
>> your lib would not just be @nogc but @no_allocation.
>
> All image decoders in gamut need to malloc more than just for
> pixel data.
> Even STB allocates for format conversion, zlib buffers, 16-bit
> <-> 8-bit, etc. it's not just pixel data.
> Single allocation pessimizes the size a lot because since you
> haven't encoded yet, you need to prepare a buffer for a large
> worst-case.
I imagined you could allocate internal buffers for
encoding/decoding on the stack but your reply suggests otherwise.
However shouldn't a single function call back be enough?
Something like
``` D
void[] need_more_ram(size_t amount, void[] old_chunk, void* user)
{
MyAllocator* a = cast(MyAllocator*)user;
void[] result = a.alloc(amount); // MyAllocator would return an
empty slice if amount == 0
if (amount && chunk.length) result[0..chunk.length] = chunk; //
it is assumed that on re-allocation amount > chunk.length
a.free(chunk.ptr);
return result;
}
```
More information about the Digitalmars-d-announce
mailing list