[Mesa-dev] [PATCH 3/9] swr/rast: Fetch compile state changes

Tim Rowley timothy.o.rowley at intel.com
Fri Sep 22 00:46:46 UTC 2017


Add ForceSequentialAccessEnable and InstanceIDOffsetEnable bools to
FETCH_COMPILE_STATE.
---
 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 f3a4b27..9061298 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 0dd6de7..18fa963 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;
             }
-- 
2.7.4



More information about the mesa-dev mailing list