res refactor progress

This commit is contained in:
jacob 2025-08-26 22:32:29 -05:00
parent a8fb832bcb
commit c0bad6e58b
20 changed files with 309 additions and 241 deletions

View File

@ -77,6 +77,8 @@ AppArgList ParseAppArgs(Arena *arena, String args_str)
u8 c = args_str.text[i];
switch (mode)
{
default: break;
case 0:
{
if (c == '-')
@ -133,7 +135,6 @@ AppArgList ParseAppArgs(Arena *arena, String args_str)
}
++i;
} break;
default: break;
}
}
return result;

View File

@ -557,6 +557,11 @@ ASE_DecodedImage ASE_DecodeImage(Arena *arena, String encoded)
switch (chunk_type)
{
default:
{
BB_SeekToByte(&br, chunk_end_pos);
} break;
//- Decode layer
case ASE_ChunkKind_Layer:
{
@ -659,11 +664,6 @@ ASE_DecodedImage ASE_DecodeImage(Arena *arena, String encoded)
} break;
}
} break;
default:
{
BB_SeekToByte(&br, chunk_end_pos);
} break;
}
}
++num_frames;
@ -855,6 +855,11 @@ ASE_DecodedSheet ASE_DecodeSheet(Arena *arena, String encoded)
switch (chunk_type)
{
default:
{
BB_SeekToByte(&br, chunk_end_pos);
} break;
//- Decode tags
case ASE_ChunkKind_Tags:
{
@ -931,11 +936,6 @@ ASE_DecodedSheet ASE_DecodeSheet(Arena *arena, String encoded)
/* TODO */
//case ASE_ChunkKind_Userdata
default:
{
BB_SeekToByte(&br, chunk_end_pos);
} break;
}
}
++num_frames;

View File

@ -31,8 +31,8 @@ Struct(TempArena)
Struct(ArenaCtx)
{
Arena *scratch_arenas[ScratchArenasPerCtx];
Arena *perm_arena;
Arena *scratch_arenas[ScratchArenasPerCtx];
};
////////////////////////////////
@ -182,18 +182,20 @@ Inline ArenaCtx *ArenaCtxFromFiberId(i16 fiber_id)
{
SharedArenaCtx *g = &shared_arena_ctx;
ArenaCtx *ctx = &g->arena_contexts[fiber_id];
if (!ctx->scratch_arenas[0])
if (!ctx->perm_arena)
{
__profn("Initialize fiber arena ctx");
ctx->perm_arena = AcquireArena(Gibi(64));
for (i32 i = 0; i < (i32)countof(ctx->scratch_arenas); ++i)
{
ctx->scratch_arenas[i] = AcquireArena(Gibi(64));
}
ctx->perm_arena = AcquireArena(Gibi(64));
}
return ctx;
}
#define PermArena (ArenaCtxFromFiberId(FiberId)->perm_arena)
////////////////////////////////
//~ Scratch helpers
@ -247,12 +249,3 @@ Inline void EndScratch(TempArena scratch_temp)
{
EndTempArena(scratch_temp);
}
////////////////////////////////
//~ Perm arena helpers
Inline Arena *GetPermArena(void)
{
ArenaCtx *ctx = ArenaCtxFromFiberId(FiberId);
return ctx->perm_arena;
}

View File

@ -7,16 +7,24 @@ Enum(JobPool)
{
JobPool_Inherit = -1,
/* The floating pool contains a large number of lower priority worker
* threads that have affinity over the entire CPU. Other pools should push
* jobs that only block and do no work here so that they can yield on the
* blocking job rather than blocking themselves. */
JobPool_Floating = 0,
/* Contains critical-priority worker threads affinitized over the entire CPU.
* Meant to take on high-bandwidth temporary work (e.g. loading a level). */
JobPool_Hyper = 0,
JobPool_Background = 1,
JobPool_Audio = 2,
JobPool_User = 3,
JobPool_Sim = 4,
/* Contains low-priority worker threads affinitized over the entire CPU.
* Meant to take on blocking work that higher-priority workers can continue doing actual work. */
JobPool_Blocking = 1,
/* Contains low-priority worker threads affinitized to cores that don't interfere with workers in specialized pools.
* Meant to take on asynchronous work from higher priority pools. */
JobPool_Background = 2,
/* Contains high-priority worker threads affinitized to cores that don't interfere with workers in other specialized pools.
* These pools are meant to only have work pushed onto them from jobs within the same pool (e.g. pushing 100 rendering
* jobs will not interfere with cores running workers on the Sim pool as long as the jobs are pushed onto the User pool). */
JobPool_Audio = 3,
JobPool_User = 4,
JobPool_Sim = 5,
JobPool_Count
};

View File

@ -543,6 +543,14 @@ String FormatStringV(Arena *arena, String fmt, va_list args)
FmtArg arg = va_arg(args, FmtArg);
switch (arg.kind)
{
default:
{
/* Unknown format type */
Assert(0);
parsed_str = PushString(arena, Lit("<?>"));
no_more_args = 1;
} break;
case FmtKind_Char:
{
parsed_str = StringFromChar(arena, arg.value.c);
@ -595,14 +603,6 @@ String FormatStringV(Arena *arena, String fmt, va_list args)
parsed_str = PushString(arena, Lit("<?>"));
no_more_args = 1;
} break;
default:
{
/* Unknown format type */
Assert(0);
parsed_str = PushString(arena, Lit("<?>"));
no_more_args = 1;
} break;
}
/* Update final string len / start */
final_len += parsed_str.len;

View File

@ -20,6 +20,8 @@ Utf8DecodeResult DecodeUtf8(String str)
advance = 1;
switch (utf8_len)
{
default: break;
case 1:
{
codepoint = c0;
@ -75,8 +77,6 @@ Utf8DecodeResult DecodeUtf8(String str)
}
}
} break;
default: break;
}
}

View File

@ -193,7 +193,7 @@ i32 W32_Main(void)
/* Startup layers */
if (!Atomic32Fetch(&g->panicking))
{
RunJob(1, W32_StartupLayersJob, JobPool_Floating, JobPriority_High, 0, 0);
RunJob(1, W32_StartupLayersJob, JobPool_Hyper, JobPriority_High, 0, 0);
}
/* Wait for startup end or panic */
@ -221,7 +221,7 @@ i32 W32_Main(void)
/* Run exit callbacks job */
if (!Atomic32Fetch(&g->panicking))
{
RunJob(1, W32_ShutdownLayersJob, JobPool_Floating, JobPriority_High, 0, 0);
RunJob(1, W32_ShutdownLayersJob, JobPool_Hyper, JobPriority_High, 0, 0);
}
/* Wait for exit end or panic */

View File

@ -72,7 +72,7 @@ void InitJobWorkers(void)
name_fmt = Lit("Sim worker #%F");
pool->num_worker_threads = 4;
pool->thread_affinity_mask = 0x000000000000000Full;
pool->thread_priority = THREAD_PRIORITY_TIME_CRITICAL;
pool->thread_priority = THREAD_PRIORITY_ABOVE_NORMAL;
} break;
case JobPool_User:
@ -80,7 +80,7 @@ void InitJobWorkers(void)
name_fmt = Lit("User worker #%F");
pool->num_worker_threads = 4;
pool->thread_affinity_mask = 0x00000000000000F0ull;
pool->thread_priority = THREAD_PRIORITY_TIME_CRITICAL;
pool->thread_priority = THREAD_PRIORITY_ABOVE_NORMAL;
} break;
case JobPool_Audio:
@ -97,13 +97,23 @@ void InitJobWorkers(void)
name_fmt = Lit("Background worker #%F");
pool->num_worker_threads = 2;
pool->thread_affinity_mask = 0x0000000000000C00ull;
pool->thread_priority = THREAD_PRIORITY_NORMAL;
} break;
case JobPool_Floating:
case JobPool_Blocking:
{
name_fmt = Lit("Floating worker #%F");
pool->num_worker_threads = 8;
pool->thread_affinity_mask = 0x0000000000000FFFull;
pool->thread_priority = THREAD_PRIORITY_NORMAL;
} break;
case JobPool_Hyper:
{
name_fmt = Lit("Floating worker #%F");
pool->num_worker_threads = 8;
pool->thread_affinity_mask = 0x0000000000000FFFull;
pool->thread_priority = THREAD_PRIORITY_HIGHEST;
} break;
}
pool->worker_threads_arena = AcquireArena(Gibi(64));
@ -1091,11 +1101,11 @@ W32_ThreadDef(W32_JobWorkerEntryFunc, worker_ctx_arg)
{
switch (wait_size)
{
default: cancel_wait = 1; Assert(0); break; /* Invalid wait size */
case 1: cancel_wait = (u8)_InterlockedCompareExchange8(wait_addr, 0, 0) != *(u8 *)wait_cmp; break;
case 2: cancel_wait = (u16)_InterlockedCompareExchange16(wait_addr, 0, 0) != *(u16 *)wait_cmp; break;
case 4: cancel_wait = (u32)_InterlockedCompareExchange(wait_addr, 0, 0) != *(u32 *)wait_cmp; break;
case 8: cancel_wait = (u64)_InterlockedCompareExchange64(wait_addr, 0, 0) != *(u64 *)wait_cmp; break;
default: cancel_wait = 1; Assert(0); break; /* Invalid wait size */
}
}
if (wait_time != 0 && !cancel_wait)

View File

@ -312,18 +312,18 @@ void GPU_FlushUav(GPU_CommandList *cl, GPU_Resource *resource);
void GPU_DispatchClear(GPU_CommandList *cl, GPU_Resource *resource);
void GPU_DispatchRasterize(GPU_CommandList *cl,
GPU_ShaderDesc vs,
GPU_ShaderDesc ps,
void *sig,
u32 rts_count,
GPU_Resource **rts,
u32 viewports_count,
GPU_Viewport *viewports,
u32 scissors_count,
GPU_Scissor *scissors,
u32 instances_count,
GPU_Resource *index_buffer,
GPU_RasterizeMode mode);
GPU_ShaderDesc vs,
GPU_ShaderDesc ps,
void *sig,
u32 rts_count,
GPU_Resource **rts,
u32 viewports_count,
GPU_Viewport *viewports,
u32 scissors_count,
GPU_Scissor *scissors,
u32 instances_count,
GPU_Resource *index_buffer,
GPU_RasterizeMode mode);
void GPU_DispatchCompute(GPU_CommandList *cl, GPU_ShaderDesc cs, void *sig, u32 num_threads_x, u32 num_threads_y, u32 num_threads_z);

View File

@ -1,3 +1,5 @@
GPU_D12_SharedState GPU_D12_shared_state = ZI;
////////////////////////////////
//~ @hookdef Startup hook
@ -34,7 +36,7 @@ GPU_Fence GPU_GetGlobalFence(void)
GPU_Resource *GPU_AcquireResource(GPU_ResourceDesc desc)
{
LAX desc;
return (GPU_Resource *)0;
return 0;
}
void GPU_ReleaseResource(GPU_Resource *resource, GPU_Fence fence, GPU_ReleaseFlag flags)
@ -116,18 +118,18 @@ void GPU_DispatchClear(GPU_CommandList *cl, GPU_Resource *resource)
}
void GPU_DispatchRasterize(GPU_CommandList *cl,
GPU_ShaderDesc vs,
GPU_ShaderDesc ps,
void *sig,
u32 rts_count,
GPU_Resource **rts,
u32 viewports_count,
GPU_Viewport *viewports,
u32 scissors_count,
GPU_Scissor *scissors,
u32 instances_count,
GPU_Resource *index_buffer,
GPU_RasterizeMode mode)
GPU_ShaderDesc vs,
GPU_ShaderDesc ps,
void *sig,
u32 rts_count,
GPU_Resource **rts,
u32 viewports_count,
GPU_Viewport *viewports,
u32 scissors_count,
GPU_Scissor *scissors,
u32 instances_count,
GPU_Resource *index_buffer,
GPU_RasterizeMode mode)
{
LAX cl;
LAX vs;

View File

@ -0,0 +1,9 @@
////////////////////////////////
//~ Shared state
Struct(GPU_D12_SharedState)
{
i32 _;
};
extern GPU_D12_SharedState GPU_D12_shared_state;

View File

@ -38,16 +38,16 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
{
switch (src.text[pos])
{
JSON_Case_Newline:
JSON_Case_Space:
{
++pos;
} break;
default:
{
whitespace_done = 1;
} break;
case JSON_Case_Newline:
case JSON_Case_Space:
{
++pos;
} break;
}
}
@ -66,6 +66,8 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
/* Lex known token kinds */
switch (src.text[pos])
{
default: break;
/* Symbols */
case ',':
{
@ -112,7 +114,7 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
{
switch (src.text[pos + 1])
{
JSON_Case_Digit0Through9:
case JSON_Case_Digit0Through9:
{
next_is_digit = 1;
} break;
@ -124,7 +126,7 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
break;
}
} FALLTHROUGH;
JSON_Case_Digit0Through9:
case JSON_Case_Digit0Through9:
{
t->kind = JSON_TokenKind_Number;
JSON_LexNumberState state = JSON_LexNumberState_Whole;
@ -133,7 +135,12 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
{
switch (src.text[pos])
{
JSON_Case_Digit0Through9:
default:
{
number_done = 1;
} break;
case JSON_Case_Digit0Through9:
{
++pos;
} break;
@ -146,13 +153,13 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
u8 c1 = src.text[pos + 1];
switch (c1)
{
JSON_Case_Digit0Through9:
default: break;
case JSON_Case_Digit0Through9:
{
/* Consume '.' */
++consume;
} break;
default: break;
}
}
if (consume)
@ -175,7 +182,7 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
u8 c1 = src.text[pos + 1];
switch (c1)
{
JSON_Case_Digit0Through9:
case JSON_Case_Digit0Through9:
{
/* Consume 'E'/'e' */
++consume;
@ -189,13 +196,13 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
u8 c2 = src.text[pos + 2];
switch (c2)
{
JSON_Case_Digit0Through9:
default: break;
case JSON_Case_Digit0Through9:
{
/* Consume 'E'/'e' & '+'/'-' */
consume += 2;
} break;
default: break;
}
}
} break;
@ -213,11 +220,6 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
number_done = 1;
}
} break;
default:
{
number_done = 1;
} break;
}
}
} break;
@ -235,7 +237,12 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
next_escaped = 0;
switch (src.text[pos])
{
JSON_Case_Newline:
default:
{
++pos;
} break;
case JSON_Case_Newline:
{
++pos;
string_done = 1;
@ -259,11 +266,6 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
next_escaped = 1;
}
} break;
default:
{
++pos;
} break;
}
}
} break;
@ -283,16 +285,16 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
/* Don't match if word continues past keyword */
switch (src.text[pos + keyword.len])
{
JSON_Case_Symbol:
JSON_Case_Space:
JSON_Case_Newline:
{
} break;
default:
{
match = 0;
} break;
case JSON_Case_Symbol:
case JSON_Case_Space:
case JSON_Case_Newline:
{
} break;
}
}
if (match)
@ -311,8 +313,6 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
pos += keyword.len;
}
} break;
default: break;
}
}
@ -324,17 +324,17 @@ JSON_TokenList JSON_TokensFromString(Arena *arena, String src)
{
switch (src.text[pos])
{
JSON_Case_Symbol:
JSON_Case_Space:
JSON_Case_Newline:
{
unknown_done = 1;
} break;
default:
{
++pos;
} break;
case JSON_Case_Symbol:
case JSON_Case_Space:
case JSON_Case_Newline:
{
unknown_done = 1;
} break;
}
}
t->end = pos;
@ -384,7 +384,14 @@ f64 interpret_number(String src)
{
switch (src.text[pos])
{
JSON_Case_Digit0Through9:
default:
{
/* Unreachable */
Assert(0);
++pos;
} break;
case JSON_Case_Digit0Through9:
{
switch (state)
{
@ -440,6 +447,13 @@ f64 interpret_number(String src)
{
switch (state)
{
default:
{
/* Unreachable */
Assert(0);
++pos;
} break;
case JSON_LexNumberState_Whole:
{
whole_sign = -1;
@ -451,13 +465,6 @@ f64 interpret_number(String src)
exponent_sign = -1;
++pos;
} break;
default:
{
/* Unreachable */
Assert(0);
++pos;
} break;
}
} break;
@ -465,26 +472,19 @@ f64 interpret_number(String src)
{
switch (state)
{
case JSON_LexNumberState_Exponent:
{
exponent_sign = 1;
++pos;
} break;
default:
{
/* Unreachable */
Assert(0);
++pos;
} break;
}
} break;
default:
{
/* Unreachable */
Assert(0);
++pos;
case JSON_LexNumberState_Exponent:
{
exponent_sign = 1;
++pos;
} break;
}
} break;
}
}
@ -578,6 +578,15 @@ String interpret_string(Arena *arena, String src, String *error)
{
switch (src.text[pos])
{
default:
{
if (error)
{
*error = Lit("Invalid escape character in string.");
return result;
}
} break;
case '"':
case '\\':
case '/':
@ -634,21 +643,19 @@ String interpret_string(Arena *arena, String src, String *error)
/* TODO */
} break;
#endif
default:
{
if (error)
{
*error = Lit("Invalid escape character in string.");
return result;
}
} break;
}
}
else
{
switch (src.text[pos])
{
default:
{
*PushStructNoZero(arena, u8) = src.text[pos];
++result.len;
++pos;
} break;
case '\\':
{
escaped = 1;
@ -661,13 +668,6 @@ String interpret_string(Arena *arena, String src, String *error)
valid_close = 1;
++pos;
} break;
default:
{
*PushStructNoZero(arena, u8) = src.text[pos];
++result.len;
++pos;
} break;
}
}
}
@ -801,6 +801,13 @@ void JSON_Parse(Arena *arena, JSON_Parser *p)
/* Parse value */
switch (at->kind)
{
default:
{
JSON_PushError(arena, p, at, Lit("Value expected."));
at = at->next;
goto abort;
} break;
case JSON_TokenKind_Number:
{
String t_text = STRING(at->end - at->start, &src.text[at->start]);
@ -861,13 +868,6 @@ void JSON_Parse(Arena *arena, JSON_Parser *p)
at = at->next;
is_new_parent = 1;
} break;
default:
{
JSON_PushError(arena, p, at, Lit("Value expected."));
at = at->next;
goto abort;
} break;
}
}

View File

@ -54,21 +54,21 @@ Struct(JSON_Result)
//~ Lexer types
#define JSON_Case_Newline \
case 0x0A: /* Line feed or New line */ \
0x0A: /* Line feed or New line */ \
case 0x0D /* Carriage return */
#define JSON_Case_Space \
case 0x20: /* Space */ \
0x20: /* Space */ \
case 0x09 /* Horizontal tab */
#define JSON_Case_Digit0Through9 \
case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9'
'0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9'
#define JSON_Case_Digit1Through9 \
case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9'
'1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9'
#define JSON_Case_Symbol \
case ',': case ':': case '[': case ']': case '{': case '}'
',': case ':': case '[': case ']': case '{': case '}'
Enum(JSON_TokenKind)
{

View File

@ -736,6 +736,23 @@ Error *PushError(Arena *arena, ErrorList *list, String file, i64 pos, String s)
return e;
}
////////////////////////////////
//~ Task
JobDecl(TaskJob, {i32 _;});
JobDef(TaskJob, sig, id)
{
}
////////////////////////////////
//~ Build
@ -890,60 +907,76 @@ void StartupMeta(void)
}
//- Generate compiler flags
StringList shared_compiler_flags = ZI;
StringList msvc_compiler_flags = ZI;
StringList clang_compiler_flags = ZI;
StringList compiler_defs = ZI;
StringList warning_flags_msvc = ZI;
StringList warning_flags_clang = ZI;
StringList flags_msvc = ZI;
StringList flags_clang = ZI;
StringList compiler_flags_msvc = ZI;
StringList compiler_flags_clang = ZI;
StringList linker_flags_msvc = ZI;
StringList linker_flags_clang = ZI;
{
//- Shared
PushStringToList(arena, &shared_compiler_flags, Lit("-DIsConsoleApp=0"));
PushStringToList(arena, &shared_compiler_flags, Lit("-DRtcIsEnabled=1"));
PushStringToList(arena, &shared_compiler_flags, Lit("-DAsanIsEnabled=0"));
PushStringToList(arena, &shared_compiler_flags, Lit("-DCrtlibIsEnabled=1"));
PushStringToList(arena, &shared_compiler_flags, Lit("-DDebinfoEnabled=1"));
PushStringToList(arena, &shared_compiler_flags, Lit("-DDeveloperIsEnabled=1"));
PushStringToList(arena, &shared_compiler_flags, Lit("-DProfilingIsEnabled=0"));
PushStringToList(arena, &shared_compiler_flags, Lit("-DUnoptimizedIsEnabled=1"));
PushStringToList(arena, &shared_compiler_flags, Lit("-DTestsAreEnabled=0"));
//- Shared definitions
PushStringToList(arena, &compiler_defs, Lit("-DIsConsoleApp=0"));
PushStringToList(arena, &compiler_defs, Lit("-DRtcIsEnabled=1"));
PushStringToList(arena, &compiler_defs, Lit("-DAsanIsEnabled=0"));
PushStringToList(arena, &compiler_defs, Lit("-DCrtlibIsEnabled=1"));
PushStringToList(arena, &compiler_defs, Lit("-DDebinfoEnabled=1"));
PushStringToList(arena, &compiler_defs, Lit("-DDeveloperIsEnabled=1"));
PushStringToList(arena, &compiler_defs, Lit("-DProfilingIsEnabled=0"));
PushStringToList(arena, &compiler_defs, Lit("-DUnoptimizedIsEnabled=1"));
PushStringToList(arena, &compiler_defs, Lit("-DTestsAreEnabled=0"));
//- Msvc
{
PushStringToList(arena, &msvc_compiler_flags, Lit("-Z7"));
PushStringToList(arena, &msvc_compiler_flags, Lit("-DEBUG:FULL"));
PushStringToList(arena, &msvc_compiler_flags, Lit("-Fo:pp_gen.obj"));
PushStringToList(arena, &msvc_compiler_flags, Lit("-Fe:pp.exe"));
PushStringToList(arena, &msvc_compiler_flags, Lit("-nologo"));
PushStringToList(arena, &msvc_compiler_flags, Lit("-diagnostics:column"));
PushStringToList(arena, &flags_msvc, Lit("-Fe:pp.exe"));
PushStringToList(arena, &flags_msvc, Lit("-nologo"));
PushStringToList(arena, &compiler_flags_msvc, Lit("-Fo:pp_gen.obj"));
PushStringToList(arena, &compiler_flags_msvc, Lit("-diagnostics:column"));
/* Debug info */
PushStringToList(arena, &flags_msvc, Lit("-DEBUG:FULL"));
PushStringToList(arena, &compiler_flags_msvc, Lit("-Z7"));
/* Enable warnings */
PushStringToList(arena, &msvc_compiler_flags, Lit("-W4"));
PushStringToList(arena, &msvc_compiler_flags, Lit("-we4013")); /* function undefined; assuming extern returning int */
PushStringToList(arena, &warning_flags_msvc, Lit("-W4"));
PushStringToList(arena, &warning_flags_msvc, Lit("-WX"));
// PushStringToList(arena, &warning_flags_msvc, Lit("-we4013")); /* function undefined; assuming extern returning int */
/* Disable warnings */
PushStringToList(arena, &msvc_compiler_flags, Lit("-wd4244")); /* function': conversion from 'int' to 'f32', possible loss of data */
PushStringToList(arena, &msvc_compiler_flags, Lit("-wd4201")); /* nonstandard extension used: nameless struct/union */
PushStringToList(arena, &msvc_compiler_flags, Lit("-wd4324")); /* structure was padded due to alignment specifier */
PushStringToList(arena, &msvc_compiler_flags, Lit("-wd4100")); /* unreferenced parameter */
PushStringToList(arena, &msvc_compiler_flags, Lit("-wd4101")); /* unreferenced local variable */
PushStringToList(arena, &msvc_compiler_flags, Lit("-wd4189")); /* local variable is initialized but not referenced */
PushStringToList(arena, &msvc_compiler_flags, Lit("-wd4200")); /* nonstandard extension used: zero-sized array in struct/union */
PushStringToList(arena, &warning_flags_msvc, Lit("-wd4244")); /* 'function': conversion from 'int' to 'f32', possible loss of data */
PushStringToList(arena, &warning_flags_msvc, Lit("-wd4201")); /* nonstandard extension used: nameless struct/union */
PushStringToList(arena, &warning_flags_msvc, Lit("-wd4324")); /* structure was padded due to alignment specifier */
PushStringToList(arena, &warning_flags_msvc, Lit("-wd4100")); /* unreferenced parameter */
PushStringToList(arena, &warning_flags_msvc, Lit("-wd4101")); /* unreferenced local variable */
PushStringToList(arena, &warning_flags_msvc, Lit("-wd4189")); /* local variable is initialized but not referenced */
PushStringToList(arena, &warning_flags_msvc, Lit("-wd4200")); /* nonstandard extension used: zero-sized array in struct/union */
}
//- Clang
{
PushStringToList(arena, &clang_compiler_flags, Lit("-std=c99"));
PushStringToList(arena, &clang_compiler_flags, Lit("-fno-finite-loops"));
PushStringToList(arena, &clang_compiler_flags, Lit("-g -gcodeview"));
PushStringToList(arena, &clang_compiler_flags, Lit("-O0"));
PushStringToList(arena, &clang_compiler_flags, Lit("-msse4.2"));
PushStringToList(arena, &flags_clang, Lit("-std=c99"));
PushStringToList(arena, &flags_clang, Lit("-fno-finite-loops"));
PushStringToList(arena, &flags_clang, Lit("-g -gcodeview"));
PushStringToList(arena, &flags_clang, Lit("-O0"));
PushStringToList(arena, &flags_clang, Lit("-msse4.2"));
/* Enable warnings */
PushStringToList(arena, &clang_compiler_flags, Lit("-Wall"));
PushStringToList(arena, &clang_compiler_flags, Lit("-Werror"));
PushStringToList(arena, &clang_compiler_flags, Lit("-Wframe-larger-than=65536"));
PushStringToList(arena, &clang_compiler_flags, Lit("-Wmissing-prototypes"));
PushStringToList(arena, &clang_compiler_flags, Lit("-Wunused-variable"));
PushStringToList(arena, &clang_compiler_flags, Lit("-Wunused-but-set-variable"));
PushStringToList(arena, &clang_compiler_flags, Lit("-Wunused-parameter"));
PushStringToList(arena, &warning_flags_clang, Lit("-Wall"));
PushStringToList(arena, &warning_flags_clang, Lit("-Werror"));
PushStringToList(arena, &warning_flags_clang, Lit("-Wframe-larger-than=65536"));
PushStringToList(arena, &warning_flags_clang, Lit("-Wmissing-prototypes"));
PushStringToList(arena, &warning_flags_clang, Lit("-Wmissing-declarations"));
PushStringToList(arena, &warning_flags_clang, Lit("-Wunused-variable"));
PushStringToList(arena, &warning_flags_clang, Lit("-Wunused-but-set-variable"));
PushStringToList(arena, &warning_flags_clang, Lit("-Wunused-parameter"));
PushStringToList(arena, &warning_flags_clang, Lit("-Wimplicit-fallthrough"));
PushStringToList(arena, &warning_flags_clang, Lit("-Wswitch"));
/* Disable warnings */
PushStringToList(arena, &clang_compiler_flags, Lit("-Wno-initializer-overrides"));
PushStringToList(arena, &clang_compiler_flags, Lit("-Wno-microsoft-enum-forward-reference"));
PushStringToList(arena, &warning_flags_clang, Lit("-Wno-initializer-overrides"));
PushStringToList(arena, &warning_flags_clang, Lit("-Wno-microsoft-enum-forward-reference"));
}
}
@ -952,21 +985,27 @@ void StartupMeta(void)
String clang_cmd_str = ZI;
/* Msvc */
{
String flags_str = StringF(arena,
"%F %F",
FmtString(StringFromList(arena, shared_compiler_flags, Lit(" "))),
FmtString(StringFromList(arena, msvc_compiler_flags, Lit(" ")))
);
msvc_cmd_str = StringF(arena, "\"cl\" %F %F", FmtString(c_out_file), FmtString(flags_str));
String compiler_str = StringF(arena,
"%F %F %F %F",
FmtString(StringFromList(arena, flags_msvc, Lit(" "))),
FmtString(StringFromList(arena, compiler_flags_msvc, Lit(" "))),
FmtString(StringFromList(arena, warning_flags_msvc, Lit(" "))),
FmtString(StringFromList(arena, compiler_defs, Lit(" "))));
String linker_str = StringF(arena,
"%F %F",
FmtString(StringFromList(arena, flags_msvc, Lit(" "))),
FmtString(StringFromList(arena, linker_flags_msvc, Lit(" "))));
msvc_cmd_str = StringF(arena, "\"cl\" %F %F -link %F", FmtString(c_out_file), FmtString(compiler_str), FmtString(linker_str));
}
/* Clang */
{
String flags_str = StringF(arena,
"%F %F",
FmtString(StringFromList(arena, shared_compiler_flags, Lit(" "))),
FmtString(StringFromList(arena, clang_compiler_flags, Lit(" ")))
);
clang_cmd_str = StringF(arena, "\"clang\" %F %F", FmtString(c_out_file), FmtString(flags_str));
String compiler_str = StringF(arena,
"%F %F %F %F",
FmtString(StringFromList(arena, flags_clang, Lit(" "))),
FmtString(StringFromList(arena, compiler_flags_clang, Lit(" "))),
FmtString(StringFromList(arena, warning_flags_clang, Lit(" "))),
FmtString(StringFromList(arena, compiler_defs, Lit(" "))));
clang_cmd_str = StringF(arena, "\"clang\" %F %F", FmtString(c_out_file), FmtString(compiler_str));
}
//- Compile C

View File

@ -624,6 +624,8 @@ N_EventList N_BeginUpdate(Arena *arena, N_Host *host)
{
switch (packet_kind)
{
default: break;
//- Read packet kind: TryConnect
case N_PacketKind_TryConnect:
{
@ -754,8 +756,6 @@ N_EventList N_BeginUpdate(Arena *arena, N_Host *host)
}
}
} break;
default: break;
}
}
host->bytes_received += packet->data.len;
@ -867,6 +867,8 @@ void N_EndUpdate(N_Host *host)
N_Channel *channel = node->channel;
switch (kind)
{
default: break;
//- Process command: TryConnect
case N_CmdKind_TryConnect:
{
@ -971,8 +973,6 @@ void N_EndUpdate(N_Host *host)
packet->data_len = BB_GetNumBytesWritten(&bw);
}
} break;
default: break;
}
}
}

View File

@ -520,6 +520,11 @@ LRESULT CALLBACK P_W32_Win32WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARA
b32 is_release = 0;
switch (msg)
{
default:
{
result = DefWindowProcW(hwnd, msg, wparam, lparam);
} break;
case WM_QUIT:
case WM_CLOSE:
case WM_DESTROY:
@ -766,11 +771,6 @@ LRESULT CALLBACK P_W32_Win32WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARA
mmi->ptMinTrackSize.x = 100;
mmi->ptMinTrackSize.y = 100;
} break;
default:
{
result = DefWindowProcW(hwnd, msg, wparam, lparam);
} break;
}
return result;
@ -923,6 +923,8 @@ void P_MkDir(String path)
String err = ZI;
switch (err_code)
{
default: break;
case ERROR_BAD_PATHNAME:
{
err = Lit("Bad path name");
@ -942,8 +944,6 @@ void P_MkDir(String path)
{
err = Lit("User canceled the operation");
} break;
default: break;
}
if (err.len > 0)
{

View File

@ -1811,6 +1811,8 @@ void UpdateUser(P_Window *window)
switch (bind)
{
default: break;
/* Movement */
case BindKind_MoveUp:
{
@ -1831,8 +1833,6 @@ void UpdateUser(P_Window *window)
{
input_move_dir.x += 1;
} break;
default: break;
}
}

View File

@ -1036,6 +1036,12 @@ void StepSim(SimStepCtx *ctx)
CmdKind kind = cmd_ent->cmd_kind;
switch (kind)
{
default:
{
/* Invalid cmd kind */
Assert(0);
} break;
case CmdKind_Control:
{
/* Player's will send control cmds a lot, so keep it around to prevent re-creating it each time */
@ -1172,12 +1178,6 @@ void StepSim(SimStepCtx *ctx)
}
} break;
#endif
default:
{
/* Invalid cmd kind */
Assert(0);
} break;
}
/* Release cmd */

View File

@ -1,3 +1,5 @@
Readonly S_Texture S_NilTexture = ZI;
Readonly S_Sheet S_NilSheet = ZI;
S_SharedState S_shared_state = ZI;
////////////////////////////////
@ -32,13 +34,13 @@ S_Tag S_TagFromResource(R_Tag resource)
S_Texture *S_TextureFromTagAwait(S_Tag tag)
{
S_Texture *result = ZI;
S_Texture *result = &S_NilTexture;
return result;
}
S_Texture *S_TextureFromTagAsync(S_Tag tag)
{
S_Texture *result = ZI;
S_Texture *result = &S_NilTexture;
return result;
}
@ -47,13 +49,13 @@ S_Texture *S_TextureFromTagAsync(S_Tag tag)
S_Sheet *S_SheetFromTagAwait(S_Tag tag)
{
S_Sheet *result = ZI;
S_Sheet *result = &S_NilSheet;
return result;
}
S_Sheet *S_SheetFromTagAsync(S_Tag tag)
{
S_Sheet *result = ZI;
S_Sheet *result = &S_NilSheet;
return result;
}

View File

@ -18,6 +18,8 @@ Struct(S_Texture)
u32 height;
};
extern Readonly S_Texture S_NilTexture;
////////////////////////////////
//~ Sheet types
@ -89,6 +91,8 @@ Struct(S_Sheet)
Dict *slice_groups_dict;
};
extern Readonly S_Sheet S_NilSheet;
////////////////////////////////
//~ Shared state