summaryrefslogtreecommitdiff
path: root/src/asset-manager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/asset-manager.cpp')
-rw-r--r--src/asset-manager.cpp34
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);
}