Module: Mesa
Branch: 11.0
Commit: 0452dcd92da3eb4d31b6a83a2c39968e18d1f1d1
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0452dcd92da3eb4d31b6a83a2c39968e18d1f1d1

Author: Emil Velikov <[email protected]>
Date:   Sat Dec 19 00:18:07 2015 +0000

Revert "i965/vec4: Use a stride of 1 and byte offsets for UBOs"

This reverts commit 147c3fbdb3f779f5172304e3be10cc27e0e67be7.

See the previous reverts.

---

 src/mesa/drivers/dri/i965/brw_vec4_nir.cpp       |   16 +++++++++++++---
 src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp   |   13 ++++++++++---
 src/mesa/drivers/dri/i965/brw_wm_surface_state.c |    5 ++++-
 3 files changed, 27 insertions(+), 7 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp 
b/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp
index 19a71f3..b2adb9a 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_nir.cpp
@@ -660,10 +660,20 @@ vec4_visitor::nir_emit_intrinsic(nir_intrinsic_instr 
*instr)
       unsigned const_offset = instr->const_index[0];
       src_reg offset;
 
-      if (!has_indirect)  {
-         offset = src_reg(const_offset & ~15);
+      if (devinfo->gen <= 6) {
+         if (!has_indirect)  {
+            offset = src_reg(const_offset & ~15);
+         } else {
+            offset = get_nir_src(instr->src[1], nir_type_int, 1);
+         }
       } else {
-         offset = get_nir_src(instr->src[1], nir_type_int, 1);
+         if (!has_indirect)  {
+            offset = src_reg(const_offset & ~15);
+         } else {
+            offset = src_reg(this, glsl_type::uint_type);
+            emit(SHR(dst_reg(offset), get_nir_src(instr->src[1], nir_type_int, 
1),
+                     src_reg(4u)));
+         }
       }
 
       src_reg packed_consts = src_reg(this, glsl_type::vec4_type);
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp 
b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
index c5de3aa..005c8b1 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp
@@ -3431,16 +3431,23 @@ vec4_visitor::get_pull_constant_offset(bblock_t * 
block, vec4_instruction *inst,
 
       emit_before(block, inst, ADD(dst_reg(index), *reladdr,
                                    src_reg(reg_offset)));
-      emit_before(block, inst, MUL(dst_reg(index), index, src_reg(16)));
+
+      /* 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, src_reg(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), src_reg(reg_offset * 16)));
+      emit_before(block, inst, MOV(dst_reg(offset), src_reg(reg_offset)));
       return offset;
    } else {
-      return src_reg(reg_offset * 16);
+      int message_header_scale = devinfo->gen < 7 ? 16 : 1;
+      return src_reg(reg_offset * message_header_scale);
    }
 }
 
diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c 
b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
index e689fed..53c85e9 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
@@ -403,9 +403,12 @@ 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,
-                                       size, 1, false);
+                                       elements, stride, false);
 }
 
 /**

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to