diff --git a/src/gallium/drivers/virgl/virgl_context.c b/src/gallium/drivers/virgl/virgl_context.c index b86f687acc2..1be808c2d70 100644 --- a/src/gallium/drivers/virgl/virgl_context.c +++ b/src/gallium/drivers/virgl/virgl_context.c @@ -681,7 +681,7 @@ static void *virgl_shader_encoder(struct pipe_context *ctx, struct tgsi_token *new_tokens; int ret; - new_tokens = virgl_tgsi_transform(vctx, shader->tokens); + new_tokens = virgl_tgsi_transform((struct virgl_screen *)vctx->base.screen, shader->tokens); if (!new_tokens) return NULL; diff --git a/src/gallium/drivers/virgl/virgl_context.h b/src/gallium/drivers/virgl/virgl_context.h index 8ea3e1e2f6e..9acd698bc71 100644 --- a/src/gallium/drivers/virgl/virgl_context.h +++ b/src/gallium/drivers/virgl/virgl_context.h @@ -127,7 +127,7 @@ void virgl_init_blit_functions(struct virgl_context *vctx); void virgl_init_query_functions(struct virgl_context *vctx); void virgl_init_so_functions(struct virgl_context *vctx); -struct tgsi_token *virgl_tgsi_transform(struct virgl_context *vctx, const struct tgsi_token *tokens_in); +struct tgsi_token *virgl_tgsi_transform(struct virgl_screen *vscreen, const struct tgsi_token *tokens_in); bool virgl_can_rebind_resource(struct virgl_context *vctx, diff --git a/src/gallium/drivers/virgl/virgl_screen.c b/src/gallium/drivers/virgl/virgl_screen.c index 811b887bb11..1189a3e1b59 100644 --- a/src/gallium/drivers/virgl/virgl_screen.c +++ b/src/gallium/drivers/virgl/virgl_screen.c @@ -329,6 +329,9 @@ virgl_get_param(struct pipe_screen *screen, enum pipe_cap param) case PIPE_CAP_TGSI_SKIP_SHRINK_IO_ARRAYS: return vscreen->caps.caps.v2.capability_bits & VIRGL_CAP_INDIRECT_INPUT_ADDR; case PIPE_CAP_SHAREABLE_SHADERS: + /* Shader creation emits the shader through the context's command buffer + * in virgl_encode_shader_state(). + */ return 0; default: return u_pipe_screen_get_param_defaults(screen, param); diff --git a/src/gallium/drivers/virgl/virgl_tgsi.c b/src/gallium/drivers/virgl/virgl_tgsi.c index 9ec552ad6fb..c272d9c1e1e 100644 --- a/src/gallium/drivers/virgl/virgl_tgsi.c +++ b/src/gallium/drivers/virgl/virgl_tgsi.c @@ -101,9 +101,8 @@ virgl_tgsi_transform_instruction(struct tgsi_transform_context *ctx, ctx->emit_instruction(ctx, inst); } -struct tgsi_token *virgl_tgsi_transform(struct virgl_context *vctx, const struct tgsi_token *tokens_in) +struct tgsi_token *virgl_tgsi_transform(struct virgl_screen *vscreen, const struct tgsi_token *tokens_in) { - struct virgl_screen *vscreen = (struct virgl_screen *)vctx->base.screen; struct virgl_transform_context transform; const uint newLen = tgsi_num_tokens(tokens_in); struct tgsi_token *new_tokens;