Lines Matching full:zs
1460 get_bo_vars(struct zink_shader *zs, nir_shader *shader) in get_bo_vars() argument
1464 if (zs->ubos_used) in get_bo_vars()
1465 bo.first_ubo = ffs(zs->ubos_used & ~BITFIELD_BIT(0)) - 2; in get_bo_vars()
1467 if (zs->ssbos_used) in get_bo_vars()
1468 bo.first_ssbo = ffs(zs->ssbos_used) - 1; in get_bo_vars()
1550 bound_bo_access(nir_shader *shader, struct zink_shader *zs) in bound_bo_access() argument
1552 struct bo_vars bo = get_bo_vars(zs, shader); in bound_bo_access()
1557 optimize_nir(struct nir_shader *s, struct zink_shader *zs, bool can_shrink) in optimize_nir() argument
1584 if (zs) in optimize_nir()
1585 NIR_PASS(progress, s, bound_bo_access, zs); in optimize_nir()
1890 update_so_info(struct zink_shader *zs, nir_shader *nir, uint64_t outputs_written, bool have_psiz) in update_so_info() argument
1902 zs->sinfo.stride[output->buffer] = nir->xfb_info->buffers[output->buffer].stride; in update_so_info()
1937 var->data.xfb.stride = zs->sinfo.stride[output->buffer]; in update_so_info()
2007 var->data.xfb.stride = zs->sinfo.stride[output->buffer]; in update_so_info()
2383 remove_bo_access(nir_shader *shader, struct zink_shader *zs) in remove_bo_access() argument
2385 struct bo_vars bo = get_bo_vars(zs, shader); in remove_bo_access()
3297 zink_shader_dump(const struct zink_shader *zs, void *words, size_t size, const char *file) in zink_shader_dump() argument
3303 … fprintf(stderr, "wrote %s shader '%s'...\n", _mesa_shader_stage_to_string(zs->info.stage), file); in zink_shader_dump()
3332 zink_shader_spirv_compile(struct zink_screen *screen, struct zink_shader *zs, struct spirv_shader *… in zink_shader_spirv_compile() argument
3338 spirv = zs->spirv; in zink_shader_spirv_compile()
3344 zink_shader_dump(zs, spirv->words, spirv->num_words * sizeof(uint32_t), buf); in zink_shader_spirv_compile()
3348 sci.stage = mesa_to_vk_shader_stage(zs->info.stage); in zink_shader_spirv_compile()
3349 sci.nextStage = zink_get_next_stage(zs->info.stage); in zink_shader_spirv_compile()
3359 sci.setLayoutCount = zs->info.stage + 1; in zink_shader_spirv_compile()
3360 dsl[zs->info.stage] = zs->precompile.dsl;; in zink_shader_spirv_compile()
3390 if (!zs->info.workgroup_size[0]) { in zink_shader_spirv_compile()
3405 clamp_stage(&zs->info), "main", &spirv_options, &screen->nir_options); in zink_shader_spirv_compile()
3438 flag_shadow_tex(nir_variable *var, struct zink_shader *zs) in flag_shadow_tex() argument
3441 zs->fs.legacy_shadow_mask |= BITFIELD_BIT(var->data.driver_location); in flag_shadow_tex()
3445 flag_shadow_tex_instr(nir_builder *b, nir_tex_instr *tex, nir_variable *var, struct zink_shader *zs) in flag_shadow_tex_instr() argument
3453 flag_shadow_tex(var, zs); in flag_shadow_tex_instr()
3460 rewrite_tex_dest(nir_builder *b, nir_tex_instr *tex, nir_variable *var, struct zink_shader *zs) in rewrite_tex_dest() argument
3474 if (rewrite_depth && zs) { in rewrite_tex_dest()
3882 compile_module(struct zink_screen *screen, struct zink_shader *zs, nir_shader *nir, bool can_shobj,… in compile_module() argument
3884 struct zink_shader_info *sinfo = &zs->sinfo; in compile_module()
3908 obj = zink_shader_spirv_compile(screen, zs, spirv, can_shobj, pg); in compile_module()
3911 if (zs->info.stage == MESA_SHADER_TESS_CTRL && zs->non_fs.is_generated) in compile_module()
3912 zs->spirv = spirv; in compile_module()
3932 zink_shader_compile(struct zink_screen *screen, bool can_shobj, struct zink_shader *zs, in zink_shader_compile() argument
3953 switch (zs->info.stage) { in zink_shader_compile()
4006 switch (zs->info.stage) { in zink_shader_compile()
4041 if (!zink_fs_key_base(key)->samples && zink_shader_uses_samples(zs)) { in zink_shader_compile()
4069 if (zs->fs.legacy_shadow_mask && !key->base.needs_zs_shader_swizzle) in zink_shader_compile()
4108 NIR_PASS_V(nir, remove_bo_access, zs); in zink_shader_compile()
4112 optimize_nir(nir, zs, true); in zink_shader_compile()
4120 zs->can_inline = false; in zink_shader_compile()
4122 optimize_nir(nir, zs, true); in zink_shader_compile()
4126 optimize_nir(nir, zs, false); in zink_shader_compile()
4128 struct zink_shader_object obj = compile_module(screen, zs, nir, can_shobj, pg); in zink_shader_compile()
4134 zink_shader_compile_separate(struct zink_screen *screen, struct zink_shader *zs) in zink_shader_compile_separate() argument
4136 nir_shader *nir = zs->nir; in zink_shader_compile_separate()
4138 int set = zs->info.stage == MESA_SHADER_FRAGMENT; in zink_shader_compile_separate()
4140 set = zs->info.stage; in zink_shader_compile_separate()
4142 zink_descriptor_shader_get_binding_offsets(zs, offsets); in zink_shader_compile_separate()
4169 NIR_PASS_V(nir, remove_bo_access, zs); in zink_shader_compile_separate()
4171 optimize_nir(nir, zs, true); in zink_shader_compile_separate()
4172 zink_descriptor_shader_init(screen, zs); in zink_shader_compile_separate()
4176 struct zink_shader_object obj = compile_module(screen, zs, nir, true, NULL); in zink_shader_compile_separate()
4177 if (screen->info.have_EXT_shader_object && !zs->info.internal) { in zink_shader_compile_separate()
4179 if (zs->info.stage == MESA_SHADER_TESS_EVAL) { in zink_shader_compile_separate()
4182 zs->non_fs.generated_tcs = zink_shader_tcs_create(screen, 32); in zink_shader_compile_separate()
4183 zink_shader_tcs_init(screen, zs->non_fs.generated_tcs, nir_clone, &nir_tcs); in zink_shader_compile_separate()
4185 …zs->non_fs.generated_tcs->precompile.obj = zink_shader_compile_separate(screen, zs->non_fs.generat… in zink_shader_compile_separate()
4187 zs->non_fs.generated_tcs->nir = NULL; in zink_shader_compile_separate()
4220 unbreak_bos(nir_shader *shader, struct zink_shader *zs, bool needs_size) in unbreak_bos() argument
4270 if (shader->num_uniforms && zs->ubos_used & BITFIELD_BIT(0)) { in unbreak_bos()
4281 uint32_t ubos_used = zs->ubos_used & ~BITFIELD_BIT(0); in unbreak_bos()
4297 if (shader->info.num_ssbos && zs->ssbos_used) { in unbreak_bos()
4299 unsigned first_ssbo = ffs(zs->ssbos_used) - 1; in unbreak_bos()
4332 analyze_io(struct zink_shader *zs, nir_shader *shader) in analyze_io() argument
4355 zs->ssbos_used |= get_src_mask_ssbo(shader->info.num_ssbos, intrin->src[1]); in analyze_io()
4359 zs->ssbos_used |= get_src_mask_ssbo(shader->info.num_ssbos, intrin->src[0]); in analyze_io()
4366 zs->ssbos_used |= get_src_mask_ssbo(shader->info.num_ssbos, intrin->src[0]); in analyze_io()
4370 zs->ubos_used |= get_src_mask_ubo(shader->info.num_ubos, intrin->src[0]); in analyze_io()
4707 scan_nir(struct zink_screen *screen, nir_shader *shader, struct zink_shader *zs) in scan_nir() argument
4714 zs->sinfo.have_sparse |= tex->is_sparse; in scan_nir()
4739 zs->sinfo.have_sparse = true; in scan_nir()
4748 zs->arrayed_inputs |= BITFIELD64_BIT(s.location); in scan_nir()
4750 zs->arrayed_outputs |= BITFIELD64_BIT(s.location); in scan_nir()
4825 match_tex_dests(nir_shader *shader, struct zink_shader *zs, bool pre_mangle) in match_tex_dests() argument
4827 …, pre_mangle ? match_tex_dests_instr_pre : match_tex_dests_instr_post, nir_metadata_dominance, zs); in match_tex_dests()
5464 rework_io_vars(nir_shader *nir, nir_variable_mode mode, struct zink_shader *zs) in rework_io_vars() argument
5546 ….arrayed_io = (mode == nir_var_shader_in ? zs->arrayed_inputs : zs->arrayed_outputs) & BITFIELD64_… in rework_io_vars()
6130 struct zink_shader *zs = rzalloc(NULL, struct zink_shader); in zink_shader_create() local
6132 zs->has_edgeflags = nir->info.stage == MESA_SHADER_VERTEX && in zink_shader_create()
6135 zs->sinfo.have_vulkan_memory_model = screen->info.have_KHR_vulkan_memory_model; in zink_shader_create()
6136 …zs->sinfo.have_workgroup_memory_explicit_layout = screen->info.have_KHR_workgroup_memory_explicit_… in zink_shader_create()
6137 zs->sinfo.broken_arbitary_type_const = screen->driver_compiler_workarounds.broken_const; in zink_shader_create()
6140 zs->sinfo.float_controls.flush_denorms |= 0x1; in zink_shader_create()
6142 zs->sinfo.float_controls.flush_denorms |= 0x2; in zink_shader_create()
6144 zs->sinfo.float_controls.flush_denorms |= 0x4; in zink_shader_create()
6147 zs->sinfo.float_controls.preserve_denorms |= 0x1; in zink_shader_create()
6149 zs->sinfo.float_controls.preserve_denorms |= 0x2; in zink_shader_create()
6151 zs->sinfo.float_controls.preserve_denorms |= 0x4; in zink_shader_create()
6153 zs->sinfo.float_controls.denorms_all_independence = in zink_shader_create()
6156 zs->sinfo.float_controls.denorms_32_bit_independence = in zink_shader_create()
6157 zs->sinfo.float_controls.denorms_all_independence || in zink_shader_create()
6160 zs->sinfo.bindless_set_idx = screen->desc_set_id[ZINK_DESCRIPTOR_BINDLESS]; in zink_shader_create()
6162 util_queue_fence_init(&zs->precompile.fence); in zink_shader_create()
6163 util_dynarray_init(&zs->pipeline_libs, zs); in zink_shader_create()
6164 zs->hash = _mesa_hash_pointer(zs); in zink_shader_create()
6166 zs->programs = _mesa_pointer_set_create(NULL); in zink_shader_create()
6167 simple_mtx_init(&zs->lock, mtx_plain); in zink_shader_create()
6168 memcpy(&zs->info, &nir->info, sizeof(nir->info)); in zink_shader_create()
6169 zs->info.name = ralloc_strdup(zs, nir->info.name); in zink_shader_create()
6171 zs->can_inline = true; in zink_shader_create()
6172 zs->nir = nir; in zink_shader_create()
6175 match_tex_dests(nir, zs, true); in zink_shader_create()
6177 return zs; in zink_shader_create()
6181 zink_shader_init(struct zink_screen *screen, struct zink_shader *zs) in zink_shader_init() argument
6184 nir_shader *nir = zs->nir; in zink_shader_init()
6214 scan_nir(screen, nir, zs); in zink_shader_init()
6218 rework_io_vars(nir, nir_var_shader_in, zs); in zink_shader_init()
6219 rework_io_vars(nir, nir_var_shader_out, zs); in zink_shader_init()
6234 zs->flat_flags = zink_flat_flags(nir); in zink_shader_init()
6270 bool needs_size = analyze_io(zs, nir); in zink_shader_init()
6271 NIR_PASS_V(nir, unbreak_bos, zs, needs_size); in zink_shader_init()
6276 NIR_PASS_V(nir, remove_bo_access, zs); in zink_shader_init()
6314 zs->has_uniforms = true; in zink_shader_init()
6316 zs->bindings[ztype][zs->num_bindings[ztype]].index = var->data.driver_location; in zink_shader_init()
6317 zs->bindings[ztype][zs->num_bindings[ztype]].binding = binding; in zink_shader_init()
6318 zs->bindings[ztype][zs->num_bindings[ztype]].type = vktype; in zink_shader_init()
6319 zs->bindings[ztype][zs->num_bindings[ztype]].size = glsl_get_length(var->type); in zink_shader_init()
6320 assert(zs->bindings[ztype][zs->num_bindings[ztype]].size); in zink_shader_init()
6321 zs->num_bindings[ztype]++; in zink_shader_init()
6332 zs->bindings[ztype][zs->num_bindings[ztype]].index = var->data.driver_location; in zink_shader_init()
6333 zs->bindings[ztype][zs->num_bindings[ztype]].binding = var->data.binding; in zink_shader_init()
6334 … zs->bindings[ztype][zs->num_bindings[ztype]].type = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER; in zink_shader_init()
6335 zs->bindings[ztype][zs->num_bindings[ztype]].size = glsl_get_length(var->type); in zink_shader_init()
6336 assert(zs->bindings[ztype][zs->num_bindings[ztype]].size); in zink_shader_init()
6337 zs->num_bindings[ztype]++; in zink_shader_init()
6344 zs->bindless = true; in zink_shader_init()
6354 zs->bindings[ztype][zs->num_bindings[ztype]].index = var->data.driver_location; in zink_shader_init()
6355 zs->bindings[ztype][zs->num_bindings[ztype]].binding = var->data.binding; in zink_shader_init()
6356 zs->bindings[ztype][zs->num_bindings[ztype]].type = vktype; in zink_shader_init()
6358 zs->bindings[ztype][zs->num_bindings[ztype]].size = glsl_get_aoa_size(var->type); in zink_shader_init()
6360 zs->bindings[ztype][zs->num_bindings[ztype]].size = 1; in zink_shader_init()
6361 zs->num_bindings[ztype]++; in zink_shader_init()
6372 zs->bindless |= bindless_lowered; in zink_shader_init()
6377 NIR_PASS_V(nir, match_tex_dests, zs, false); in zink_shader_init()
6383 update_so_info(zs, nir, nir->info.outputs_written, have_psiz); in zink_shader_init()
6384 zink_shader_serialize_blob(nir, &zs->blob); in zink_shader_init()
6385 memcpy(&zs->info, &nir->info, sizeof(nir->info)); in zink_shader_init()
6537 zink_shader_tcs_compile(struct zink_screen *screen, struct zink_shader *zs, unsigned patch_vertices… in zink_shader_tcs_compile() argument
6539 assert(zs->info.stage == MESA_SHADER_TESS_CTRL); in zink_shader_tcs_compile()
6541 zs->spirv->words[zs->spirv->tcs_vertices_out_word] = patch_vertices; in zink_shader_tcs_compile()
6542 return zink_shader_spirv_compile(screen, zs, NULL, can_shobj, pg); in zink_shader_tcs_compile()
6567 zink_shader_tcs_init(struct zink_screen *screen, struct zink_shader *zs, nir_shader *tes, nir_shade… in zink_shader_tcs_init() argument
6569 nir_shader *nir = zs->nir; in zink_shader_tcs_init()
6635 zink_shader_serialize_blob(nir, &zs->blob); in zink_shader_tcs_init()
6641 struct zink_shader *zs = rzalloc(NULL, struct zink_shader); in zink_shader_tcs_create() local
6642 util_queue_fence_init(&zs->precompile.fence); in zink_shader_tcs_create()
6643 zs->hash = _mesa_hash_pointer(zs); in zink_shader_tcs_create()
6644 zs->programs = _mesa_pointer_set_create(NULL); in zink_shader_tcs_create()
6645 simple_mtx_init(&zs->lock, mtx_plain); in zink_shader_tcs_create()
6651 zs->nir = nir; in zink_shader_tcs_create()
6654 memcpy(&zs->info, &nir->info, sizeof(nir->info)); in zink_shader_tcs_create()
6655 zs->non_fs.is_generated = true; in zink_shader_tcs_create()
6656 return zs; in zink_shader_tcs_create()
6679 zink_shader_deserialize(struct zink_screen *screen, struct zink_shader *zs) in zink_shader_deserialize() argument
6681 return zink_shader_blob_deserialize(screen, &zs->blob); in zink_shader_deserialize()
6697 zink_print_shader(struct zink_screen *screen, struct zink_shader *zs, FILE *fp) in zink_print_shader() argument
6699 nir_shader *nir = zink_shader_deserialize(screen, zs); in zink_print_shader()