summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/swr
diff options
context:
space:
mode:
authorGeorge Kyriazis <[email protected]>2018-03-15 12:49:51 -0500
committerGeorge Kyriazis <[email protected]>2018-04-18 10:51:38 -0500
commit093c1aee88dd61289cdeabffb402a29ae30d6b24 (patch)
tree07054bd48d01df18bef44e7098aed681ac725a28 /src/gallium/drivers/swr
parent5fbee5e4ef1aa3d247a50ff8792c05318c9ea98c (diff)
swr/rast: Add "Num Instructions Executed" stats intrinsic.
Added a SWR_SHADER_STATS structure which is passed to each shader. The stats pass will instrument the shader to populate this. Reviewed-by: Bruce Cherniak <[email protected]>
Diffstat (limited to 'src/gallium/drivers/swr')
-rw-r--r--src/gallium/drivers/swr/rasterizer/core/state.h28
1 files changed, 21 insertions, 7 deletions
diff --git a/src/gallium/drivers/swr/rasterizer/core/state.h b/src/gallium/drivers/swr/rasterizer/core/state.h
index 22acbe054a1..47ffacf53ff 100644
--- a/src/gallium/drivers/swr/rasterizer/core/state.h
+++ b/src/gallium/drivers/swr/rasterizer/core/state.h
@@ -214,6 +214,15 @@ struct SIMDVERTEX_T
};
//////////////////////////////////////////////////////////////////////////
+/// SWR_SHADER_STATS
+/// @brief Structure passed to shader for stats collection.
+/////////////////////////////////////////////////////////////////////////
+struct SWR_SHADER_STATS
+{
+ uint32_t numInstExecuted; // This is roughly the API instructions executed and not x86.
+};
+
+//////////////////////////////////////////////////////////////////////////
/// SWR_VS_CONTEXT
/// @brief Input to vertex shader
/////////////////////////////////////////////////////////////////////////
@@ -232,6 +241,7 @@ struct SWR_VS_CONTEXT
simd16scalari VertexID16; // IN: Vertex ID (16-wide)
#endif
#endif
+ SWR_SHADER_STATS stats; // OUT: shader statistics used for archrast.
};
/////////////////////////////////////////////////////////////////////////
@@ -281,6 +291,7 @@ struct SWR_HS_CONTEXT
simdscalari mask; // IN: Active mask for shader
ScalarPatch* pCPout; // OUT: Output control point patch
// SIMD-sized-array of SCALAR patches
+ SWR_SHADER_STATS stats; // OUT: shader statistics used for archrast.
};
//////////////////////////////////////////////////////////////////////////
@@ -298,6 +309,7 @@ struct SWR_DS_CONTEXT
simdscalar* pDomainV; // IN: (SIMD) Domain Point V coords
simdscalari mask; // IN: Active mask for shader
simdscalar* pOutputData; // OUT: (SIMD) Vertex Attributes (2D array of vectors, one row per attribute-component)
+ SWR_SHADER_STATS stats; // OUT: shader statistics used for archrast.
};
//////////////////////////////////////////////////////////////////////////
@@ -312,6 +324,7 @@ struct SWR_GS_CONTEXT
uint32_t InstanceID; // IN: input instance ID
simdscalari mask; // IN: Active mask for shader
uint8_t* pStreams[KNOB_SIMD_WIDTH]; // OUT: output stream (contains vertices for all output streams)
+ SWR_SHADER_STATS stats; // OUT: shader statistics used for archrast.
};
struct PixelPositions
@@ -358,6 +371,8 @@ struct SWR_PS_CONTEXT
uint32_t rasterizerSampleCount; // IN: sample count used by the rasterizer
uint8_t* pColorBuffer[SWR_NUM_RENDERTARGETS]; // IN: Pointers to render target hottiles
+
+ SWR_SHADER_STATS stats; // OUT: shader statistics used for archrast.
};
//////////////////////////////////////////////////////////////////////////
@@ -391,14 +406,13 @@ struct SWR_CS_CONTEXT
// Dispatch dimensions used by shader to compute system values from the tile counter.
uint32_t dispatchDims[3];
- uint8_t* pTGSM; // Thread Group Shared Memory pointer.
-
- uint8_t* pSpillFillBuffer; // Spill/fill buffer for barrier support
-
- uint8_t* pScratchSpace; // Pointer to scratch space buffer used by the shader, shader is responsible
- // for subdividing scratch space per instance/simd
-
+ uint8_t* pTGSM; // Thread Group Shared Memory pointer.
+ uint8_t* pSpillFillBuffer; // Spill/fill buffer for barrier support
+ uint8_t* pScratchSpace; // Pointer to scratch space buffer used by the shader, shader is responsible
+ // for subdividing scratch space per instance/simd
uint32_t scratchSpacePerSimd; // Scratch space per work item x SIMD_WIDTH
+
+ SWR_SHADER_STATS stats; // OUT: shader statistics used for archrast.
};
// enums