diff options
author | Eric Anholt <[email protected]> | 2016-05-17 12:24:06 -0700 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2016-05-17 18:07:39 -0700 |
commit | 8835eb689b51593dcbe09f39a79af9e551c3e0b4 (patch) | |
tree | 9a801ccc17cc9aa417ed60ad33510773eab1042c | |
parent | 62087cb9b80c271139370a242841def40cfdabae (diff) |
vc4: Enable sharing shaders across contexts.
This allows the same pipe_shader_state to be referenced from multiple
contexts. Since our pipe_shader_state is treated as immutable (other than
the variant number) within the driver, this is no problem.
-rw-r--r-- | src/gallium/drivers/vc4/vc4_program.c | 3 | ||||
-rw-r--r-- | src/gallium/drivers/vc4/vc4_screen.c | 2 |
2 files changed, 3 insertions, 2 deletions
diff --git a/src/gallium/drivers/vc4/vc4_program.c b/src/gallium/drivers/vc4/vc4_program.c index 0a7bcb0374c..36ad3875e7e 100644 --- a/src/gallium/drivers/vc4/vc4_program.c +++ b/src/gallium/drivers/vc4/vc4_program.c @@ -1766,7 +1766,8 @@ vc4_shader_ntq(struct vc4_context *vc4, enum qstage stage, c->stage = stage; c->shader_state = &key->shader_state->base; c->program_id = key->shader_state->program_id; - c->variant_id = key->shader_state->compiled_variant_count++; + c->variant_id = + p_atomic_inc_return(&key->shader_state->compiled_variant_count); c->key = key; switch (stage) { diff --git a/src/gallium/drivers/vc4/vc4_screen.c b/src/gallium/drivers/vc4/vc4_screen.c index 86c2c3b94cc..6a56820709b 100644 --- a/src/gallium/drivers/vc4/vc4_screen.c +++ b/src/gallium/drivers/vc4/vc4_screen.c @@ -94,6 +94,7 @@ vc4_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_VERTEX_COLOR_UNCLAMPED: case PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT: case PIPE_CAP_NPOT_TEXTURES: + case PIPE_CAP_SHAREABLE_SHADERS: case PIPE_CAP_USER_CONSTANT_BUFFERS: case PIPE_CAP_TEXTURE_SHADOW_MAP: case PIPE_CAP_BLEND_EQUATION_SEPARATE: @@ -189,7 +190,6 @@ vc4_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param) case PIPE_CAP_DEPTH_BOUNDS_TEST: case PIPE_CAP_TGSI_TXQS: case PIPE_CAP_FORCE_PERSAMPLE_INTERP: - case PIPE_CAP_SHAREABLE_SHADERS: case PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS: case PIPE_CAP_CLEAR_TEXTURE: case PIPE_CAP_DRAW_PARAMETERS: |