i965/vec4: Use a stride of 1 and byte offsets for UBOs
authorJason Ekstrand <jason.ekstrand@intel.com>
Mon, 2 Nov 2015 19:33:12 +0000 (11:33 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Tue, 8 Dec 2015 05:51:23 +0000 (21:51 -0800)
Cc: "11.0" <mesa-stable@lists.freedesktop.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92909
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_vec4_nir.cpp
src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
src/mesa/drivers/dri/i965/brw_wm_surface_state.c

index 80925f9c9857b1941e580ba9e8e17399d40156eb..d4eda4a3277052820967915a93c8b5bc64f7e10e 100644 (file)
@@ -759,20 +759,10 @@ vec4_visitor::nir_emit_intrinsic(nir_intrinsic_instr *instr)
       unsigned const_offset = instr->const_index[0];
       src_reg offset;
 
-      if (devinfo->gen <= 6) {
-         if (!has_indirect)  {
-            offset = brw_imm_ud(const_offset & ~15);
-         } else {
-            offset = get_nir_src(instr->src[1], nir_type_int, 1);
-         }
+      if (!has_indirect)  {
+         offset = brw_imm_ud(const_offset & ~15);
       } else {
-         if (!has_indirect)  {
-            offset = brw_imm_ud(const_offset / 16);
-         } else {
-            offset = src_reg(this, glsl_type::uint_type);
-            emit(SHR(dst_reg(offset), get_nir_src(instr->src[1], nir_type_int, 1),
-                     brw_imm_ud(4u)));
-         }
+         offset = get_nir_src(instr->src[1], nir_type_int, 1);
       }
 
       src_reg packed_consts = src_reg(this, glsl_type::vec4_type);
index 36b89337fe216c4b7e06cd6af8cb7923dc222650..02cd99a68283ea1e40c63d5999d28aca3a66537c 100644 (file)
@@ -1473,23 +1473,16 @@ vec4_visitor::get_pull_constant_offset(bblock_t * block, vec4_instruction *inst,
 
       emit_before(block, inst, ADD(dst_reg(index), *reladdr,
                                    brw_imm_d(reg_offset)));
-
-      /* Pre-gen7, the message header uses byte offsets instead of vec4
-       * (16-byte) offset units.
-       */
-      if (devinfo->gen < 7) {
-         emit_before(block, inst, MUL(dst_reg(index), index, brw_imm_d(16)));
-      }
+      emit_before(block, inst, MUL(dst_reg(index), index, brw_imm_d(16)));
 
       return index;
    } else if (devinfo->gen >= 8) {
       /* Store the offset in a GRF so we can send-from-GRF. */
       src_reg offset = src_reg(this, glsl_type::int_type);
-      emit_before(block, inst, MOV(dst_reg(offset), brw_imm_d(reg_offset)));
+      emit_before(block, inst, MOV(dst_reg(offset), brw_imm_d(reg_offset * 16)));
       return offset;
    } else {
-      int message_header_scale = devinfo->gen < 7 ? 16 : 1;
-      return brw_imm_d(reg_offset * message_header_scale);
+      return brw_imm_d(reg_offset * 16);
    }
 }
 
index 52bddaec872dcf28ecbe72fd1ed5024b6546b4f0..17ef5fc21dbfad1043a64fdb96b04c07853c61e8 100644 (file)
@@ -404,12 +404,9 @@ brw_create_constant_surface(struct brw_context *brw,
                            uint32_t *out_offset,
                             bool dword_pitch)
 {
-   uint32_t stride = dword_pitch ? 1 : 16;
-   uint32_t elements = ALIGN(size, stride) / stride;
-
    brw->vtbl.emit_buffer_surface_state(brw, out_offset, bo, offset,
                                        BRW_SURFACEFORMAT_R32G32B32A32_FLOAT,
-                                       elements, stride, false);
+                                       size, 1, false);
 }
 
 /**