switch to async system
[vg.git] / vg_audio_dsp.h
index 56d3b20c655cb8050999f87287531bf76cf59a41..e6a953ec5cae6e7c8acd6f356388d27b3e46aac3 100644 (file)
@@ -24,7 +24,7 @@ static float *dsp_allocate( u32 samples )
    samples = vg_align4( samples );
 
    if( vg_dsp.allocations + samples > (1024*1024)/4 )
-      vg_fatal_exit_loop( "too much dsp" );
+      vg_fatal_error( "too much dsp" );
 
    float *buf = &vg_dsp.buffer[ vg_dsp.allocations ];
    vg_dsp.allocations += samples;
@@ -139,23 +139,25 @@ static struct dsp_delay __echos[8];
 static struct dsp_lpf   __echos_lpf[8];
 static struct dsp_schroeder __diffusion_chain[8];
 
-static void vg_dsp_init( void )
+static void async_vg_dsp_alloc_texture( void *payload, u32 size )
 {
-   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_acquire_thread_sync();
    glGenTextures( 1, &vg_dsp.view_texture );
    glBindTexture( GL_TEXTURE_2D, vg_dsp.view_texture );
    glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, 256, 256, 0, 
                  GL_RGBA, GL_UNSIGNED_BYTE, vg_dsp.view_texture_buffer );
-   vg_tex2d_nearest();
-   vg_release_thread_sync();
-
+   glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
+   glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
+}
 
-   /* temporary global design */
+static void vg_dsp_init( void )
+{
+   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 );
 
+   /* temporary global design */
    dsp_init_lpf( &__lpf_mud_free, 125.0f );
 
    float sizes[] =