nir/lower_doubles: Inline functions directly in lower_doubles
[mesa.git] / src / intel / vulkan / anv_nir_lower_input_attachments.c
index 81e5ad53eaa0c0e1d109856527cd1efec0475d51..9c6f9f434d752728a4043304f00b82f2ab020658 100644 (file)
@@ -35,7 +35,14 @@ load_frag_coord(nir_builder *b)
    nir_variable *pos = nir_variable_create(b->shader, nir_var_shader_in,
                                            glsl_vec4_type(), NULL);
    pos->data.location = VARYING_SLOT_POS;
-   pos->data.origin_upper_left = true;
+   /**
+    * From Vulkan spec:
+    *   "The OriginLowerLeft execution mode must not be used; fragment entry
+    *    points must declare OriginUpperLeft."
+    *
+    * So at this point origin_upper_left should be true
+    */
+   assert(b->shader->info.fs.origin_upper_left == true);
 
    return nir_load_var(b, pos);
 }
@@ -55,14 +62,13 @@ try_lower_input_load(nir_function_impl *impl, nir_intrinsic_instr *load)
 
    nir_builder b;
    nir_builder_init(&b, impl);
-   b.cursor = nir_before_instr(&load->instr);
+   b.cursor = nir_instr_remove(&load->instr);
 
    nir_ssa_def *frag_coord = nir_f2i32(&b, load_frag_coord(&b));
    nir_ssa_def *offset = nir_ssa_for_src(&b, load->src[1], 2);
    nir_ssa_def *pos = nir_iadd(&b, frag_coord, offset);
 
-   nir_ssa_def *layer =
-      nir_load_system_value(&b, nir_intrinsic_load_layer_id, 0);
+   nir_ssa_def *layer = nir_load_layer_id(&b);
    nir_ssa_def *coord =
       nir_vec3(&b, nir_channel(&b, pos, 0), nir_channel(&b, pos, 1), layer);
 
@@ -122,7 +128,7 @@ anv_nir_lower_input_attachments(nir_shader *shader)
          continue;
 
       nir_foreach_block(block, function->impl) {
-         nir_foreach_instr(instr, block) {
+         nir_foreach_instr_safe(instr, block) {
             if (instr->type != nir_instr_type_intrinsic)
                continue;