From efe7fa4384f89ba909c7a5a303658a6442f4f787 Mon Sep 17 00:00:00 2001 From: Tim Rowley Date: Tue, 12 Sep 2017 13:38:31 -0500 Subject: [PATCH] swr/rast: Fetch compile state changes Add ForceSequentialAccessEnable and InstanceIDOffsetEnable bools to FETCH_COMPILE_STATE. Reviewed-by: Bruce Cherniak --- src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.cpp | 6 ++++++ src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.h | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.cpp b/src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.cpp index f3a4b27d9a9..906129829c8 100644 --- a/src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.cpp +++ b/src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.cpp @@ -275,6 +275,12 @@ Function* FetchJit::Create(const FETCH_COMPILE_STATE& fetchState) : JitGatherVertices(fetchState, streams, vIndices, pVtxOut); #endif + if (fetchState.bInstanceIDOffsetEnable) + { + // TODO: + SWR_ASSERT((0), "Add support for handling InstanceID Offset Enable."); + } + RET_VOID(); JitManager::DumpToFile(fetch, "src"); diff --git a/src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.h b/src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.h index 0dd6de759ad..18fa96357b8 100644 --- a/src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.h +++ b/src/gallium/drivers/swr/rasterizer/jitter/fetch_jit.h @@ -107,6 +107,9 @@ struct FETCH_COMPILE_STATE bool bVertexIDOffsetEnable{ false }; // Offset vertexID by StartVertex for non-indexed draws or BaseVertex for indexed draws bool bPartialVertexBuffer{ false }; // for indexed draws, map illegal indices to a known resident vertex + bool bForceSequentialAccessEnable{ false }; + bool bInstanceIDOffsetEnable{ false }; + FETCH_COMPILE_STATE(bool disableVGATHER = false, bool diableIndexOOBCheck = false): bDisableVGATHER(disableVGATHER), bDisableIndexOOBCheck(diableIndexOOBCheck){ }; @@ -120,11 +123,13 @@ struct FETCH_COMPILE_STATE if (cutIndex != other.cutIndex) return false; if (bVertexIDOffsetEnable != other.bVertexIDOffsetEnable) return false; if (bPartialVertexBuffer != other.bPartialVertexBuffer) return false; + if (bForceSequentialAccessEnable != other.bForceSequentialAccessEnable) return false; + if (bInstanceIDOffsetEnable != other.bInstanceIDOffsetEnable) return false; for(uint32_t i = 0; i < numAttribs; ++i) { if((layout[i].bits != other.layout[i].bits) || - ((layout[i].InstanceEnable == 1) && + (((layout[i].InstanceEnable == 1) || (layout[i].InstanceStrideEnable == 1)) && (layout[i].InstanceAdvancementState != other.layout[i].InstanceAdvancementState))){ return false; }