[Mesa-dev] [PATCH 1/7] swr/rast: Use gfxptr_t value in JitGatherVertices
Cherniak, Bruce
bruce.cherniak at intel.com
Tue Jan 15 20:40:17 UTC 2019
Reviewed-by: Bruce Cherniak <bruce.cherniak at intel.com>
> On Dec 17, 2018, at 8:36 AM, Alok Hota <alok.hota at intel.com> wrote:
>
> 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.17.1
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list