formatting

This commit is contained in:
jacob 2025-09-04 00:57:28 -05:00
parent b14ce157b8
commit 938f4e701c
9 changed files with 87 additions and 45 deletions

View File

@ -1,2 +0,0 @@
////////////////////////////////
//~ Includes

View File

@ -402,7 +402,7 @@ void ASE_Inflate(u8 *dst, u8 *encoded)
}
////////////////////////////////
//~ Error handling
//~ Error helpers
void ASE_PushError(Arena *arena, ASE_ErrorList *list, String msg_src)
{
@ -421,7 +421,7 @@ void ASE_PushError(Arena *arena, ASE_ErrorList *list, String msg_src)
}
////////////////////////////////
//~ Decode image
//~ Decode helpers
u32 ASE_BlendMulU8(u32 a, u32 b)
{
@ -482,6 +482,9 @@ void ASE_MakeDimensionsSquareish(ASE_Header *header, u32 *frames_x, u32 *frames_
}
}
////////////////////////////////
//~ Decode image
ASE_DecodedImage ASE_DecodeImage(Arena *arena, String encoded)
{
__prof;

View File

@ -226,16 +226,23 @@ u16 ASE_DecodeHuffDict(ASE_HuffDict *huffman, ASE_Bitbuff *bb);
void ASE_Inflate(u8 *dst, u8 *encoded);
////////////////////////////////
//~ Error handling operations
//~ Error helpers
//- Helpers
void ASE_PushError(Arena *arena, ASE_ErrorList *list, String msg_src);
////////////////////////////////
//~ Decode helpers
u32 ASE_BlendMulU8(u32 a, u32 b);
u32 ASE_Blend(u32 src, u32 dst, u8 opacity);
void ASE_MakeDimensionsSquareish(ASE_Header *header, u32 *frames_x, u32 *frames_y, u64 *image_width, u64 *image_height);
//- Decode image
////////////////////////////////
//~ Decode image
ASE_DecodedImage ASE_DecodeImage(Arena *arena, String encoded);
//- Decode sheet
////////////////////////////////
//~ Decode sheet
ASE_DecodedSheet ASE_DecodeSheet(Arena *arena, String encoded);

View File

@ -671,7 +671,7 @@ void SignalExit(i32 code);
void ExitNow(i32 code);
////////////////////////////////
//~ @hookdecl Layer initialization hook (defined by metaprogram)
//~ @hookdecl Meta hooks
void StartupLayers(void);

View File

@ -173,7 +173,7 @@ void SignalCv(Cv *cv, i32 count)
////////////////////////////////
//~ Counter
u64 ValueFromCounter(Counter *counter)
i64 ValueFromCounter(Counter *counter)
{
return Atomic64Fetch(&counter->v);
}

View File

@ -79,6 +79,6 @@ void SignalCv(Cv *cv, i32 count);
////////////////////////////////
//~ Counter operations
u64 ValueFromCounter(Counter *counter);
i64 ValueFromCounter(Counter *counter);
void AddCounter(Counter *counter, i64 x);
void YieldOnCounter(Counter *counter);

View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -10,18 +10,54 @@ void S_Startup(void)
}
////////////////////////////////
//~ Load texture job
//~ Load jobs
JobDef(S_LoadTextureJob, sig, _)
{
TempArena scratch = BeginScratchNoConflict();
S_Entry *entry = sig->entry;
Resource resource = entry->resource;
b32 success = 1;
S_Texture *texture = &entry->texture;
texture->valid = 1;
String name = NameFromResource(resource);
String data = DataFromResource(resource);
ASE_DecodedImage decoded = ASE_DecodeImage(scratch.arena, data);
success = decoded.success;
if (success)
{
GPU_ResourceDesc desc = ZI;
desc.kind = GPU_ResourceKind_Texture2D;
desc.flags = GPU_ResourceFlag_AllowSrv;
desc.flags = GPU_ResourceFlag_AllowUav;
desc.flags = GPU_ResourceFlag_AllowRtv;
desc.texture.format = GPU_Format_R8G8B8A8_Unorm_Srgb;
desc.texture.size = VEC3I32(decoded.width, decoded.height, 1);
desc.texture.mip_levels = 1;
texture->gpu_resource = GPU_AcquireResource(desc);
texture->width = decoded.width;
texture->height = decoded.height;
}
texture->loaded = 1;
AddCounter(&entry->texture_load_counter, -1);
EndScratch(scratch);
}
JobDef(S_LoadSheetJob, sig, _)
{
TempArena scratch = BeginScratchNoConflict();
S_Entry *entry = sig->entry;
Resource resource = entry->resource;
b32 success = 1;
S_Sheet *sheet = &entry->sheet;
sheet->valid = 1;
AddCounter(&entry->sheet_load_counter, -1);
EndScratch(scratch);
}
////////////////////////////////
@ -69,8 +105,6 @@ S_Entry *S_FetchEntry(Resource resource, JobPool pool, S_FetchFlag flags)
{
entry = PushStruct(PermArena, S_Entry);
entry->resource = resource;
entry->texture = &S_NilTexture;
entry->sheet = &S_NilSheet;
AddCounter(&entry->texture_load_counter, 1);
AddCounter(&entry->sheet_load_counter, 1);
QueuePush_N(bin->first, bin->last, entry, next_in_bin);
@ -102,7 +136,7 @@ S_Texture *S_TextureFromResource(Resource resource)
{
S_Entry *entry = S_FetchEntry(resource, JobPool_Inherit, S_FetchFlag_Texture);
YieldOnCounter(&entry->texture_load_counter);
return entry->texture;
return &entry->texture;
}
S_Texture *S_TextureFromResourceAsync(Resource resource)
@ -111,7 +145,7 @@ S_Texture *S_TextureFromResourceAsync(Resource resource)
S_Entry *entry = S_FetchEntry(resource, JobPool_Inherit, S_FetchFlag_Texture);
if (ValueFromCounter(&entry->texture_load_counter) <= 0)
{
result = entry->texture;
result = &entry->texture;
}
return result;
}
@ -120,7 +154,7 @@ S_Sheet *S_SheetFromResource(Resource resource)
{
S_Entry *entry = S_FetchEntry(resource, JobPool_Inherit, S_FetchFlag_Sheet);
YieldOnCounter(&entry->sheet_load_counter);
return entry->sheet;
return &entry->sheet;
}
S_Sheet *S_SheetFromResourceAsync(Resource resource)
@ -129,7 +163,7 @@ S_Sheet *S_SheetFromResourceAsync(Resource resource)
S_Entry *entry = S_FetchEntry(resource, JobPool_Inherit, S_FetchFlag_Sheet);
if (ValueFromCounter(&entry->sheet_load_counter) <= 0)
{
result = entry->sheet;
result = &entry->sheet;
}
return result;
}

View File

@ -1,35 +1,10 @@
////////////////////////////////
//~ Cache types
Struct(S_Entry)
{
S_Entry *next_in_bin;
struct S_Texture *texture;
struct S_Sheet *sheet;
Atomic32 texture_touched;
Atomic32 sheet_touched;
Resource resource;
Counter texture_load_counter;
Counter sheet_load_counter;
};
Struct(S_EntryBin)
{
S_Entry *first;
S_Entry *last;
Mutex mutex;
};
////////////////////////////////
//~ Texture types
Struct(S_Texture)
{
b32 loaded;
b32 valid;
b32 loaded;
GPU_Resource *gpu_resource;
u32 width;
u32 height;
@ -91,8 +66,8 @@ Struct(S_SheetSliceGroup)
Struct(S_Sheet)
{
b32 loaded;
b32 valid;
b32 loaded;
Vec2 image_size;
Vec2 frame_size;
@ -110,6 +85,31 @@ Struct(S_Sheet)
extern Readonly S_Sheet S_NilSheet;
////////////////////////////////
//~ Cache types
Struct(S_Entry)
{
S_Entry *next_in_bin;
S_Texture texture;
S_Sheet sheet;
Atomic32 texture_touched;
Atomic32 sheet_touched;
Resource resource;
Counter texture_load_counter;
Counter sheet_load_counter;
};
Struct(S_EntryBin)
{
S_Entry *first;
S_Entry *last;
Mutex mutex;
};
////////////////////////////////
//~ Shared state