[Mesa-stable] [Mesa-dev] [PATCH 18.0] swr/rast: Fix index buffer overfetch issue for non-indexed draws
Cherniak, Bruce
bruce.cherniak at intel.com
Wed Feb 28 20:55:59 UTC 2018
Reviewed-by: Bruce Cherniak <bruce.cherniak at intel.com>
> On Feb 28, 2018, at 1:16 PM, George Kyriazis <george.kyriazis at intel.com> wrote:
>
> Populate pLastIndex, even for the non-indexed case. An zero pLastIndex
> can cause the index offsets inside the fetcher to have non-sensical values
> that can be either very large positive or very large negative numbers.
>
> Cherry-pick of 539de78633 for 18.0. Surrounding context is different for
> 18.0 branch, hence the need for a separate patch.
>
> cc: "18.0" <mesa-stable at lists.freedesktop.org>
> ---
> src/gallium/drivers/swr/rasterizer/core/frontend.cpp | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/src/gallium/drivers/swr/rasterizer/core/frontend.cpp b/src/gallium/drivers/swr/rasterizer/core/frontend.cpp
> index 9600f78..ce6cb68 100644
> --- a/src/gallium/drivers/swr/rasterizer/core/frontend.cpp
> +++ b/src/gallium/drivers/swr/rasterizer/core/frontend.cpp
> @@ -1724,6 +1724,21 @@ void ProcessDraw(
>
> if (i < endVertex)
> {
> + if (!IsIndexedT::value)
> + {
> + fetchInfo_lo.pLastIndex = fetchInfo_lo.pIndices;
> + uint32_t offset;
> + offset = std::min(endVertex-i, (uint32_t) KNOB_SIMD16_WIDTH);
> +#if USE_SIMD16_SHADERS
> + fetchInfo_lo.pLastIndex += offset;
> +#else
> + fetchInfo_lo.pLastIndex += std::min(offset, (uint32_t) KNOB_SIMD_WIDTH);
> + uint32_t offset2 = std::min(offset, (uint32_t) KNOB_SIMD16_WIDTH)-KNOB_SIMD_WIDTH;
> + assert(offset >= 0);
> + fetchInfo_hi.pLastIndex = fetchInfo_hi.pIndices;
> + fetchInfo_hi.pLastIndex += offset2;
> +#endif
> + }
> // 1. Execute FS/VS for a single SIMD.
> AR_BEGIN(FEFetchShader, pDC->drawId);
> #if USE_SIMD16_SHADERS
> --
> 2.7.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-stable
mailing list