Lines Matching defs:shader
80 reads_work_dim(nir_shader *shader)
82 return BITSET_TEST(shader->info.system_values_read, SYSTEM_VALUE_WORK_DIM);
96 nir_intrinsic_instr *load = nir_intrinsic_instr_create(b->shader, nir_intrinsic_load_push_constant);
110 lower_work_dim(nir_shader *shader)
112 if (shader->info.stage != MESA_SHADER_KERNEL)
115 if (!reads_work_dim(shader))
118 return nir_shader_instructions_pass(shader, lower_work_dim_instr, nir_metadata_dominance, NULL);
136 nir_variable *var2 = nir_variable_clone(var, b->shader);
139 nir_shader_add_variable(b->shader, var2);
233 lower_64bit_vertex_attribs(nir_shader *shader)
235 if (shader->info.stage != MESA_SHADER_VERTEX)
238 bool progress = nir_shader_instructions_pass(shader, lower_64bit_vertex_attribs_instr, nir_metadata_dominance, NULL);
239 progress |= nir_shader_instructions_pass(shader, lower_64bit_uint_attribs_instr, nir_metadata_dominance, NULL);
253 nir_intrinsic_instr *load = nir_intrinsic_instr_create(b->shader, nir_intrinsic_load_push_constant);
272 lower_basevertex(nir_shader *shader)
274 if (shader->info.stage != MESA_SHADER_VERTEX)
277 if (!BITSET_TEST(shader->info.system_values_read, SYSTEM_VALUE_BASE_VERTEX))
280 return nir_shader_instructions_pass(shader, lower_basevertex_instr, nir_metadata_dominance, NULL);
294 nir_intrinsic_instr *load = nir_intrinsic_instr_create(b->shader, nir_intrinsic_load_push_constant);
307 lower_drawid(nir_shader *shader)
309 if (shader->info.stage != MESA_SHADER_VERTEX)
312 if (!BITSET_TEST(shader->info.system_values_read, SYSTEM_VALUE_DRAW_ID))
315 return nir_shader_instructions_pass(shader, lower_drawid_instr, nir_metadata_dominance, NULL);
319 lower_dual_blend(nir_shader *shader)
322 nir_variable *var = nir_find_variable_with_location(shader, nir_var_shader_out, FRAG_RESULT_DATA1);
328 nir_shader_preserve_all_metadata(shader);
395 enum pipe_shader_type shader)
405 fprintf(stderr, "TGSI shader:\n---8<---\n");
480 get_bo_vars(struct zink_shader *zs, nir_shader *shader)
490 nir_foreach_variable_with_modes(var, shader, nir_var_mem_ssbo | nir_var_mem_ubo) {
570 bound_bo_access(nir_shader *shader, struct zink_shader *zs)
572 struct bo_vars bo = get_bo_vars(zs, shader);
573 return nir_shader_instructions_pass(shader, bound_bo_access_instr, nir_metadata_dominance, &bo);
635 nir_variable *fbfetch = nir_variable_clone(var, b->shader);
647 nir_shader_add_variable(b->shader, fbfetch);
656 lower_fbfetch(nir_shader *shader, nir_variable **fbfetch, bool ms)
658 nir_foreach_shader_out_variable(var, shader) {
667 return nir_shader_instructions_pass(shader, lower_fbfetch_instr, nir_metadata_dominance, (void*)ms);
966 /* ensure this doesn't get output in the shader by unsetting location */
1160 rewrite_bo_access(nir_shader *shader, struct zink_screen *screen)
1162 return nir_shader_instructions_pass(shader, rewrite_bo_access_instr, nir_metadata_dominance, screen);
1166 get_bo_var(nir_shader *shader, struct bo_vars *bo, bool ssbo, nir_src *src, unsigned bit_size)
1189 var = nir_variable_clone(var, shader);
1191 nir_shader_add_variable(shader, var);
1193 struct glsl_struct_field *fields = rzalloc_array(shader, struct glsl_struct_field, 2);
1194 fields[0].name = ralloc_strdup(shader, "base");
1195 fields[1].name = ralloc_strdup(shader, "unsized");
1257 nir_variable *var = get_bo_var(b->shader, bo, true, src, nir_dest_bit_size(intr->dest));
1270 nir_intrinsic_instr *new_instr = nir_intrinsic_instr_create(b->shader, op);
1315 var = get_bo_var(b->shader, bo, true, src, nir_src_bit_size(intr->src[0]));
1321 var = get_bo_var(b->shader, bo, true, src, nir_dest_bit_size(intr->dest));
1326 var = get_bo_var(b->shader, bo, false, src, nir_dest_bit_size(intr->dest));
1364 remove_bo_access(nir_shader *shader, struct zink_shader *zs)
1366 struct bo_vars bo = get_bo_vars(zs, shader);
1367 return nir_shader_instructions_pass(shader, remove_bo_access_instr, nir_metadata_dominance, &bo);
1609 lower_64bit_vars(nir_shader *shader)
1614 nir_foreach_variable_with_modes(var, shader, nir_var_shader_in | nir_var_shader_out) {
1617 var->type = rewrite_64bit_type(shader, var->type, var);
1619 nir_foreach_function(function, shader) {
1651 deref->type = rewrite_64bit_type(shader, deref->type, var);
1835 nir_lower_alu_to_scalar(shader, filter_64_bit_instr, NULL);
1836 nir_lower_phis_to_scalar(shader, false);
1837 optimize_nir(shader, NULL);
2208 lower_baseinstance(nir_shader *shader)
2210 if (shader->info.stage != MESA_SHADER_VERTEX)
2212 return nir_shader_instructions_pass(shader, lower_baseinstance_instr, nir_metadata_dominance, NULL);
2219 unbreak_bos(nir_shader *shader, struct zink_shader *zs, bool needs_size)
2225 if (!shader->info.num_ssbos && !shader->info.num_ubos)
2228 nir_foreach_variable_with_modes(var, shader, nir_var_mem_ssbo | nir_var_mem_ubo) {
2254 nir_fixup_deref_modes(shader);
2255 NIR_PASS_V(shader, nir_remove_dead_variables, nir_var_shader_temp, NULL);
2256 optimize_nir(shader, NULL);
2258 struct glsl_struct_field *fields = rzalloc_array(shader, struct glsl_struct_field, 2);
2259 fields[0].name = ralloc_strdup(shader, "base");
2260 fields[1].name = ralloc_strdup(shader, "unsized");
2261 if (shader->info.num_ubos) {
2262 if (shader->num_uniforms && zs->ubos_used & BITFIELD_BIT(0)) {
2264 nir_variable *var = nir_variable_create(shader, nir_var_mem_ubo,
2272 unsigned num_ubos = shader->info.num_ubos - !!shader->info.first_ubo_is_default_ubo;
2281 nir_variable *var = nir_variable_create(shader, nir_var_mem_ubo,
2286 var->data.driver_location = first_ubo + !!shader->info.first_ubo_is_default_ubo;
2289 if (shader->info.num_ssbos && zs->ssbos_used) {
2293 unsigned num_ssbos = shader->info.num_ssbos - first_ssbo;
2300 nir_variable *var = nir_variable_create(shader, nir_var_mem_ssbo,
2327 analyze_io(struct zink_shader *zs, nir_shader *shader)
2330 nir_function_impl *impl = nir_shader_get_entrypoint(shader);
2339 zs->ssbos_used |= get_src_mask_ssbo(shader->info.num_ssbos, intrin->src[1]);
2343 zs->ssbos_used |= get_src_mask_ssbo(shader->info.num_ssbos, intrin->src[0]);
2362 zs->ssbos_used |= get_src_mask_ssbo(shader->info.num_ssbos, intrin->src[0]);
2366 zs->ubos_used |= get_src_mask_ubo(shader->info.num_ubos, intrin->src[0]);
2381 /* this is a "default" bindless texture used if the shader has no texture variables */
2395 /* this is a "default" bindless image used if the shader has no image variables */
2424 var = create_bindless_texture(b->shader, tex, bindless->bindless_set);
2433 * this results in cases where a shader is passed with sampler2DArray but the tex instr only has
2490 var = create_bindless_image(b->shader, dim, bindless->bindless_set);
2501 lower_bindless(nir_shader *shader, struct zink_bindless_info *bindless)
2503 if (!nir_shader_instructions_pass(shader, lower_bindless_instr, nir_metadata_dominance, bindless))
2505 nir_fixup_deref_modes(shader);
2506 NIR_PASS_V(shader, nir_remove_dead_variables, nir_var_shader_temp, NULL);
2507 optimize_nir(shader, NULL);
2511 /* convert shader image/texture io variables to int64 handles for bindless indexing */
2548 lower_bindless_io(nir_shader *shader)
2550 return nir_shader_instructions_pass(shader, lower_bindless_io_instr, nir_metadata_dominance, NULL);
2723 lower_1d_shadow(nir_shader *shader, struct zink_screen *screen)
2726 nir_foreach_variable_with_modes(var, shader, nir_var_uniform | nir_var_image) {
2737 nir_shader_instructions_pass(shader, convert_1d_shadow_tex, nir_metadata_dominance, screen);
2742 scan_nir(struct zink_screen *screen, nir_shader *shader, struct zink_shader *zs)
2744 nir_foreach_function(function, shader) {
2781 BITSET_SET_RANGE(shader->info.images_used, var->data.binding,
2885 lower_sparse(nir_shader *shader)
2887 return nir_shader_instructions_pass(shader, lower_sparse_instr, nir_metadata_dominance, NULL);
2903 nir_foreach_variable_with_modes(img, b->shader, nir_var_uniform) {
2960 match_tex_dests(nir_shader *shader)
2962 return nir_shader_instructions_pass(shader, match_tex_dests_instr, nir_metadata_dominance, NULL);
3010 split_bitfields(nir_shader *shader)
3012 return nir_shader_instructions_pass(shader, split_bitfields_instr, nir_metadata_dominance, NULL);
3091 fprintf(stderr, "NIR shader:\n---8<---\n");
3247 zink_shader_free(struct zink_context *ctx, struct zink_shader *shader)
3249 set_foreach(shader->programs, entry) {
3250 if (shader->nir->info.stage == MESA_SHADER_COMPUTE) {
3253 _mesa_hash_table_remove_key(&ctx->compute_program_cache, comp->shader);
3256 comp->shader = NULL;
3260 enum pipe_shader_type pstage = pipe_shader_type_from_mesa(shader->nir->info.stage);
3262 if (!prog->base.removed && (shader->nir->info.stage != MESA_SHADER_TESS_CTRL || !shader->is_generated)) {
3272 if (shader->nir->info.stage != MESA_SHADER_TESS_CTRL || !shader->is_generated)
3275 if (shader->nir->info.stage == MESA_SHADER_TESS_EVAL && shader->generated)
3280 if (shader->nir->info.stage == MESA_SHADER_TESS_EVAL && shader->generated) {
3282 zink_shader_free(ctx, shader->generated);
3283 shader->generated = NULL;
3285 _mesa_set_destroy(shader->programs, NULL);
3286 ralloc_free(shader->nir);
3287 ralloc_free(shader->spirv);
3288 FREE(shader);
3301 /* creating a passthrough tcs shader that's roughly:
3356 variables written by the vertex shader (section 2.14.7). Each array