[Mesa-dev] [PATCH] cso: add context cleanup code from st/mesa

Marek Olšák maraeo at gmail.com
Mon May 18 07:35:16 PDT 2015


I think Signed-off-by is only required for kernel patches.

Marek

On Mon, May 18, 2015 at 3:39 PM, Tobias Klausmann
<tobias.johannes.klausmann at mni.thm.de> wrote:
> Reviewed-by: Tobias Klausmann <tobias.johannes.klausmann at mni.thm.de>
>
> On 18.05.2015 11:29, Marek Olšák wrote:
>>
>> From: Marek Olšák <marek.olsak at amd.com>
>>
>> This fixes a crash in nouveau which can't handle
>> set_constant_buffer(PIPE_SHADER_TESS_*).
>
>
> where is the S-o-b ? ;-)
>
>
>> ---
>>   src/gallium/auxiliary/cso_cache/cso_context.c | 7 +++++++
>>   src/mesa/state_tracker/st_context.c           | 6 ------
>>   2 files changed, 7 insertions(+), 6 deletions(-)
>>
>> diff --git a/src/gallium/auxiliary/cso_cache/cso_context.c
>> b/src/gallium/auxiliary/cso_cache/cso_context.c
>> index 59bad2c..744b00c 100644
>> --- a/src/gallium/auxiliary/cso_cache/cso_context.c
>> +++ b/src/gallium/auxiliary/cso_cache/cso_context.c
>> @@ -300,6 +300,8 @@ void cso_destroy_context( struct cso_context *ctx )
>>      unsigned i, shader;
>>        if (ctx->pipe) {
>> +      ctx->pipe->set_index_buffer(ctx->pipe, NULL);
>> +
>>         ctx->pipe->bind_blend_state( ctx->pipe, NULL );
>>         ctx->pipe->bind_rasterizer_state( ctx->pipe, NULL );
>>   @@ -326,13 +328,18 @@ void cso_destroy_context( struct cso_context *ctx
>> )
>>           ctx->pipe->bind_depth_stencil_alpha_state( ctx->pipe, NULL );
>>         ctx->pipe->bind_fs_state( ctx->pipe, NULL );
>> +      ctx->pipe->set_constant_buffer(ctx->pipe, PIPE_SHADER_FRAGMENT, 0,
>> NULL);
>>         ctx->pipe->bind_vs_state( ctx->pipe, NULL );
>> +      ctx->pipe->set_constant_buffer(ctx->pipe, PIPE_SHADER_VERTEX, 0,
>> NULL);
>>         if (ctx->has_geometry_shader) {
>>            ctx->pipe->bind_gs_state(ctx->pipe, NULL);
>> +         ctx->pipe->set_constant_buffer(ctx->pipe, PIPE_SHADER_GEOMETRY,
>> 0, NULL);
>>         }
>>         if (ctx->has_tessellation) {
>>            ctx->pipe->bind_tcs_state(ctx->pipe, NULL);
>> +         ctx->pipe->set_constant_buffer(ctx->pipe, PIPE_SHADER_TESS_CTRL,
>> 0, NULL);
>>            ctx->pipe->bind_tes_state(ctx->pipe, NULL);
>> +         ctx->pipe->set_constant_buffer(ctx->pipe, PIPE_SHADER_TESS_EVAL,
>> 0, NULL);
>>         }
>>         ctx->pipe->bind_vertex_elements_state( ctx->pipe, NULL );
>>   diff --git a/src/mesa/state_tracker/st_context.c
>> b/src/mesa/state_tracker/st_context.c
>> index fa87dd7..ef4ad1b 100644
>> --- a/src/mesa/state_tracker/st_context.c
>> +++ b/src/mesa/state_tracker/st_context.c
>> @@ -378,12 +378,6 @@ void st_destroy_context( struct st_context *st )
>>      }
>>      pipe_surface_reference(&st->state.framebuffer.zsbuf, NULL);
>>   -   pipe->set_index_buffer(pipe, NULL);
>> -
>> -   for (i = 0; i < PIPE_SHADER_TYPES; i++) {
>> -      pipe->set_constant_buffer(pipe, i, 0, NULL);
>> -   }
>> -
>>      _mesa_delete_program_cache(st->ctx, st->pixel_xfer.cache);
>>        _vbo_DestroyContext(st->ctx);
>
>


More information about the mesa-dev mailing list