summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
41d0a81)
The semantics of inputs for CL are a closer match to the semantics of uniforms for graphics.
Rather than cross-stage data, it's data that every thread sees uniformly.
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Karol Herbst <kherbst@redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6497>
assert(addr_format_is_global(addr_format));
op = nir_intrinsic_load_global;
break;
assert(addr_format_is_global(addr_format));
op = nir_intrinsic_load_global;
break;
- case nir_var_shader_in:
assert(addr_format_is_offset(addr_format));
assert(addr_format_is_offset(addr_format));
+ assert(b->shader->info.stage == MESA_SHADER_KERNEL);
op = nir_intrinsic_load_kernel_input;
break;
case nir_var_mem_shared:
op = nir_intrinsic_load_kernel_input;
break;
case nir_var_mem_shared:
assert(deref->dest.is_ssa);
switch (deref->deref_type) {
case nir_deref_type_var:
assert(deref->dest.is_ssa);
switch (deref->deref_type) {
case nir_deref_type_var:
- assert(deref->mode & (nir_var_shader_in | nir_var_mem_shared |
+ assert(deref->mode & (nir_var_uniform | nir_var_mem_shared |
nir_var_shader_temp | nir_var_function_temp));
if (addr_format_is_global(addr_format)) {
assert(nir_var_shader_temp | nir_var_function_temp);
nir_var_shader_temp | nir_var_function_temp));
if (addr_format_is_global(addr_format)) {
assert(nir_var_shader_temp | nir_var_function_temp);
/* input variable */
nir_variable *in_var = rzalloc(b->nb.shader, nir_variable);
/* input variable */
nir_variable *in_var = rzalloc(b->nb.shader, nir_variable);
- in_var->data.mode = nir_var_shader_in;
+ in_var->data.mode = nir_var_uniform;
in_var->data.read_only = true;
in_var->data.location = i;
in_var->data.read_only = true;
in_var->data.location = i;
const glsl_type *type = glsl_uint_type();
for (uint32_t i = 0; i < 3; i++) {
state->offset_vars[i] =
const glsl_type *type = glsl_uint_type();
for (uint32_t i = 0; i < 3; i++) {
state->offset_vars[i] =
- nir_variable_create(b->shader, nir_var_shader_in, type,
+ nir_variable_create(b->shader, nir_var_uniform, type,
"global_invocation_id_offsets");
"global_invocation_id_offsets");
- state->offset_vars[i]->data.location = b->shader->num_inputs++;
+ state->offset_vars[i]->data.location = b->shader->num_uniforms++;
// Calculate input offsets.
unsigned offset = 0;
// Calculate input offsets.
unsigned offset = 0;
- nir_foreach_shader_in_variable(var, nir) {
+ nir_foreach_uniform_variable(var, nir) {
offset = align(offset, glsl_get_cl_alignment(var->type));
var->data.driver_location = offset;
offset += glsl_get_cl_size(var->type);
offset = align(offset, glsl_get_cl_alignment(var->type));
var->data.driver_location = offset;
offset += glsl_get_cl_size(var->type);
NIR_PASS_V(nir, nir_lower_vars_to_explicit_types, nir_var_mem_shared,
glsl_get_cl_type_size_align);
NIR_PASS_V(nir, nir_lower_vars_to_explicit_types, nir_var_mem_shared,
glsl_get_cl_type_size_align);
- /* use offsets for shader_in and shared memory */
- NIR_PASS_V(nir, nir_lower_explicit_io, nir_var_shader_in,
+ /* use offsets for uniform and shared memory */
+ NIR_PASS_V(nir, nir_lower_explicit_io, nir_var_uniform,
nir_address_format_32bit_offset);
NIR_PASS_V(nir, nir_lower_explicit_io, nir_var_mem_shared,
nir_address_format_32bit_offset);
NIR_PASS_V(nir, nir_lower_explicit_io, nir_var_mem_shared,