vrend: pass shader key by reference

Minor cleanup to avoid copying the large struct twice.

Signed-off-by: John Bates <jbates@chromium.com>
Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
macos/master
John Bates 5 years ago
parent e4df9556cf
commit d9ad02102c
  1. 8
      src/vrend_renderer.c

@ -3279,7 +3279,7 @@ static inline int conv_shader_type(int type)
static int vrend_shader_create(struct vrend_context *ctx, static int vrend_shader_create(struct vrend_context *ctx,
struct vrend_shader *shader, struct vrend_shader *shader,
struct vrend_shader_key key) struct vrend_shader_key *key)
{ {
shader->id = glCreateShader(conv_shader_type(shader->sel->type)); shader->id = glCreateShader(conv_shader_type(shader->sel->type));
@ -3287,7 +3287,7 @@ static int vrend_shader_create(struct vrend_context *ctx,
if (shader->sel->tokens) { if (shader->sel->tokens) {
bool ret = vrend_convert_shader(ctx, &ctx->shader_cfg, shader->sel->tokens, bool ret = vrend_convert_shader(ctx, &ctx->shader_cfg, shader->sel->tokens,
shader->sel->req_local_mem, &key, &shader->sel->sinfo, &shader->glsl_strings); shader->sel->req_local_mem, key, &shader->sel->sinfo, &shader->glsl_strings);
if (!ret) { if (!ret) {
report_context_error(ctx, VIRGL_ERROR_CTX_ILLEGAL_SHADER, shader->sel->type); report_context_error(ctx, VIRGL_ERROR_CTX_ILLEGAL_SHADER, shader->sel->type);
glDeleteShader(shader->id); glDeleteShader(shader->id);
@ -3299,7 +3299,7 @@ static int vrend_shader_create(struct vrend_context *ctx,
return -1; return -1;
} }
shader->key = key; shader->key = *key;
if (1) {//shader->sel->type == PIPE_SHADER_FRAGMENT || shader->sel->type == PIPE_SHADER_GEOMETRY) { if (1) {//shader->sel->type == PIPE_SHADER_FRAGMENT || shader->sel->type == PIPE_SHADER_GEOMETRY) {
bool ret; bool ret;
@ -3346,7 +3346,7 @@ static int vrend_shader_select(struct vrend_context *ctx,
list_inithead(&shader->programs); list_inithead(&shader->programs);
strarray_alloc(&shader->glsl_strings, SHADER_MAX_STRINGS); strarray_alloc(&shader->glsl_strings, SHADER_MAX_STRINGS);
r = vrend_shader_create(ctx, shader, key); r = vrend_shader_create(ctx, shader, &key);
if (r) { if (r) {
sel->current = NULL; sel->current = NULL;
FREE(shader); FREE(shader);

Loading…
Cancel
Save