Lines Matching defs:ptr
34 vtn_align_pointer(struct vtn_builder *b, struct vtn_pointer *ptr,
38 return ptr;
50 if (ptr->deref == NULL)
51 return ptr;
56 nir_address_format addr_format = vtn_mode_to_address_format(b, ptr->mode);
58 return ptr;
61 *copy = *ptr;
62 copy->deref = nir_alignment_deref_cast(&b->nb, ptr->deref, alignment, 0);
71 struct vtn_pointer *ptr = void_ptr;
75 ptr->access |= ACCESS_NON_UNIFORM;
110 struct vtn_pointer *ptr)
115 ptr = vtn_align_pointer(b, ptr, aa.alignment);
121 if (aa.access & ~ptr->access) {
123 *copy = *ptr;
128 return ptr;
133 struct vtn_pointer *ptr)
136 val->pointer = vtn_decorate_pointer(b, val, ptr);
192 struct vtn_pointer *ptr)
194 return ptr->mode == vtn_variable_mode_ssbo ||
195 ptr->mode == vtn_variable_mode_ubo ||
196 ptr->mode == vtn_variable_mode_phys_ssbo;
394 struct vtn_pointer *ptr = rzalloc(b, struct vtn_pointer);
395 ptr->mode = base->mode;
396 ptr->type = type;
397 ptr->block_index = block_index;
398 ptr->access = access;
399 return ptr;
467 struct vtn_pointer *ptr = rzalloc(b, struct vtn_pointer);
468 ptr->mode = base->mode;
469 ptr->type = type;
470 ptr->var = base->var;
471 ptr->deref = tail;
472 ptr->access = access;
474 return ptr;
478 vtn_pointer_to_deref(struct vtn_builder *b, struct vtn_pointer *ptr)
480 if (!ptr->deref) {
484 ptr = vtn_pointer_dereference(b, ptr, &chain);
487 return ptr->deref;
522 struct vtn_pointer *ptr = vtn_pointer(b, id);
523 return vtn_pointer_to_deref(b, ptr);
581 vtn_pointer_to_descriptor(struct vtn_builder *b, struct vtn_pointer *ptr)
583 assert(ptr->mode == vtn_variable_mode_accel_struct);
584 if (!ptr->block_index) {
588 ptr = vtn_pointer_dereference(b, ptr, &chain);
591 vtn_assert(ptr->deref == NULL && ptr->block_index != NULL);
592 return vtn_descriptor_load(b, ptr->mode, ptr->block_index);
597 struct vtn_pointer *ptr,
601 if (ptr->mode == vtn_variable_mode_uniform ||
602 ptr->mode == vtn_variable_mode_image) {
603 if (ptr->type->base_type == vtn_base_type_image ||
604 ptr->type->base_type == vtn_base_type_sampler) {
607 (*inout)->def = vtn_pointer_to_ssa(b, ptr);
609 } else if (ptr->type->base_type == vtn_base_type_sampled_image) {
613 .image = vtn_pointer_to_deref(b, ptr),
614 .sampler = vtn_pointer_to_deref(b, ptr),
619 } else if (ptr->mode == vtn_variable_mode_accel_struct) {
621 (*inout)->def = vtn_pointer_to_descriptor(b, ptr);
625 enum glsl_base_type base_type = glsl_get_base_type(ptr->type->type);
639 if (glsl_type_is_vector_or_scalar(ptr->type->type)) {
641 nir_deref_instr *deref = vtn_pointer_to_deref(b, ptr);
642 if (vtn_mode_is_cross_invocation(b, ptr->mode)) {
654 ptr->type->access | access);
657 ptr->type->access | access);
661 *inout = vtn_local_load(b, deref, ptr->type->access | access);
663 vtn_local_store(b, *inout, deref, ptr->type->access | access);
673 unsigned elems = glsl_get_length(ptr->type->type);
682 struct vtn_pointer *elem = vtn_pointer_dereference(b, ptr, &chain);
683 _vtn_variable_load_store(b, load, elem, ptr->type->access | access,
1691 vtn_pointer_to_ssa(struct vtn_builder *b, struct vtn_pointer *ptr)
1693 if ((vtn_pointer_is_external_block(b, ptr) &&
1694 vtn_type_contains_block(b, ptr->type) &&
1695 ptr->mode != vtn_variable_mode_phys_ssbo) ||
1696 ptr->mode == vtn_variable_mode_accel_struct) {
1709 if (!ptr->block_index) {
1713 vtn_assert(!ptr->deref);
1718 ptr = vtn_pointer_dereference(b, ptr, &chain);
1721 return ptr->block_index;
1723 return &vtn_pointer_to_deref(b, ptr)->dest.ssa;
1733 struct vtn_pointer *ptr = rzalloc(b, struct vtn_pointer);
1738 ptr->mode = vtn_storage_class_to_mode(b, ptr_type->storage_class,
1740 ptr->type = ptr_type->deref;
1741 ptr->ptr_type = ptr_type;
1744 vtn_type_get_nir_type(b, ptr_type->deref, ptr->mode);
1745 if (!vtn_pointer_is_external_block(b, ptr) &&
1746 ptr->mode != vtn_variable_mode_accel_struct) {
1747 ptr->deref = nir_build_deref_cast(&b->nb, ssa, nir_mode,
1749 } else if ((vtn_type_contains_block(b, ptr->type) &&
1750 ptr->mode != vtn_variable_mode_phys_ssbo) ||
1751 ptr->mode == vtn_variable_mode_accel_struct) {
1756 ptr->block_index = ssa;
1770 ptr->deref = nir_build_deref_cast(&b->nb, ssa, nir_mode,
1772 ptr->deref->dest.ssa.num_components =
1774 ptr->deref->dest.ssa.bit_size = glsl_get_bit_size(ptr_type->type);
1777 return ptr;
2473 struct vtn_pointer *ptr = vtn_pointer_dereference(b, base, chain);
2474 ptr->ptr_type = ptr_type;
2475 ptr->access |= access;
2476 vtn_push_pointer(b, w[2], ptr);
2608 struct vtn_pointer *ptr = vtn_pointer(b, w[3]);
2611 vtn_fail_if(ptr->type->base_type != vtn_base_type_struct,
2613 vtn_fail_if(field != ptr->type->length - 1 ||
2614 ptr->type->members[field]->base_type != vtn_base_type_array,
2625 struct vtn_pointer *array = vtn_pointer_dereference(b, ptr, &chain);
2630 .access=ptr->access | ptr->type->access);
2634 const uint32_t offset = ptr->type->offsets[field];
2635 const uint32_t stride = ptr->type->members[field]->stride;
2637 if (!ptr->block_index) {
2641 ptr = vtn_pointer_dereference(b, ptr, &chain);
2642 vtn_assert(ptr->block_index);
2645 nir_ssa_def *buf_size = nir_get_ssbo_size(&b->nb, ptr->block_index,
2646 .access=ptr->access | ptr->type->access);
2675 nir_ssa_def *ptr = vtn_get_nir_ssa(b, w[3]);
2676 nir_ssa_def *u = nir_sloppy_bitcast(&b->nb, ptr, u_type->type);
2695 nir_ssa_def *ptr = nir_sloppy_bitcast(&b->nb, u, ptr_type->type);
2696 vtn_push_pointer(b, w[2], vtn_pointer_from_ssa(b, ptr, ptr_type));