[Mesa-dev] [PATCH 03/10] swr: [rasterizer jitter] Fix issues with stream-out on llvm>=3.8

Tim Rowley timothy.o.rowley at intel.com
Tue Feb 7 00:40:37 UTC 2017


---
 src/gallium/drivers/swr/rasterizer/jitter/builder.cpp       | 4 +---
 src/gallium/drivers/swr/rasterizer/jitter/builder.h         | 2 --
 src/gallium/drivers/swr/rasterizer/jitter/streamout_jit.cpp | 6 +++++-
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/swr/rasterizer/jitter/builder.cpp b/src/gallium/drivers/swr/rasterizer/jitter/builder.cpp
index 4fc5af7..3b86895 100644
--- a/src/gallium/drivers/swr/rasterizer/jitter/builder.cpp
+++ b/src/gallium/drivers/swr/rasterizer/jitter/builder.cpp
@@ -56,8 +56,6 @@ namespace SwrJit
         mInt16PtrTy = PointerType::get(mInt16Ty, 0);
         mInt32PtrTy = PointerType::get(mInt32Ty, 0);
         mInt64Ty = Type::getInt64Ty(pJitMgr->mContext);
-        mV4FP32Ty = StructType::get(pJitMgr->mContext, std::vector<Type*>(4, mFP32Ty), false); // vector4 float type (represented as structure)
-        mV4Int32Ty = StructType::get(pJitMgr->mContext, std::vector<Type*>(4, mInt32Ty), false); // vector4 int type
         mSimdInt1Ty = VectorType::get(mInt1Ty, mVWidth);
         mSimdInt16Ty = VectorType::get(mInt16Ty, mVWidth);
         mSimdInt32Ty = VectorType::get(mInt32Ty, mVWidth);
@@ -65,7 +63,7 @@ namespace SwrJit
         mSimdFP16Ty = VectorType::get(mFP16Ty, mVWidth);
         mSimdFP32Ty = VectorType::get(mFP32Ty, mVWidth);
         mSimdVectorTy = ArrayType::get(mSimdFP32Ty, 4);
-        mSimdVectorTRTy = StructType::get(pJitMgr->mContext, std::vector<Type*>(5, mSimdFP32Ty), false);
+        mSimdVectorTRTy = ArrayType::get(mSimdFP32Ty, 5);
 
         if (sizeof(uint32_t*) == 4)
         {
diff --git a/src/gallium/drivers/swr/rasterizer/jitter/builder.h b/src/gallium/drivers/swr/rasterizer/jitter/builder.h
index 515560e..6627b33 100644
--- a/src/gallium/drivers/swr/rasterizer/jitter/builder.h
+++ b/src/gallium/drivers/swr/rasterizer/jitter/builder.h
@@ -69,8 +69,6 @@ namespace SwrJit
         Type*                mSimdIntPtrTy;
         Type*                mSimdVectorTy;
         Type*                mSimdVectorTRTy;
-        StructType*          mV4FP32Ty;
-        StructType*          mV4Int32Ty;
 
 #include "builder_gen.h"
 #include "builder_x86.h"
diff --git a/src/gallium/drivers/swr/rasterizer/jitter/streamout_jit.cpp b/src/gallium/drivers/swr/rasterizer/jitter/streamout_jit.cpp
index 793e5ec..3d39338 100644
--- a/src/gallium/drivers/swr/rasterizer/jitter/streamout_jit.cpp
+++ b/src/gallium/drivers/swr/rasterizer/jitter/streamout_jit.cpp
@@ -159,7 +159,11 @@ struct StreamOutJit : public Builder
 
             // cast input to <4xfloat>
             Value* src = BITCAST(vpackedAttrib, simd4Ty);
-            CALL(maskStore, {pOut, ToMask(packedMask), src});
+
+            // cast mask to <4xint>
+            Value* mask = ToMask(packedMask);
+            mask = BITCAST(mask, VectorType::get(IRB()->getInt32Ty(), 4));
+            CALL(maskStore, {pOut, mask, src});
         }
 
         // increment SO buffer
-- 
2.7.4



More information about the mesa-dev mailing list