diff options
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/glsl/glsl_to_nir.cpp | 12 | ||||
-rw-r--r-- | src/compiler/nir/nir.c | 3 | ||||
-rw-r--r-- | src/compiler/nir/nir.h | 2 | ||||
-rw-r--r-- | src/compiler/nir/nir_clone.c | 8 | ||||
-rw-r--r-- | src/compiler/nir/nir_gather_info.c | 46 | ||||
-rw-r--r-- | src/compiler/nir/nir_lower_bitmap.c | 2 | ||||
-rw-r--r-- | src/compiler/nir/nir_lower_clip.c | 2 | ||||
-rw-r--r-- | src/compiler/nir/nir_lower_clip_cull_distance_arrays.c | 4 | ||||
-rw-r--r-- | src/compiler/nir/nir_lower_gs_intrinsics.c | 2 | ||||
-rw-r--r-- | src/compiler/nir/nir_lower_system_values.c | 10 | ||||
-rw-r--r-- | src/compiler/nir/nir_print.c | 18 | ||||
-rw-r--r-- | src/compiler/nir/nir_sweep.c | 14 | ||||
-rw-r--r-- | src/compiler/spirv/spirv_to_nir.c | 48 | ||||
-rw-r--r-- | src/compiler/spirv/vtn_variables.c | 14 |
14 files changed, 89 insertions, 96 deletions
diff --git a/src/compiler/glsl/glsl_to_nir.cpp b/src/compiler/glsl/glsl_to_nir.cpp index 307276555ee..6513484fa01 100644 --- a/src/compiler/glsl/glsl_to_nir.cpp +++ b/src/compiler/glsl/glsl_to_nir.cpp @@ -133,13 +133,13 @@ static void nir_remap_attributes(nir_shader *shader) { nir_foreach_variable(var, &shader->inputs) { - var->data.location += _mesa_bitcount_64(shader->info->double_inputs_read & + var->data.location += _mesa_bitcount_64(shader->info.double_inputs_read & BITFIELD64_MASK(var->data.location)); } /* Once the remap is done, reset double_inputs_read, so later it will have * which location/slots are doubles */ - shader->info->double_inputs_read = 0; + shader->info.double_inputs_read = 0; } nir_shader * @@ -166,10 +166,10 @@ glsl_to_nir(const struct gl_shader_program *shader_prog, if (shader->stage == MESA_SHADER_VERTEX) nir_remap_attributes(shader); - shader->info->name = ralloc_asprintf(shader, "GLSL%d", shader_prog->Name); + shader->info.name = ralloc_asprintf(shader, "GLSL%d", shader_prog->Name); if (shader_prog->Label) - shader->info->label = ralloc_strdup(shader, shader_prog->Label); - shader->info->has_transform_feedback_varyings = + shader->info.label = ralloc_strdup(shader, shader_prog->Label); + shader->info.has_transform_feedback_varyings = shader_prog->TransformFeedback.NumVarying > 0; return shader; @@ -368,7 +368,7 @@ nir_visitor::visit(ir_variable *ir) if (glsl_type_is_dual_slot(glsl_without_array(var->type))) { for (uint i = 0; i < glsl_count_attribute_slots(var->type, true); i++) { uint64_t bitfield = BITFIELD64_BIT(var->data.location + i); - shader->info->double_inputs_read |= bitfield; + shader->info.double_inputs_read |= bitfield; } } break; diff --git a/src/compiler/nir/nir.c b/src/compiler/nir/nir.c index 8f7ed8a50f6..491b908396c 100644 --- a/src/compiler/nir/nir.c +++ b/src/compiler/nir/nir.c @@ -44,7 +44,8 @@ nir_shader_create(void *mem_ctx, shader->options = options; - shader->info = si ? si : rzalloc(shader, shader_info); + if (si) + shader->info = *si; exec_list_make_empty(&shader->functions); exec_list_make_empty(&shader->registers); diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h index 2a9ab542f6e..3b827bf7fca 100644 --- a/src/compiler/nir/nir.h +++ b/src/compiler/nir/nir.h @@ -1863,7 +1863,7 @@ typedef struct nir_shader { const struct nir_shader_compiler_options *options; /** Various bits of compile-time information about a given shader */ - struct shader_info *info; + struct shader_info info; /** list of global variables in the shader (nir_variable) */ struct exec_list globals; diff --git a/src/compiler/nir/nir_clone.c b/src/compiler/nir/nir_clone.c index e2204c4e72a..c13163f25c6 100644 --- a/src/compiler/nir/nir_clone.c +++ b/src/compiler/nir/nir_clone.c @@ -765,10 +765,10 @@ nir_shader_clone(void *mem_ctx, const nir_shader *s) clone_reg_list(&state, &ns->registers, &s->registers); ns->reg_alloc = s->reg_alloc; - *ns->info = *s->info; - ns->info->name = ralloc_strdup(ns, ns->info->name); - if (ns->info->label) - ns->info->label = ralloc_strdup(ns, ns->info->label); + ns->info = s->info; + ns->info.name = ralloc_strdup(ns, ns->info.name); + if (ns->info.label) + ns->info.label = ralloc_strdup(ns, ns->info.label); ns->num_inputs = s->num_inputs; ns->num_uniforms = s->num_uniforms; diff --git a/src/compiler/nir/nir_gather_info.c b/src/compiler/nir/nir_gather_info.c index 0c70787252b..24ac74ee79d 100644 --- a/src/compiler/nir/nir_gather_info.c +++ b/src/compiler/nir/nir_gather_info.c @@ -49,23 +49,23 @@ set_io_mask(nir_shader *shader, nir_variable *var, int offset, int len) if (var->data.mode == nir_var_shader_in) { if (is_patch_generic) - shader->info->patch_inputs_read |= bitfield; + shader->info.patch_inputs_read |= bitfield; else - shader->info->inputs_read |= bitfield; + shader->info.inputs_read |= bitfield; if (shader->stage == MESA_SHADER_FRAGMENT) { - shader->info->fs.uses_sample_qualifier |= var->data.sample; + shader->info.fs.uses_sample_qualifier |= var->data.sample; } } else { assert(var->data.mode == nir_var_shader_out); if (is_patch_generic) { - shader->info->patch_outputs_written |= bitfield; + shader->info.patch_outputs_written |= bitfield; } else if (!var->data.read_only) { - shader->info->outputs_written |= bitfield; + shader->info.outputs_written |= bitfield; } if (var->data.fb_fetch_output) - shader->info->outputs_read |= bitfield; + shader->info.outputs_read |= bitfield; } } } @@ -197,7 +197,7 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, nir_shader *shader) case nir_intrinsic_discard: case nir_intrinsic_discard_if: assert(shader->stage == MESA_SHADER_FRAGMENT); - shader->info->fs.uses_discard = true; + shader->info.fs.uses_discard = true; break; case nir_intrinsic_interp_var_at_centroid: @@ -219,7 +219,7 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, nir_shader *shader) glsl_type_is_dual_slot(glsl_without_array(var->type))) { for (uint i = 0; i < glsl_count_attribute_slots(var->type, false); i++) { int idx = var->data.location + i; - shader->info->double_inputs_read |= BITFIELD64_BIT(idx); + shader->info.double_inputs_read |= BITFIELD64_BIT(idx); } } } @@ -245,14 +245,14 @@ gather_intrinsic_info(nir_intrinsic_instr *instr, nir_shader *shader) case nir_intrinsic_load_tess_coord: case nir_intrinsic_load_tess_level_outer: case nir_intrinsic_load_tess_level_inner: - shader->info->system_values_read |= + shader->info.system_values_read |= (1ull << nir_system_value_from_intrinsic(instr->intrinsic)); break; case nir_intrinsic_end_primitive: case nir_intrinsic_end_primitive_with_counter: assert(shader->stage == MESA_SHADER_GEOMETRY); - shader->info->gs.uses_end_primitive = 1; + shader->info.gs.uses_end_primitive = 1; break; default: @@ -264,7 +264,7 @@ static void gather_tex_info(nir_tex_instr *instr, nir_shader *shader) { if (instr->op == nir_texop_tg4) - shader->info->uses_texture_gather = true; + shader->info.uses_texture_gather = true; } static void @@ -290,8 +290,8 @@ gather_info_block(nir_block *block, nir_shader *shader) void nir_shader_gather_info(nir_shader *shader, nir_function_impl *entrypoint) { - shader->info->num_textures = 0; - shader->info->num_images = 0; + shader->info.num_textures = 0; + shader->info.num_images = 0; nir_foreach_variable(var, &shader->uniforms) { const struct glsl_type *type = var->type; unsigned count = 1; @@ -301,21 +301,21 @@ nir_shader_gather_info(nir_shader *shader, nir_function_impl *entrypoint) } if (glsl_type_is_image(type)) { - shader->info->num_images += count; + shader->info.num_images += count; } else if (glsl_type_is_sampler(type)) { - shader->info->num_textures += count; + shader->info.num_textures += count; } } - shader->info->inputs_read = 0; - shader->info->outputs_written = 0; - shader->info->outputs_read = 0; - shader->info->double_inputs_read = 0; - shader->info->patch_inputs_read = 0; - shader->info->patch_outputs_written = 0; - shader->info->system_values_read = 0; + shader->info.inputs_read = 0; + shader->info.outputs_written = 0; + shader->info.outputs_read = 0; + shader->info.double_inputs_read = 0; + shader->info.patch_inputs_read = 0; + shader->info.patch_outputs_written = 0; + shader->info.system_values_read = 0; if (shader->stage == MESA_SHADER_FRAGMENT) { - shader->info->fs.uses_sample_qualifier = false; + shader->info.fs.uses_sample_qualifier = false; } nir_foreach_block(block, entrypoint) { gather_info_block(block, shader); diff --git a/src/compiler/nir/nir_lower_bitmap.c b/src/compiler/nir/nir_lower_bitmap.c index a1b4a32a5d4..9d04ae79dd8 100644 --- a/src/compiler/nir/nir_lower_bitmap.c +++ b/src/compiler/nir/nir_lower_bitmap.c @@ -111,7 +111,7 @@ lower_bitmap(nir_shader *shader, nir_builder *b, discard->src[0] = nir_src_for_ssa(cond); nir_builder_instr_insert(b, &discard->instr); - shader->info->fs.uses_discard = true; + shader->info.fs.uses_discard = true; } static void diff --git a/src/compiler/nir/nir_lower_clip.c b/src/compiler/nir/nir_lower_clip.c index 7bed46b1bfc..ea12f51a7bb 100644 --- a/src/compiler/nir/nir_lower_clip.c +++ b/src/compiler/nir/nir_lower_clip.c @@ -289,7 +289,7 @@ lower_clip_fs(nir_function_impl *impl, unsigned ucp_enables, discard->src[0] = nir_src_for_ssa(cond); nir_builder_instr_insert(&b, &discard->instr); - b.shader->info->fs.uses_discard = true; + b.shader->info.fs.uses_discard = true; } } diff --git a/src/compiler/nir/nir_lower_clip_cull_distance_arrays.c b/src/compiler/nir/nir_lower_clip_cull_distance_arrays.c index 6705a3c4597..ea23a604ed1 100644 --- a/src/compiler/nir/nir_lower_clip_cull_distance_arrays.c +++ b/src/compiler/nir/nir_lower_clip_cull_distance_arrays.c @@ -142,8 +142,8 @@ combine_clip_cull(nir_shader *nir, const unsigned cull_array_size = get_unwrapped_array_length(nir, cull); if (store_info) { - nir->info->clip_distance_array_size = clip_array_size; - nir->info->cull_distance_array_size = cull_array_size; + nir->info.clip_distance_array_size = clip_array_size; + nir->info.cull_distance_array_size = cull_array_size; } if (clip) diff --git a/src/compiler/nir/nir_lower_gs_intrinsics.c b/src/compiler/nir/nir_lower_gs_intrinsics.c index 68e20dd600f..4ddace9cf6a 100644 --- a/src/compiler/nir/nir_lower_gs_intrinsics.c +++ b/src/compiler/nir/nir_lower_gs_intrinsics.c @@ -77,7 +77,7 @@ rewrite_emit_vertex(nir_intrinsic_instr *intrin, struct state *state) nir_ssa_def *count = nir_load_var(b, state->vertex_count_var); nir_ssa_def *max_vertices = - nir_imm_int(b, b->shader->info->gs.vertices_out); + nir_imm_int(b, b->shader->info.gs.vertices_out); /* Create: if (vertex_count < max_vertices) and insert it. * diff --git a/src/compiler/nir/nir_lower_system_values.c b/src/compiler/nir/nir_lower_system_values.c index 6ad5ad6940d..810100a0816 100644 --- a/src/compiler/nir/nir_lower_system_values.c +++ b/src/compiler/nir/nir_lower_system_values.c @@ -58,9 +58,9 @@ convert_block(nir_block *block, nir_builder *b) */ nir_const_value local_size; - local_size.u32[0] = b->shader->info->cs.local_size[0]; - local_size.u32[1] = b->shader->info->cs.local_size[1]; - local_size.u32[2] = b->shader->info->cs.local_size[2]; + local_size.u32[0] = b->shader->info.cs.local_size[0]; + local_size.u32[1] = b->shader->info.cs.local_size[1]; + local_size.u32[2] = b->shader->info.cs.local_size[2]; nir_ssa_def *group_id = nir_load_work_group_id(b); nir_ssa_def *local_id = nir_load_local_invocation_id(b); @@ -88,9 +88,9 @@ convert_block(nir_block *block, nir_builder *b) nir_ssa_def *local_id = nir_load_local_invocation_id(b); nir_ssa_def *size_x = - nir_imm_int(b, b->shader->info->cs.local_size[0]); + nir_imm_int(b, b->shader->info.cs.local_size[0]); nir_ssa_def *size_y = - nir_imm_int(b, b->shader->info->cs.local_size[1]); + nir_imm_int(b, b->shader->info.cs.local_size[1]); sysval = nir_imul(b, nir_channel(b, local_id, 2), nir_imul(b, size_x, size_y)); diff --git a/src/compiler/nir/nir_print.c b/src/compiler/nir/nir_print.c index dfdb5f36191..66c0669b594 100644 --- a/src/compiler/nir/nir_print.c +++ b/src/compiler/nir/nir_print.c @@ -1159,20 +1159,20 @@ nir_print_shader_annotated(nir_shader *shader, FILE *fp, fprintf(fp, "shader: %s\n", gl_shader_stage_name(shader->stage)); - if (shader->info->name) - fprintf(fp, "name: %s\n", shader->info->name); + if (shader->info.name) + fprintf(fp, "name: %s\n", shader->info.name); - if (shader->info->label) - fprintf(fp, "label: %s\n", shader->info->label); + if (shader->info.label) + fprintf(fp, "label: %s\n", shader->info.label); switch (shader->stage) { case MESA_SHADER_COMPUTE: fprintf(fp, "local-size: %u, %u, %u%s\n", - shader->info->cs.local_size[0], - shader->info->cs.local_size[1], - shader->info->cs.local_size[2], - shader->info->cs.local_size_variable ? " (variable)" : ""); - fprintf(fp, "shared-size: %u\n", shader->info->cs.shared_size); + shader->info.cs.local_size[0], + shader->info.cs.local_size[1], + shader->info.cs.local_size[2], + shader->info.cs.local_size_variable ? " (variable)" : ""); + fprintf(fp, "shared-size: %u\n", shader->info.cs.shared_size); break; default: break; diff --git a/src/compiler/nir/nir_sweep.c b/src/compiler/nir/nir_sweep.c index e6ae298dd36..0f1debce3ad 100644 --- a/src/compiler/nir/nir_sweep.c +++ b/src/compiler/nir/nir_sweep.c @@ -150,20 +150,12 @@ nir_sweep(nir_shader *nir) { void *rubbish = ralloc_context(NULL); - /* The shader may not own shader_info so check first */ - bool steal_info = false; - if (nir == ralloc_parent(nir->info)) - steal_info = true; - /* First, move ownership of all the memory to a temporary context; assume dead. */ ralloc_adopt(rubbish, nir); - if (steal_info) - ralloc_steal(nir, nir->info); - - ralloc_steal(nir, (char *)nir->info->name); - if (nir->info->label) - ralloc_steal(nir, (char *)nir->info->label); + ralloc_steal(nir, (char *)nir->info.name); + if (nir->info.label) + ralloc_steal(nir, (char *)nir->info.label); /* Variables and registers are not dead. Steal them back. */ steal_list(nir, nir_variable, &nir->uniforms); diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c index c120ad6d19d..0a5eb0eb6b0 100644 --- a/src/compiler/spirv/spirv_to_nir.c +++ b/src/compiler/spirv/spirv_to_nir.c @@ -1017,9 +1017,9 @@ handle_workgroup_size_decoration_cb(struct vtn_builder *b, assert(val->const_type == glsl_vector_type(GLSL_TYPE_UINT, 3)); - b->shader->info->cs.local_size[0] = val->constant->values[0].u32[0]; - b->shader->info->cs.local_size[1] = val->constant->values[0].u32[1]; - b->shader->info->cs.local_size[2] = val->constant->values[0].u32[2]; + b->shader->info.cs.local_size[0] = val->constant->values[0].u32[0]; + b->shader->info.cs.local_size[1] = val->constant->values[0].u32[1]; + b->shader->info.cs.local_size[2] = val->constant->values[0].u32[2]; } static void @@ -2808,36 +2808,36 @@ vtn_handle_execution_mode(struct vtn_builder *b, struct vtn_value *entry_point, case SpvExecutionModeEarlyFragmentTests: assert(b->shader->stage == MESA_SHADER_FRAGMENT); - b->shader->info->fs.early_fragment_tests = true; + b->shader->info.fs.early_fragment_tests = true; break; case SpvExecutionModeInvocations: assert(b->shader->stage == MESA_SHADER_GEOMETRY); - b->shader->info->gs.invocations = MAX2(1, mode->literals[0]); + b->shader->info.gs.invocations = MAX2(1, mode->literals[0]); break; case SpvExecutionModeDepthReplacing: assert(b->shader->stage == MESA_SHADER_FRAGMENT); - b->shader->info->fs.depth_layout = FRAG_DEPTH_LAYOUT_ANY; + b->shader->info.fs.depth_layout = FRAG_DEPTH_LAYOUT_ANY; break; case SpvExecutionModeDepthGreater: assert(b->shader->stage == MESA_SHADER_FRAGMENT); - b->shader->info->fs.depth_layout = FRAG_DEPTH_LAYOUT_GREATER; + b->shader->info.fs.depth_layout = FRAG_DEPTH_LAYOUT_GREATER; break; case SpvExecutionModeDepthLess: assert(b->shader->stage == MESA_SHADER_FRAGMENT); - b->shader->info->fs.depth_layout = FRAG_DEPTH_LAYOUT_LESS; + b->shader->info.fs.depth_layout = FRAG_DEPTH_LAYOUT_LESS; break; case SpvExecutionModeDepthUnchanged: assert(b->shader->stage == MESA_SHADER_FRAGMENT); - b->shader->info->fs.depth_layout = FRAG_DEPTH_LAYOUT_UNCHANGED; + b->shader->info.fs.depth_layout = FRAG_DEPTH_LAYOUT_UNCHANGED; break; case SpvExecutionModeLocalSize: assert(b->shader->stage == MESA_SHADER_COMPUTE); - b->shader->info->cs.local_size[0] = mode->literals[0]; - b->shader->info->cs.local_size[1] = mode->literals[1]; - b->shader->info->cs.local_size[2] = mode->literals[2]; + b->shader->info.cs.local_size[0] = mode->literals[0]; + b->shader->info.cs.local_size[1] = mode->literals[1]; + b->shader->info.cs.local_size[2] = mode->literals[2]; break; case SpvExecutionModeLocalSizeHint: break; /* Nothing to do with this */ @@ -2845,10 +2845,10 @@ vtn_handle_execution_mode(struct vtn_builder *b, struct vtn_value *entry_point, case SpvExecutionModeOutputVertices: if (b->shader->stage == MESA_SHADER_TESS_CTRL || b->shader->stage == MESA_SHADER_TESS_EVAL) { - b->shader->info->tess.tcs_vertices_out = mode->literals[0]; + b->shader->info.tess.tcs_vertices_out = mode->literals[0]; } else { assert(b->shader->stage == MESA_SHADER_GEOMETRY); - b->shader->info->gs.vertices_out = mode->literals[0]; + b->shader->info.gs.vertices_out = mode->literals[0]; } break; @@ -2861,11 +2861,11 @@ vtn_handle_execution_mode(struct vtn_builder *b, struct vtn_value *entry_point, case SpvExecutionModeIsolines: if (b->shader->stage == MESA_SHADER_TESS_CTRL || b->shader->stage == MESA_SHADER_TESS_EVAL) { - b->shader->info->tess.primitive_mode = + b->shader->info.tess.primitive_mode = gl_primitive_from_spv_execution_mode(mode->exec_mode); } else { assert(b->shader->stage == MESA_SHADER_GEOMETRY); - b->shader->info->gs.vertices_in = + b->shader->info.gs.vertices_in = vertices_in_from_spv_execution_mode(mode->exec_mode); } break; @@ -2874,24 +2874,24 @@ vtn_handle_execution_mode(struct vtn_builder *b, struct vtn_value *entry_point, case SpvExecutionModeOutputLineStrip: case SpvExecutionModeOutputTriangleStrip: assert(b->shader->stage == MESA_SHADER_GEOMETRY); - b->shader->info->gs.output_primitive = + b->shader->info.gs.output_primitive = gl_primitive_from_spv_execution_mode(mode->exec_mode); break; case SpvExecutionModeSpacingEqual: assert(b->shader->stage == MESA_SHADER_TESS_CTRL || b->shader->stage == MESA_SHADER_TESS_EVAL); - b->shader->info->tess.spacing = TESS_SPACING_EQUAL; + b->shader->info.tess.spacing = TESS_SPACING_EQUAL; break; case SpvExecutionModeSpacingFractionalEven: assert(b->shader->stage == MESA_SHADER_TESS_CTRL || b->shader->stage == MESA_SHADER_TESS_EVAL); - b->shader->info->tess.spacing = TESS_SPACING_FRACTIONAL_EVEN; + b->shader->info.tess.spacing = TESS_SPACING_FRACTIONAL_EVEN; break; case SpvExecutionModeSpacingFractionalOdd: assert(b->shader->stage == MESA_SHADER_TESS_CTRL || b->shader->stage == MESA_SHADER_TESS_EVAL); - b->shader->info->tess.spacing = TESS_SPACING_FRACTIONAL_ODD; + b->shader->info.tess.spacing = TESS_SPACING_FRACTIONAL_ODD; break; case SpvExecutionModeVertexOrderCw: assert(b->shader->stage == MESA_SHADER_TESS_CTRL || @@ -2900,18 +2900,18 @@ vtn_handle_execution_mode(struct vtn_builder *b, struct vtn_value *entry_point, * but be the opposite of OpenGL. Currently NIR follows GL semantics, * so we set it backwards here. */ - b->shader->info->tess.ccw = true; + b->shader->info.tess.ccw = true; break; case SpvExecutionModeVertexOrderCcw: assert(b->shader->stage == MESA_SHADER_TESS_CTRL || b->shader->stage == MESA_SHADER_TESS_EVAL); /* Backwards; see above */ - b->shader->info->tess.ccw = false; + b->shader->info.tess.ccw = false; break; case SpvExecutionModePointMode: assert(b->shader->stage == MESA_SHADER_TESS_CTRL || b->shader->stage == MESA_SHADER_TESS_EVAL); - b->shader->info->tess.point_mode = true; + b->shader->info.tess.point_mode = true; break; case SpvExecutionModePixelCenterInteger: @@ -3287,7 +3287,7 @@ spirv_to_nir(const uint32_t *words, size_t word_count, b->shader = nir_shader_create(NULL, stage, options, NULL); /* Set shader info defaults */ - b->shader->info->gs.invocations = 1; + b->shader->info.gs.invocations = 1; /* Parse execution modes */ vtn_foreach_execution_mode(b, b->entry_point, diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_variables.c index 365e562386f..0f0cc1cd5c4 100644 --- a/src/compiler/spirv/vtn_variables.c +++ b/src/compiler/spirv/vtn_variables.c @@ -1094,9 +1094,9 @@ apply_var_decoration(struct vtn_builder *b, nir_variable *nir_var, nir_var->data.read_only = true; nir_constant *c = rzalloc(nir_var, nir_constant); - c->values[0].u32[0] = b->shader->info->cs.local_size[0]; - c->values[0].u32[1] = b->shader->info->cs.local_size[1]; - c->values[0].u32[2] = b->shader->info->cs.local_size[2]; + c->values[0].u32[0] = b->shader->info.cs.local_size[0]; + c->values[0].u32[1] = b->shader->info.cs.local_size[1]; + c->values[0].u32[2] = b->shader->info.cs.local_size[2]; nir_var->constant_initializer = c; break; } @@ -1335,18 +1335,18 @@ vtn_handle_variables(struct vtn_builder *b, SpvOp opcode, case SpvStorageClassUniformConstant: if (without_array->block) { var->mode = vtn_variable_mode_ubo; - b->shader->info->num_ubos++; + b->shader->info.num_ubos++; } else if (without_array->buffer_block) { var->mode = vtn_variable_mode_ssbo; - b->shader->info->num_ssbos++; + b->shader->info.num_ssbos++; } else if (glsl_type_is_image(without_array->type)) { var->mode = vtn_variable_mode_image; nir_mode = nir_var_uniform; - b->shader->info->num_images++; + b->shader->info.num_images++; } else if (glsl_type_is_sampler(without_array->type)) { var->mode = vtn_variable_mode_sampler; nir_mode = nir_var_uniform; - b->shader->info->num_textures++; + b->shader->info.num_textures++; } else { assert(!"Invalid uniform variable type"); } |