Skip to content

Commit affa4cb

Browse files
committed
feat: add resource ext handling to starter ext (v2.2.0)
1 parent 0c25dac commit affa4cb

8 files changed

Lines changed: 46 additions & 59 deletions

File tree

docs/version.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ the API is complete. It just means we won't break what currently exists.
7171
* Rectangle Packing v1.1.0 (pl_rect_pack_ext.h)
7272
* Screen Log v2.2.0 (pl_screen_log_ext.h)
7373
* Shader v2.0.0 (pl_shader_ext.h)
74-
* Starter v2.1.0 (pl_starter_ext.h)
74+
* Starter v2.2.0 (pl_starter_ext.h)
7575
* Stats v1.1.0 (pl_stats_ext.h)
7676
* String Interning v2.0.0 (pl_string_intern_ext.h)
7777
* UI Tools v1.1.0 (pl_tools_ext.h)

extensions/pl_renderer_ext.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -221,9 +221,6 @@ pl_renderer_initialize(const plRendererSettings* ptSettings)
221221

222222
// default options
223223
gptData->pdDrawCalls = gptStats->get_counter("draw calls");
224-
gptData->uMaxTextureResolution = ptSettings->uMaxTextureResolution > 0 ? ptSettings->uMaxTextureResolution : 1024;
225-
226-
gptResource->initialize((plResourceManagerInit){.ptDevice = gptData->ptDevice, .uMaxTextureResolution = ptSettings->uMaxTextureResolution});
227224

228225
PL_PROFILE_BEGIN_SAMPLE_API(gptProfile, 0, "create resources");
229226

@@ -1704,7 +1701,6 @@ pl_renderer_cleanup(void)
17041701

17051702
pl_sb_free(gptData->sbptScenes);
17061703
gptShaderVariant->unload_manifest("/shaders/shaders.pls");
1707-
gptResource->cleanup();
17081704
gptStage->cleanup();
17091705
gptGfx->flush_device(gptData->ptDevice);
17101706

extensions/pl_renderer_ext.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,6 @@ typedef struct _plRendererSettings
428428
{
429429
plDevice* ptDevice;
430430
plSwapchain* ptSwapchain;
431-
uint32_t uMaxTextureResolution; // default 1024 (should be factor of 2)
432431
} plRendererSettings;
433432

434433
typedef struct _plSceneDesc

extensions/pl_renderer_internal.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -533,7 +533,6 @@ typedef struct _plRefRendererData
533533
plDeviceInfo tDeviceInfo;
534534
plSwapchain* ptSwap;
535535
plTempAllocator tTempAllocator;
536-
uint32_t uMaxTextureResolution;
537536

538537
// bind groups
539538
plBindGroupPool* ptBindGroupPool;

extensions/pl_starter_ext.c

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ Index of this file:
3333
#include "pl_shader_ext.h"
3434
#include "pl_tools_ext.h"
3535
#include "pl_gpu_allocators_ext.h"
36+
#include "pl_vfs_ext.h"
37+
#include "pl_platform_ext.h"
38+
#include "pl_resource_ext.h"
3639

3740
// unstable extensions
3841
#include "pl_stage_ext.h"
@@ -58,6 +61,9 @@ Index of this file:
5861
static const plToolsI* gptTools = NULL;
5962
static const plGPUAllocatorsI* gptGpuAllocators = NULL;
6063
static const plStageI* gptStage = NULL;
64+
static const plVfsI* gptVfs = NULL;
65+
static const plFileI* gptFile = NULL;
66+
static const plResourceI* gptResource = NULL;
6167

6268
#endif
6369

@@ -69,7 +75,6 @@ Index of this file:
6975
typedef struct _plStarterContext plStarterContext;
7076

7177
// helpers
72-
static void pl__starter_create_render_pass(void);
7378
static void pl__starter_activate_msaa(void);
7479
static void pl__starter_deactivate_msaa(void);
7580
static void pl__starter_activate_depth_buffer(void);
@@ -140,13 +145,18 @@ pl_starter_initialize(plStarterInit tInit)
140145

141146
if(gptStarterCtx->eFlags & PL_STARTER_FLAGS_SHADER_EXT)
142147
{
148+
gptVfs->mount_directory("/shader-temp", "../shader-temp", PL_VFS_MOUNT_FLAGS_NONE);
149+
gptFile->create_directory("../shader-temp");
143150
static const plShaderOptions tDefaultShaderOptions = {
144151
.apcIncludeDirectories = {
145-
"../shaders/"
152+
"../shaders/",
153+
"../dependencies/pilotlight/shaders/"
146154
},
147155
.apcDirectories = {
148-
"../shaders/"
156+
"../shaders/",
157+
"../dependencies/pilotlight/shaders/"
149158
},
159+
.pcCacheOutputDirectory = "/shader-temp/",
150160
.eFlags = PL_SHADER_FLAGS_AUTO_OUTPUT
151161
};
152162
gptShader->initialize(&tDefaultShaderOptions);
@@ -174,6 +184,15 @@ pl_starter_initialize(plStarterInit tInit)
174184
plDevice* ptDevice = pl_starter_create_device(ptSurface);
175185
gptStarterCtx->ptDevice = ptDevice;
176186

187+
if(gptStarterCtx->eFlags & PL_STARTER_FLAGS_RESOURCE_EXT)
188+
{
189+
plResourceManagerInit tResourceInit = {
190+
.pcCacheDirectory = "../cache",
191+
.ptDevice = gptStarterCtx->ptDevice
192+
};
193+
gptResource->initialize(tResourceInit);
194+
}
195+
177196
if(gptStarterCtx->eFlags & PL_STARTER_FLAGS_TOOLS_EXT)
178197
gptTools->initialize((plToolsInit){.ptDevice = ptDevice});
179198

@@ -290,7 +309,6 @@ pl_starter_initialize(plStarterInit tInit)
290309
void
291310
pl_starter_finalize(void)
292311
{
293-
294312
plFontAtlas* ptCurrentAtlas = gptDraw->get_current_font_atlas();
295313
if(gptStarterCtx->ptDefaultFont == NULL)
296314
gptStarterCtx->ptDefaultFont = gptDraw->get_first_font(ptCurrentAtlas);
@@ -451,6 +469,11 @@ pl_starter_cleanup(void)
451469
gptGfx->cleanup_semaphore(gptStarterCtx->aptSemaphores[i]);
452470
}
453471

472+
if(gptStarterCtx->eFlags & PL_STARTER_FLAGS_RESOURCE_EXT)
473+
{
474+
gptResource->cleanup();
475+
}
476+
454477
if(gptStarterCtx->eFlags & PL_STARTER_FLAGS_SHADER_EXT)
455478
gptShader->cleanup();
456479
if(gptStarterCtx->eFlags & PL_STARTER_FLAGS_DRAW_EXT)
@@ -565,6 +588,11 @@ pl_starter_begin_frame(void)
565588
}
566589
}
567590

591+
592+
if(gptStarterCtx->eFlags & PL_STARTER_FLAGS_RESOURCE_EXT)
593+
{
594+
gptResource->new_frame();
595+
}
568596
return true;
569597
}
570598

@@ -1451,6 +1479,9 @@ pl_load_starter_ext(plApiRegistryI* ptApiRegistry, bool bReload)
14511479
gptTools = pl_get_api_latest(ptApiRegistry, plToolsI);
14521480
gptGpuAllocators = pl_get_api_latest(ptApiRegistry, plGPUAllocatorsI);
14531481
gptStage = pl_get_api_latest(ptApiRegistry, plStageI);
1482+
gptVfs = pl_get_api_latest(ptApiRegistry, plVfsI);
1483+
gptFile = pl_get_api_latest(ptApiRegistry, plFileI);
1484+
gptResource = pl_get_api_latest(ptApiRegistry, plResourceI);
14541485

14551486
if(bReload)
14561487
{

extensions/pl_starter_ext.h

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ extern "C" {
6565
// [SECTION] APIs
6666
//-----------------------------------------------------------------------------
6767

68-
#define plStarterI_version {2, 1, 0}
68+
#define plStarterI_version {2, 2, 0}
6969

7070
//-----------------------------------------------------------------------------
7171
// [SECTION] includes
@@ -337,16 +337,18 @@ enum _plStarterFlags
337337
PL_STARTER_FLAGS_SCREEN_LOG_EXT = 1 << 6,
338338
PL_STARTER_FLAGS_GRAPHICS_EXT = 1 << 7,
339339
PL_STARTER_FLAGS_TOOLS_EXT = 1 << 8,
340+
PL_STARTER_FLAGS_RESOURCE_EXT = 1 << 9,
340341

341342
// main render pass options
342-
PL_STARTER_FLAGS_DEPTH_BUFFER = 1 << 9,
343-
PL_STARTER_FLAGS_MSAA = 1 << 10,
344-
PL_STARTER_FLAGS_VSYNC_OFF = 1 << 11,
345-
PL_STARTER_FLAGS_REVERSE_Z = 1 << 12,
343+
PL_STARTER_FLAGS_DEPTH_BUFFER = 1 << 10,
344+
PL_STARTER_FLAGS_MSAA = 1 << 11,
345+
PL_STARTER_FLAGS_VSYNC_OFF = 1 << 12,
346+
PL_STARTER_FLAGS_REVERSE_Z = 1 << 13,
346347

347348
PL_STARTER_FLAGS_ALL_EXTENSIONS = PL_STARTER_FLAGS_SHADER_EXT | PL_STARTER_FLAGS_DRAW_EXT | PL_STARTER_FLAGS_UI_EXT |
348349
PL_STARTER_FLAGS_CONSOLE_EXT | PL_STARTER_FLAGS_PROFILE_EXT | PL_STARTER_FLAGS_STATS_EXT |
349-
PL_STARTER_FLAGS_SCREEN_LOG_EXT | PL_STARTER_FLAGS_GRAPHICS_EXT | PL_STARTER_FLAGS_TOOLS_EXT
350+
PL_STARTER_FLAGS_SCREEN_LOG_EXT | PL_STARTER_FLAGS_GRAPHICS_EXT | PL_STARTER_FLAGS_TOOLS_EXT |
351+
PL_STARTER_FLAGS_RESOURCE_EXT
350352

351353
};
352354

internal/demo/demo.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,6 @@ pl_app_load(plApiRegistryI* ptApiRegistry, plAppData* ptAppData)
248248
// setup reference renderer
249249
plRendererSettings tRenderSettings = PL_ZERO_INIT;
250250
tRenderSettings.ptDevice = ptAppData->ptDevice;
251-
tRenderSettings.uMaxTextureResolution = 1024;
252251
tRenderSettings.ptSwapchain = gptStarter->get_swapchain();
253252
gptRenderer->initialize(&tRenderSettings);
254253

@@ -406,8 +405,6 @@ pl_app_update(plAppData* ptAppData)
406405
return;
407406

408407
PL_PROFILE_BEGIN_SAMPLE_API(gptProfile, 0, __FUNCTION__);
409-
410-
gptResource->new_frame();
411408

412409
// for convience
413410
plIO* ptIO = gptIO->get_io();

internal/sandbox/app.c

Lines changed: 2 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -294,52 +294,21 @@ pl_app_load(plApiRegistryI* ptApiRegistry, plAppData* ptAppData)
294294
gptWindows->show(ptAppData->ptWindow);
295295

296296
plStarterInit tStarterInit = {
297-
.eFlags = PL_STARTER_FLAGS_NONE,
297+
.eFlags = PL_STARTER_FLAGS_ALL_EXTENSIONS,
298298
.ptWindow = ptAppData->ptWindow
299299
};
300300

301-
// extensions handled by starter
302-
tStarterInit.eFlags |= PL_STARTER_FLAGS_GRAPHICS_EXT;
303-
tStarterInit.eFlags |= PL_STARTER_FLAGS_PROFILE_EXT;
304-
tStarterInit.eFlags |= PL_STARTER_FLAGS_STATS_EXT;
305-
tStarterInit.eFlags |= PL_STARTER_FLAGS_CONSOLE_EXT;
306-
tStarterInit.eFlags |= PL_STARTER_FLAGS_TOOLS_EXT;
307-
tStarterInit.eFlags |= PL_STARTER_FLAGS_DRAW_EXT;
308-
tStarterInit.eFlags |= PL_STARTER_FLAGS_UI_EXT;
309-
tStarterInit.eFlags |= PL_STARTER_FLAGS_SCREEN_LOG_EXT;
310-
311301
// initial flags
312302
// tStarterInit.tFlags |= PL_STARTER_FLAGS_DEPTH_BUFFER;
313303
// tStarterInit.tFlags |= PL_STARTER_FLAGS_VSYNC_OFF;
314304

315-
// we handle these
316-
// tStarterInit.tFlags |= PL_STARTER_FLAGS_SHADER_EXT;
317305

318306
// from a graphics standpoint, the starter extension is handling device, swapchain, renderpass
319307
// etc. which we will get to in later examples
320308
gptStarter->initialize(tStarterInit);
321309

322-
// initialize shader compiler
323-
static plShaderOptions tDefaultShaderOptions = {
324-
.apcIncludeDirectories = {
325-
"/shaders/"
326-
},
327-
.apcDirectories = {
328-
"/shaders/",
329-
"/shader-temp/",
330-
},
331-
.pcCacheOutputDirectory = "/shader-temp/",
332-
.eFlags = PL_SHADER_FLAGS_AUTO_OUTPUT | PL_SHADER_FLAGS_INCLUDE_DEBUG | PL_SHADER_FLAGS_ALWAYS_COMPILE
333-
};
334-
gptShader->initialize(&tDefaultShaderOptions);
335-
336310
ptAppData->ptDevice = gptStarter->get_device();
337311

338-
// plTerrainExtInit tTerrainExtInit = {
339-
// .ptDevice = ptAppData->ptDevice
340-
// };
341-
// gptTerrain->initialize(tTerrainExtInit);
342-
343312
// initialize job system
344313
gptJobs->initialize((plJobSystemInit){0});
345314

@@ -351,8 +320,7 @@ pl_app_load(plApiRegistryI* ptApiRegistry, plAppData* ptAppData)
351320
// setup reference renderer
352321
plRendererSettings tRenderSettings = {
353322
.ptDevice = ptAppData->ptDevice,
354-
.ptSwapchain = gptStarter->get_swapchain(),
355-
.uMaxTextureResolution = 1024,
323+
.ptSwapchain = gptStarter->get_swapchain()
356324
};
357325
gptRenderer->initialize(&tRenderSettings);
358326

@@ -479,8 +447,6 @@ pl_app_shutdown(plAppData* ptAppData)
479447

480448
// ensure GPU is finished before cleanup
481449
gptGfx->flush_device(ptAppData->ptDevice);
482-
// gptTerrain->cleanup();
483-
484450

485451
if(ptAppData->ptTerrain)
486452
gptRendererTerrain->destroy(ptAppData->ptTerrain);
@@ -497,7 +463,6 @@ pl_app_shutdown(plAppData* ptAppData)
497463
gptConfig->cleanup();
498464
gptEcsTools->cleanup();
499465
gptPhysics->cleanup();
500-
gptShader->cleanup();
501466
gptConsole->cleanup();
502467

503468
if(ptAppData->tTestWorld.ptScene) gptRenderer->unload_test_world(&ptAppData->tTestWorld);
@@ -537,8 +502,6 @@ pl_app_update(plAppData* ptAppData)
537502

538503
PL_PROFILE_BEGIN_SAMPLE_API(gptProfile, 0, __FUNCTION__);
539504

540-
gptResource->new_frame();
541-
542505
// for convience
543506
plIO* ptIO = gptIO->get_io();
544507

0 commit comments

Comments
 (0)