fix some msvc warnings

This commit is contained in:
jacob 2025-01-28 10:18:40 -06:00
parent 894c2dfa26
commit 70e2d4a935
6 changed files with 36 additions and 26 deletions

View File

@ -323,9 +323,9 @@ void OnBuild(StringList cli_args)
if (arg_msvc) { if (arg_msvc) {
/* Msvc */ /* Msvc */
StringListAppend(&perm, &c_compile_args, Lit("cl.exe /nologo /c \"%F\" /Fo\"%F\" /FS /showIncludes")); StringListAppend(&perm, &c_compile_args, Lit("cl.exe /nologo /c \"%F\" /Fo\"%F\" /FS /showIncludes"));
StringListAppend(&perm, &cpp_compile_args, Lit("cl.exe /nologo /c \"%F\" /Fo\"%F\" /FS /showIncludes")); StringListAppend(&perm, &cpp_compile_args, Lit("cl.exe /nologo /std:c++20 /c \"%F\" /Fo\"%F\" /FS /showIncludes"));
StringListAppend(&perm, &pch_c_compile_args, Lit("cl.exe /nologo /c /Yc\"%F\" \"%F\" /FS /showIncludes")); StringListAppend(&perm, &pch_c_compile_args, Lit("cl.exe /nologo /c /Yc\"%F\" \"%F\" /FS /showIncludes"));
StringListAppend(&perm, &pch_cpp_compile_args, Lit("cl.exe /nologo /c /Yc\"%F\" \"%F\" /FS /showIncludes")); StringListAppend(&perm, &pch_cpp_compile_args, Lit("cl.exe /nologo /std:c++20 /c /Yc\"%F\" \"%F\" /FS /showIncludes"));
StringListAppend(&perm, &rc_compile_args, Lit("rc /fo\"%F\" \"%F\"")); StringListAppend(&perm, &rc_compile_args, Lit("rc /fo\"%F\" \"%F\""));
StringListAppend(&perm, &link_args, Lit("link.exe /nologo %F /OUT:\"%F\" /DEBUG:FULL /OPT:REF /OPT:ICF")); StringListAppend(&perm, &link_args, Lit("link.exe /nologo %F /OUT:\"%F\" /DEBUG:FULL /OPT:REF /OPT:ICF"));

View File

@ -166,9 +166,9 @@ void __asan_unpoison_memory_region(void const volatile *add, size_t);
* ========================== */ * ========================== */
#if COMPILER_MSVC && LANGUAGE_CPP #if COMPILER_MSVC && LANGUAGE_CPP
# define CPPFRIENDLY_INITLIST_TYPE(type) type # define CPPCOMPAT_INITLIST_TYPE(type)
#else #else
# define CPPFRIENDLY_INITLIST_TYPE(type) (type) # define CPPCOMPAT_INITLIST_TYPE(type) (type)
#endif #endif
/* Zero initialization macro */ /* Zero initialization macro */
@ -213,7 +213,13 @@ void __asan_unpoison_memory_region(void const volatile *add, size_t);
/* Markup */ /* Markup */
#define UNUSED void #define UNUSED void
#if COMPILER_CLANG #if COMPILER_MSVC
# if LANGUAGE_CPP
# define FALLTHROUGH [[fallthrough]]
# else
# define FALLTHROUGH
# endif
#elif COMPILER_CLANG
# define FALLTHROUGH __attribute((fallthrough)) # define FALLTHROUGH __attribute((fallthrough))
#else #else
# define FALLTHROUGH # define FALLTHROUGH
@ -515,7 +521,7 @@ struct sprite_tag {
* ========================== */ * ========================== */
/* Utility buffer constructor */ /* Utility buffer constructor */
#define BUFFER(size, data) (CPPFRIENDLY_INITLIST_TYPE(struct buffer) { (size), (data) }) #define BUFFER(size, data) (CPPCOMPAT_INITLIST_TYPE(struct buffer) { (size), (data) })
/* Utility buffer constructor from static array */ /* Utility buffer constructor from static array */
#define BUFFER_FROM_ARRAY(a) \ #define BUFFER_FROM_ARRAY(a) \
@ -527,23 +533,23 @@ struct sprite_tag {
((struct buffer) { .size = ARRAY_COUNT(a), .data = (u8 *)(a) }) \ ((struct buffer) { .size = ARRAY_COUNT(a), .data = (u8 *)(a) }) \
) )
#define BUFFER_FROM_STRING(str) (CPPFRIENDLY_INITLIST_TYPE(struct buffer) { (str).len, (str).text }) #define BUFFER_FROM_STRING(str) (CPPCOMPAT_INITLIST_TYPE(struct buffer) { (str).len, (str).text })
#define BUFFER_FROM_POINTERS(p0, p1) (CPPFRIENDLY_INITLIST_TYPE(struct buffer) { (u8 *)(p1) - (u8 *)(p0), (u8 *)p0 }) #define BUFFER_FROM_POINTERS(p0, p1) (CPPCOMPAT_INITLIST_TYPE(struct buffer) { (u8 *)(p1) - (u8 *)(p0), (u8 *)p0 })
#define BUFFER_FROM_STRUCT(ptr) (CPPFRIENDLY_INITLIST_TYPE(struct buffer) { sizeof(*(ptr)), (u8 *)(ptr) }) #define BUFFER_FROM_STRUCT(ptr) (CPPCOMPAT_INITLIST_TYPE(struct buffer) { sizeof(*(ptr)), (u8 *)(ptr) })
/* ========================== * /* ========================== *
* String utils * String utils
* ========================== */ * ========================== */
/* Expand C string literal with size for string initialization */ /* Expand C string literal with size for string initialization */
#define STR(cstr_lit) CPPFRIENDLY_INITLIST_TYPE(struct string) { (sizeof((cstr_lit)) - 1), (u8 *)(cstr_lit) } #define STR(cstr_lit) CPPCOMPAT_INITLIST_TYPE(struct string) { (sizeof((cstr_lit)) - 1), (u8 *)(cstr_lit) }
/* Same as `STR`, but works with static variable initialization */ /* Same as `STR`, but works with static variable initialization */
#define STR_NOCAST(cstr_lit) { .len = (sizeof((cstr_lit)) - 1), .text = (u8 *)(cstr_lit) } #define STR_NOCAST(cstr_lit) { .len = (sizeof((cstr_lit)) - 1), .text = (u8 *)(cstr_lit) }
#define STRING_FROM_BUFFER(buff) (CPPFRIENDLY_INITLIST_TYPE(struct string) { buff.size, buff.data }) #define STRING_FROM_BUFFER(buff) (CPPCOMPAT_INITLIST_TYPE(struct string) { buff.size, buff.data })
#define STRING_FROM_ARRAY(a) STRING_FROM_BUFFER(BUFFER_FROM_ARRAY(a)) #define STRING_FROM_ARRAY(a) STRING_FROM_BUFFER(BUFFER_FROM_ARRAY(a))
@ -551,7 +557,7 @@ struct sprite_tag {
* Math types * Math types
* ========================== */ * ========================== */
#define V2(x, y) ((struct v2) { (x), (y) }) #define V2(x, y) CPPCOMPAT_INITLIST_TYPE(struct v2) { (x), (y) }
#define V2_FROM_V2I32(v) V2((v).x, (v).y) #define V2_FROM_V2I32(v) V2((v).x, (v).y)
struct v2 { struct v2 {
f32 x, y; f32 x, y;
@ -582,7 +588,7 @@ struct v4_array {
u64 count; u64 count;
}; };
#define V2I32(x, y) ((struct v2i32) { (x), (y) }) #define V2I32(x, y) CPPCOMPAT_INITLIST_TYPE(struct v2i32) { (x), (y) }
struct v2i32 { struct v2i32 {
i32 x, y; i32 x, y;
}; };

View File

@ -821,7 +821,7 @@ INLINE b32 v2i32_eq(struct v2i32 a, struct v2i32 b)
INLINE struct mat4x4 mat4x4_from_xform(struct xform xf) INLINE struct mat4x4 mat4x4_from_xform(struct xform xf)
{ {
return (struct mat4x4) { return CPPCOMPAT_INITLIST_TYPE(struct mat4x4) {
.e = { .e = {
{xf.bx.x, xf.bx.y, 0, 0}, {xf.bx.x, xf.bx.y, 0, 0},
{xf.by.x, xf.by.y, 0, 0}, {xf.by.x, xf.by.y, 0, 0},
@ -888,10 +888,10 @@ INLINE struct mat4x4 mat4x4_mul(struct mat4x4 m1, struct mat4x4 m2)
* ========================== */ * ========================== */
/* Construct identity xform */ /* Construct identity xform */
#define XFORM_IDENT ((struct xform) { .bx.x = 1, .by.y = 1 }) #define XFORM_IDENT CPPCOMPAT_INITLIST_TYPE(struct xform) { .bx.x = 1, .by.y = 1 }
#define XFORM_IDENT_NOCAST { .bx.x = 1, .by.y = 1 } #define XFORM_IDENT_NOCAST { .bx.x = 1, .by.y = 1 }
#define XFORM_POS(p) ((struct xform) { .bx.x = 1, .by.y = 1, .og = (p) }) #define XFORM_POS(p) CPPCOMPAT_INITLIST_TYPE(struct xform) { .bx.x = 1, .by.y = 1, .og = (p) }
/* Takes a translation, rotation, and scale as optional parameters for constructing an xform */ /* Takes a translation, rotation, and scale as optional parameters for constructing an xform */
#define XFORM_TRS(...) xform_from_trs((struct trs) { .t = V2(0,0), .s = V2(1, 1), .r = 0, __VA_ARGS__ }) #define XFORM_TRS(...) xform_from_trs((struct trs) { .t = V2(0,0), .s = V2(1, 1), .r = 0, __VA_ARGS__ })
@ -912,11 +912,11 @@ INLINE b32 xform_eq(struct xform xf1, struct xform xf2)
INLINE struct xform xform_from_pos(struct v2 v) INLINE struct xform xform_from_pos(struct v2 v)
{ {
return (struct xform) { struct xform xf;
.bx = {1, 0}, xf.bx = V2(1, 0);
.by = {0, 1}, xf.by = V2(0, 1);
.og = {v.x, v.y} xf.og = v;
}; return xf;
} }
INLINE struct xform xform_from_rotation(f32 r) INLINE struct xform xform_from_rotation(f32 r)

View File

@ -8,6 +8,7 @@
#include "inc.h" #include "inc.h"
#include "tar.h" #include "tar.h"
#include "sprite.h" #include "sprite.h"
#include "log.h"
#pragma warning(push, 0) #pragma warning(push, 0)
# define UNICODE # define UNICODE
@ -240,6 +241,7 @@ INTERNAL void shader_init(struct dx11_shader *shader, enum shader_kind kind)
struct temp_arena scratch = scratch_begin_no_conflict(); struct temp_arena scratch = scratch_begin_no_conflict();
const struct dx11_shader_desc *shader_desc = &G.shader_info[kind]; const struct dx11_shader_desc *shader_desc = &G.shader_info[kind];
struct string name = string_from_cstr(shader_desc->name_cstr);
shader->kind = kind; shader->kind = kind;
shader->vertex_size = shader_desc->vertex_size; shader->vertex_size = shader_desc->vertex_size;
@ -254,7 +256,6 @@ INTERNAL void shader_init(struct dx11_shader *shader, enum shader_kind kind)
/* Compile shader */ /* Compile shader */
ID3DBlob *vs_blob, *ps_blob; ID3DBlob *vs_blob, *ps_blob;
{ {
struct string name = string_from_cstr(shader_desc->name_cstr);
struct tar_entry *tar_entry = tar_get(&G.shaders_archive, name); struct tar_entry *tar_entry = tar_get(&G.shaders_archive, name);
if (!tar_entry) { if (!tar_entry) {
sys_panic(string_format(scratch.arena, sys_panic(string_format(scratch.arena,
@ -264,6 +265,7 @@ INTERNAL void shader_init(struct dx11_shader *shader, enum shader_kind kind)
struct buffer shader_src = tar_entry->buff; struct buffer shader_src = tar_entry->buff;
logf_info("Compiling shader \"%F\"", FMT_STR(name));
/* Compile shader */ /* Compile shader */
/* TODO: pre-compile shaders w/ FXC? */ /* TODO: pre-compile shaders w/ FXC? */
ID3DBlob *error_blob; ID3DBlob *error_blob;
@ -515,10 +517,12 @@ struct renderer_startup_receipt renderer_startup(struct sys_window *window)
} }
/* Init shaders */ /* Init shaders */
logf_info("Compiling shaders");
for (u32 i = SHADER_NONE + 1; i < NUM_SHADERS; ++i) { for (u32 i = SHADER_NONE + 1; i < NUM_SHADERS; ++i) {
/* Create shader */ /* Create shader */
shader_init(&G.shaders[i], i); shader_init(&G.shaders[i], i);
} }
logf_info("Finished compiling shaders");
return (struct renderer_startup_receipt) { 0 }; return (struct renderer_startup_receipt) { 0 };
} }

View File

@ -66,7 +66,7 @@ INTERNAL struct v2i32 world_to_cell_coords(f32 cell_size, struct v2 world_pos)
INTERNAL i32 cell_coords_to_bucket_index(struct space *space, struct v2i32 cell_pos) INTERNAL i32 cell_coords_to_bucket_index(struct space *space, struct v2i32 cell_pos)
{ {
u32 num_buckets_sqrt = space->num_buckets_sqrt; i32 num_buckets_sqrt = space->num_buckets_sqrt;
i32 index_x = cell_pos.x; i32 index_x = cell_pos.x;
i32 index_y = cell_pos.y; i32 index_y = cell_pos.y;

View File

@ -58,8 +58,8 @@ struct space {
struct arena cell_arena; struct arena cell_arena;
struct space_cell_bucket *buckets; struct space_cell_bucket *buckets;
u64 num_buckets; i32 num_buckets;
u64 num_buckets_sqrt; i32 num_buckets_sqrt;
struct space_cell *first_free_cell; struct space_cell *first_free_cell;
struct space_cell_node *first_free_cell_node; struct space_cell_node *first_free_cell_node;