From c9fa2ee3438e4f1591da63f5848f25c4d4c64933 Mon Sep 17 00:00:00 2001 From: Alok Hota Date: Mon, 9 Jul 2018 16:55:30 -0500 Subject: [PATCH] swr/rast: Use gfxptr_t value in JitGatherVertices Use gfxptr_t type value for stream pointer uses in gather and similar calls --- .../swr/rasterizer/jitter/fetch_jit.cpp | 34 +++++++++---------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.cpp b/src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.cpp index 3ad0fabe81f..d294a67050c 100644 --- a/src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.cpp +++ b/src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.cpp @@ -550,9 +550,6 @@ void FetchJit::JitGatherVertices(const FETCH_COMPILE_STATE& fetchState, Value* stream = LOAD(streams, {ied.StreamIndex, SWR_VERTEX_BUFFER_STATE_xpData}); - // VGATHER* takes an *i8 src pointer - Value* pStreamBase = INT_TO_PTR(stream, PointerType::get(mInt8Ty, 0)); - Value* stride = LOAD(streams, {ied.StreamIndex, SWR_VERTEX_BUFFER_STATE_pitch}); Value* vStride = VBROADCAST(stride); @@ -620,7 +617,8 @@ void FetchJit::JitGatherVertices(const FETCH_COMPILE_STATE& fetchState, // calculate byte offset to the start of the VB Value* baseOffset = MUL(Z_EXT(startOffset, mInt64Ty), Z_EXT(stride, mInt64Ty)); - pStreamBase = GEP(pStreamBase, baseOffset); + + // VGATHER* takes an *i8 src pointer so that's what stream is Value* pStreamBaseGFX = ADD(stream, baseOffset); // if we have a start offset, subtract from max vertex. Used for OOB check @@ -698,7 +696,7 @@ void FetchJit::JitGatherVertices(const FETCH_COMPILE_STATE& fetchState, { Value* pResults[4]; CreateGatherOddFormats( - (SWR_FORMAT)ied.Format, vGatherMask, pStreamBase, vOffsets, pResults); + (SWR_FORMAT)ied.Format, vGatherMask, pStreamBaseGFX, vOffsets, pResults); ConvertFormat((SWR_FORMAT)ied.Format, pResults); for (uint32_t c = 0; c < 4; c += 1) @@ -733,7 +731,7 @@ void FetchJit::JitGatherVertices(const FETCH_COMPILE_STATE& fetchState, // if we have at least one component out of x or y to fetch if (isComponentEnabled(compMask, 0) || isComponentEnabled(compMask, 1)) { - vGatherResult[0] = GATHERPS(gatherSrc, pStreamBase, vOffsets, vGatherMask); + vGatherResult[0] = GATHERPS(gatherSrc, pStreamBaseGFX, vOffsets, vGatherMask); // e.g. result of first 8x32bit integer gather for 16bit components // 256i - 0 1 2 3 4 5 6 7 // xyxy xyxy xyxy xyxy xyxy xyxy xyxy xyxy @@ -744,9 +742,9 @@ void FetchJit::JitGatherVertices(const FETCH_COMPILE_STATE& fetchState, if (isComponentEnabled(compMask, 2) || isComponentEnabled(compMask, 3)) { // offset base to the next components(zw) in the vertex to gather - pStreamBase = GEP(pStreamBase, C((char)4)); + pStreamBaseGFX = ADD(pStreamBaseGFX, C((int64_t)4)); - vGatherResult[1] = GATHERPS(gatherSrc, pStreamBase, vOffsets, vGatherMask); + vGatherResult[1] = GATHERPS(gatherSrc, pStreamBaseGFX, vOffsets, vGatherMask); // e.g. result of second 8x32bit integer gather for 16bit components // 256i - 0 1 2 3 4 5 6 7 // zwzw zwzw zwzw zwzw zwzw zwzw zwzw zwzw @@ -811,7 +809,6 @@ void FetchJit::JitGatherVertices(const FETCH_COMPILE_STATE& fetchState, } // offset base to the next component in the vertex to gather - pStreamBase = GEP(pStreamBase, C((char)4)); pStreamBaseGFX = ADD(pStreamBaseGFX, C((int64_t)4)); } } @@ -854,9 +851,9 @@ void FetchJit::JitGatherVertices(const FETCH_COMPILE_STATE& fetchState, mVWidth / 2, ConstantFP::get(IRB()->getDoubleTy(), 0.0f)); Value* pGatherLo = - GATHERPD(vZeroDouble, pStreamBase, vOffsetsLo, vMaskLo); + GATHERPD(vZeroDouble, pStreamBaseGFX, vOffsetsLo, vMaskLo); Value* pGatherHi = - GATHERPD(vZeroDouble, pStreamBase, vOffsetsHi, vMaskHi); + GATHERPD(vZeroDouble, pStreamBaseGFX, vOffsetsHi, vMaskHi); pGatherLo = VCVTPD2PS(pGatherLo); pGatherHi = VCVTPD2PS(pGatherHi); @@ -880,7 +877,7 @@ void FetchJit::JitGatherVertices(const FETCH_COMPILE_STATE& fetchState, } // offset base to the next component in the vertex to gather - pStreamBase = GEP(pStreamBase, C((char)8)); + pStreamBaseGFX = ADD(pStreamBaseGFX, C((int64_t)8)); } } break; @@ -936,7 +933,8 @@ void FetchJit::JitGatherVertices(const FETCH_COMPILE_STATE& fetchState, // if we have at least one component to fetch if (compMask) { - Value* vGatherResult = GATHERDD(gatherSrc, pStreamBase, vOffsets, vGatherMask); + Value* vGatherResult = GATHERDD( + gatherSrc, pStreamBaseGFX, vOffsets, vGatherMask, 1, GFX_MEM_CLIENT_FETCH); // e.g. result of an 8x32bit integer gather for 8bit components // 256i - 0 1 2 3 4 5 6 7 // xyzw xyzw xyzw xyzw xyzw xyzw xyzw xyzw @@ -965,7 +963,7 @@ void FetchJit::JitGatherVertices(const FETCH_COMPILE_STATE& fetchState, // if we have at least one component out of x or y to fetch if (isComponentEnabled(compMask, 0) || isComponentEnabled(compMask, 1)) { - vGatherResult[0] = GATHERDD(gatherSrc, pStreamBase, vOffsets, vGatherMask); + vGatherResult[0] = GATHERDD(gatherSrc, pStreamBaseGFX, vOffsets, vGatherMask); // e.g. result of first 8x32bit integer gather for 16bit components // 256i - 0 1 2 3 4 5 6 7 // xyxy xyxy xyxy xyxy xyxy xyxy xyxy xyxy @@ -976,9 +974,9 @@ void FetchJit::JitGatherVertices(const FETCH_COMPILE_STATE& fetchState, if (isComponentEnabled(compMask, 2) || isComponentEnabled(compMask, 3)) { // offset base to the next components(zw) in the vertex to gather - pStreamBase = GEP(pStreamBase, C((char)4)); + pStreamBaseGFX = ADD(pStreamBaseGFX, C((int64_t)4)); - vGatherResult[1] = GATHERDD(gatherSrc, pStreamBase, vOffsets, vGatherMask); + vGatherResult[1] = GATHERDD(gatherSrc, pStreamBaseGFX, vOffsets, vGatherMask); // e.g. result of second 8x32bit integer gather for 16bit components // 256i - 0 1 2 3 4 5 6 7 // zwzw zwzw zwzw zwzw zwzw zwzw zwzw zwzw @@ -1015,7 +1013,7 @@ void FetchJit::JitGatherVertices(const FETCH_COMPILE_STATE& fetchState, if (compCtrl[i] == StoreSrc) { Value* pGather = - GATHERDD(gatherSrc, pStreamBase, vOffsets, vGatherMask); + GATHERDD(gatherSrc, pStreamBaseGFX, vOffsets, vGatherMask); if (conversionType == CONVERT_USCALED) { @@ -1053,7 +1051,7 @@ void FetchJit::JitGatherVertices(const FETCH_COMPILE_STATE& fetchState, } // offset base to the next component in the vertex to gather - pStreamBase = GEP(pStreamBase, C((char)4)); + pStreamBaseGFX = ADD(pStreamBaseGFX, C((int64_t)4)); } } break; -- 2.30.2