diff --git a/code/platform_mac/mac_4ed_functions.mm b/code/platform_mac/mac_4ed_functions.mm index c7597c69..b6f79d2f 100644 --- a/code/platform_mac/mac_4ed_functions.mm +++ b/code/platform_mac/mac_4ed_functions.mm @@ -976,6 +976,11 @@ graphics_fill_texture_sig(){ return(result); } +function +graphics_free_texture_sig(){ + renderer->free_texture(renderer, texid); +} + //////////////////////////////// /******************/ diff --git a/code/platform_mac/mac_4ed_metal.mm b/code/platform_mac/mac_4ed_metal.mm index 94fc7c87..b99c29ed 100644 --- a/code/platform_mac/mac_4ed_metal.mm +++ b/code/platform_mac/mac_4ed_metal.mm @@ -44,6 +44,12 @@ mac_fill_texture_sig(mac_metal__fill_texture){ return(result); } +function +mac_free_texture_sig(mac_metal__free_texture){ + Mac_Metal *metal = (Mac_Metal*)renderer; + [metal->renderer free_texture:texture]; +} + function Mac_Metal* mac_metal__init(NSWindow *window, Render_Target *target){ // NOTE(yuval): Create the Mac Metal rendere @@ -52,7 +58,8 @@ mac_metal__init(NSWindow *window, Render_Target *target){ metal->base.render = mac_metal__render; metal->base.get_texture = mac_metal__get_texture; metal->base.fill_texture = mac_metal__fill_texture; - + metal->base.free_texture = mac_metal__free_texture; + // NOTE(yuval): Create the Metal view NSView *content_view = [window contentView]; diff --git a/code/platform_mac/mac_4ed_opengl.mm b/code/platform_mac/mac_4ed_opengl.mm index dcfe3715..f700ea0e 100644 --- a/code/platform_mac/mac_4ed_opengl.mm +++ b/code/platform_mac/mac_4ed_opengl.mm @@ -144,6 +144,11 @@ mac_fill_texture_sig(mac_gl__fill_texture){ return(result); } +function +mac_free_texture_sig(mac_gl__free_texture){ + gl__free_texture(texture); +} + function Mac_OpenGL* mac_gl__init(NSWindow *window, Render_Target *target){ // NOTE(yuval): Create the Mac OpenGL Renderer @@ -152,6 +157,7 @@ mac_gl__init(NSWindow *window, Render_Target *target){ gl->base.render = mac_gl__render; gl->base.get_texture = mac_gl__get_texture; gl->base.fill_texture = mac_gl__fill_texture; + gl->base.free_texture = mac_gl__free_texture; // NOTE(yuval): Create the OpenGL view NSView *content_view = [window contentView]; diff --git a/code/platform_mac/mac_4ed_renderer.h b/code/platform_mac/mac_4ed_renderer.h index ecc11ff2..4cee4026 100644 --- a/code/platform_mac/mac_4ed_renderer.h +++ b/code/platform_mac/mac_4ed_renderer.h @@ -18,6 +18,9 @@ typedef mac_get_texture_sig(mac_get_texture_type); #define mac_fill_texture_sig(name) b32 name(Mac_Renderer *renderer, Texture_Kind texture_kind, u32 texture, Vec3_i32 p, Vec3_i32 dim, void* data) typedef mac_fill_texture_sig(mac_fill_texture_type); +#define mac_free_texture_sig(name) void name(Mac_Renderer *renderer, u32 texture) +typedef mac_free_texture_sig(mac_free_texture_type); + typedef i32 Mac_Renderer_Kind; enum{ MacRenderer_OpenGL, @@ -31,6 +34,7 @@ struct Mac_Renderer{ mac_get_texture_type *get_texture; mac_fill_texture_type *fill_texture; + mac_free_texture_type *free_texture; }; ////////////////////////////////