VG_STATIC void vg_bake_shaders(void)
{
vg_console_reg_cmd( "reload_shaders", vg_shaders_live_recompile, NULL );
-
- vg_async_item *call = vg_async_alloc(0);
- vg_async_dispatch( call, async_vg_bake_shaders );
+ vg_async_call( async_vg_bake_shaders, NULL, 0 );
}
void async_internal_complete( void *payload, u32 size )
vg_loader_step( vg_audio_init, vg_audio_free );
vg_loader_step( vg_profiler_init, NULL );
- vg_async_item *test_async = vg_async_alloc( 0 );
- vg_async_dispatch( test_async, async_internal_complete );
+ vg_async_call( async_internal_complete, NULL, 0 );
/* client */
vg_load();
return entry;
}
+/*
+ * Wait until the current stack of async calls is completely flushed out
+ */
VG_STATIC void vg_async_stall(void)
{
vg_info( "async_stall: %d\n", SDL_SemValue( vg_async.sem_wait_for_flush ) );
SDL_AtomicUnlock( &vg_async.sl_index );
}
+/*
+ * Make a simple async call without allocating extra.
+ */
+VG_STATIC void vg_async_call( void (*runner)( void *payload, u32 size ),
+ void *payload, u32 size )
+{
+ vg_async_item *call = vg_async_alloc(0);
+ call->payload = payload;
+ call->size = size;
+ vg_async_dispatch( call, runner );
+}
+
/*
* Run as much of the async buffer as possible
*/
vg_dsp.buffer = vg_linear_alloc( vg_mem.rtmemory, 1024*1024*1 );
vg_dsp.view_texture_buffer = vg_linear_alloc( vg_mem.rtmemory, 512*512 );
- vg_async_item *call = vg_async_alloc(0);
- vg_async_dispatch( call, async_vg_dsp_alloc_texture );
+ vg_async_call( async_vg_dsp_alloc_texture, NULL, 0 );
/* temporary global design */
dsp_init_lpf( &__lpf_mud_free, 125.0f );
VG_STATIC void vg_input_init(void)
{
- vg_async_item *call = vg_async_alloc(0);
- vg_async_dispatch( call, async_vg_input_init );
+ vg_async_call( async_vg_input_init, NULL, 0 );
}
VG_STATIC void vg_input_free(void)
VG_STATIC void vg_lines_init(void)
{
- vg_async_item *call = vg_async_alloc(0);
- vg_async_dispatch( call, async_vg_lines_init );
+ vg_async_call( async_vg_lines_init, NULL, 0 );
vg_console_reg_var( "vg_lines", &vg_lines.draw, k_var_dtype_i32,
VG_VAR_CHEAT );