diff options
Diffstat (limited to 'src/asset-manager.cpp')
| -rw-r--r-- | src/asset-manager.cpp | 34 |
1 files changed, 11 insertions, 23 deletions
diff --git a/src/asset-manager.cpp b/src/asset-manager.cpp index 7d595ce..5eef783 100644 --- a/src/asset-manager.cpp +++ b/src/asset-manager.cpp @@ -1,6 +1,7 @@ #include "asset-manager.hpp" +#include "embedded-shaders.h" #include "pk.h" #include "thread-pool.hpp" @@ -14,30 +15,13 @@ struct Asset_Master { ThreadPoolHandle thread_pool = ThreadPoolHandle_MAX; } asset_mstr; -AssetKey EngineDefinedAssets[EngineDefinedAssetCount] = { - "pke_prsnt_vrt\0\0", - "pke_prsnt_frg\0\0", - "pke_txtr_vrt\0\0\0", - "pke_txtr_frg\0\0\0", - "pke_glyph_vrt\0\0", - "pke_glyph_frg\0\0", - "pke_ui_bs_vrt\0\0", - "pke_ui_bs_frg\0\0", - "pke_ui_txt_frg\0", -}; - void AM_Init() { + int i; new (&asset_mstr.bc) pk_bkt_arr_t<Asset>{ pk_bkt_arr_handle_MAX_constexpr }; asset_mstr.thread_pool = PkeThreads_Init(2, 255); - AM_Register(EngineDefinedAssets[0], PKE_ASSET_TYPE_SHADER, "assets/shaders/present.vert.spv", nullptr); - AM_Register(EngineDefinedAssets[1], PKE_ASSET_TYPE_SHADER, "assets/shaders/present.frag.spv", nullptr); - AM_Register(EngineDefinedAssets[2], PKE_ASSET_TYPE_SHADER, "assets/shaders/vertex.vert.spv", nullptr); - AM_Register(EngineDefinedAssets[3], PKE_ASSET_TYPE_SHADER, "assets/shaders/texture.frag.spv", nullptr); - AM_Register(EngineDefinedAssets[4], PKE_ASSET_TYPE_SHADER, "assets/shaders/glyph.vert.spv", nullptr); - AM_Register(EngineDefinedAssets[5], PKE_ASSET_TYPE_SHADER, "assets/shaders/glyph.frag.spv", nullptr); - AM_Register(EngineDefinedAssets[6], PKE_ASSET_TYPE_SHADER, "assets/shaders/ui-base.vert.spv", nullptr); - AM_Register(EngineDefinedAssets[7], PKE_ASSET_TYPE_SHADER, "assets/shaders/ui-base.frag.spv", nullptr); - AM_Register(EngineDefinedAssets[8], PKE_ASSET_TYPE_SHADER, "assets/shaders/ui-txtr.frag.spv", nullptr); + for (i = 0; i < embedded_shader_index_count; ++i) { + AM_Register_Static(embedded_shaders[i].name, PKE_ASSET_TYPE_SHADER, embedded_shaders[i].data, embedded_shaders[i].size, nullptr); + } } void AM_Load_Task(Asset &asset) { @@ -256,6 +240,10 @@ void AM_GC() { auto asset_iter_fn = [](void *user_data, void *arr_obj_data) { (void)user_data; Asset &asset = *reinterpret_cast<Asset *>(arr_obj_data); + if (PK_HAS_FLAG(asset.flags, PKE_ASSET_FLAGS_MEM_STATIC)) { + fprintf(stdout, "[AM_GC] Asset '%.16s' is static, skipping.", asset.key); + return; + } switch (asset.state) { case PKE_ASSET_LOADING_STATE_LOADING: fprintf(stdout, "[AM_GC] Asset '%.16s' is still loading.", asset.key); @@ -267,7 +255,7 @@ void AM_GC() { fprintf(stdout, "[AM_GC] Asset '%.16s' still in use, count: %i\n", asset.key, asset.referenceCount); return; } - if (asset.ptr != nullptr && asset.ptr != CAFE_BABE(void) && !PK_HAS_FLAG(asset.flags, PKE_ASSET_FLAGS_MEM_STATIC)) { + if (asset.ptr != nullptr && asset.ptr != CAFE_BABE(void)) { pk_delete_base(asset.ptr, asset.size); fprintf(stdout, "[AM_GC] Asset '%.16s' not in use, freeing.\n", asset.key); } @@ -280,7 +268,7 @@ void AM_GC() { } void AM_Teardown() { + PkeThreads_Teardown(asset_mstr.thread_pool); AM_GC(); pk_bkt_arr_teardown(&asset_mstr.bc); - PkeThreads_Teardown(asset_mstr.thread_pool); } |
