|
|
|
@@ -130,7 +130,7 @@ struct pipe_context *svga_context_create( struct pipe_screen *screen ) |
|
|
|
|
|
|
|
svga = CALLOC_STRUCT(svga_context); |
|
|
|
if (svga == NULL) |
|
|
|
goto error1; |
|
|
|
goto no_svga; |
|
|
|
|
|
|
|
svga->pipe.winsys = screen->winsys; |
|
|
|
svga->pipe.screen = screen; |
|
|
|
@@ -142,7 +142,7 @@ struct pipe_context *svga_context_create( struct pipe_screen *screen ) |
|
|
|
|
|
|
|
svga->swc = svgascreen->sws->context_create(svgascreen->sws); |
|
|
|
if(!svga->swc) |
|
|
|
goto error2; |
|
|
|
goto no_swc; |
|
|
|
|
|
|
|
svga_init_blend_functions(svga); |
|
|
|
svga_init_blit_functions(svga); |
|
|
|
@@ -165,32 +165,32 @@ struct pipe_context *svga_context_create( struct pipe_screen *screen ) |
|
|
|
svga->debug.disable_shader = debug_get_num_option("SVGA_DISABLE_SHADER", ~0); |
|
|
|
|
|
|
|
if (!svga_init_swtnl(svga)) |
|
|
|
goto error3; |
|
|
|
goto no_swtnl; |
|
|
|
|
|
|
|
svga->upload_ib = u_upload_create( svga->pipe.screen, |
|
|
|
32 * 1024, |
|
|
|
16, |
|
|
|
PIPE_BUFFER_USAGE_INDEX ); |
|
|
|
if (svga->upload_ib == NULL) |
|
|
|
goto error4; |
|
|
|
goto no_upload_ib; |
|
|
|
|
|
|
|
svga->upload_vb = u_upload_create( svga->pipe.screen, |
|
|
|
128 * 1024, |
|
|
|
16, |
|
|
|
PIPE_BUFFER_USAGE_VERTEX ); |
|
|
|
if (svga->upload_vb == NULL) |
|
|
|
goto error5; |
|
|
|
goto no_upload_vb; |
|
|
|
|
|
|
|
svga->hwtnl = svga_hwtnl_create( svga, |
|
|
|
svga->upload_ib, |
|
|
|
svga->swc ); |
|
|
|
if (svga->hwtnl == NULL) |
|
|
|
goto error6; |
|
|
|
goto no_hwtnl; |
|
|
|
|
|
|
|
|
|
|
|
ret = svga_emit_initial_state( svga ); |
|
|
|
if (ret) |
|
|
|
goto error7; |
|
|
|
goto no_state; |
|
|
|
|
|
|
|
/* Avoid shortcircuiting state with initial value of zero. |
|
|
|
*/ |
|
|
|
@@ -209,19 +209,19 @@ struct pipe_context *svga_context_create( struct pipe_screen *screen ) |
|
|
|
|
|
|
|
return &svga->pipe; |
|
|
|
|
|
|
|
error7: |
|
|
|
no_state: |
|
|
|
svga_hwtnl_destroy( svga->hwtnl ); |
|
|
|
error6: |
|
|
|
no_hwtnl: |
|
|
|
u_upload_destroy( svga->upload_vb ); |
|
|
|
error5: |
|
|
|
no_upload_vb: |
|
|
|
u_upload_destroy( svga->upload_ib ); |
|
|
|
error4: |
|
|
|
no_upload_ib: |
|
|
|
svga_destroy_swtnl(svga); |
|
|
|
error3: |
|
|
|
no_swtnl: |
|
|
|
svga->swc->destroy(svga->swc); |
|
|
|
error2: |
|
|
|
no_swc: |
|
|
|
FREE(svga); |
|
|
|
error1: |
|
|
|
no_svga: |
|
|
|
return NULL; |
|
|
|
} |
|
|
|
|