swr/rast: Add extra (optional) parameter in GATHERPS
Now also takes in an additional parameter (draw context) for future expansion. Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
This commit is contained in:
@@ -38,6 +38,8 @@ namespace SwrJit
|
||||
struct Builder
|
||||
{
|
||||
Builder(JitManager *pJitMgr);
|
||||
virtual ~Builder() {}
|
||||
|
||||
IRBuilder<> *IRB() { return mpIRBuilder; };
|
||||
JitManager *JM() { return mpJitMgr; }
|
||||
|
||||
|
||||
@@ -589,7 +589,7 @@ namespace SwrJit
|
||||
/// @param vIndices - SIMD wide value of VB byte offsets
|
||||
/// @param vMask - SIMD wide mask that controls whether to access memory or the src values
|
||||
/// @param scale - value to scale indices by
|
||||
Value *Builder::GATHERPS(Value *vSrc, Value *pBase, Value *vIndices, Value *vMask, uint8_t scale)
|
||||
Value *Builder::GATHERPS(Value *vSrc, Value *pBase, Value *vIndices, Value *vMask, uint8_t scale, Value *pDrawContext)
|
||||
{
|
||||
Value *vGather;
|
||||
|
||||
|
||||
@@ -134,7 +134,7 @@ Value *MASKLOADD(Value* src, Value* mask);
|
||||
void Gather4(const SWR_FORMAT format, Value* pSrcBase, Value* byteOffsets,
|
||||
Value* mask, Value* vGatherComponents[], bool bPackedOutput);
|
||||
|
||||
Value *GATHERPS(Value *src, Value *pBase, Value *indices, Value *mask, uint8_t scale = 1);
|
||||
virtual Value *GATHERPS(Value *src, Value *pBase, Value *indices, Value *mask, uint8_t scale = 1, Value *pDrawContext = nullptr);
|
||||
Value *GATHERPS_16(Value *src, Value *pBase, Value *indices, Value *mask, uint8_t scale = 1);
|
||||
|
||||
void GATHER4PS(const SWR_FORMAT_INFO &info, Value* pSrcBase, Value* byteOffsets,
|
||||
|
||||
@@ -55,9 +55,12 @@ enum ConversionType
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
/// Interface to Jitting a fetch shader
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
struct FetchJit : public Builder
|
||||
struct FetchJit :
|
||||
public Builder
|
||||
{
|
||||
FetchJit(JitManager* pJitMgr) : Builder(pJitMgr){};
|
||||
FetchJit(JitManager* pJitMgr) :
|
||||
Builder(pJitMgr)
|
||||
{}
|
||||
|
||||
Function* Create(const FETCH_COMPILE_STATE& fetchState);
|
||||
|
||||
@@ -1361,7 +1364,7 @@ void FetchJit::JitGatherVertices(const FETCH_COMPILE_STATE &fetchState,
|
||||
// But, we know that elements must be aligned for FETCH. :)
|
||||
// Right shift the offset by a bit and then scale by 2 to remove the sign extension.
|
||||
Value *vShiftedOffsets = LSHR(vOffsets, 1);
|
||||
vVertexElements[currentVertexElement++] = GATHERPS(gatherSrc, pStreamBase, vShiftedOffsets, vGatherMask, 2);
|
||||
vVertexElements[currentVertexElement++] = GATHERPS(gatherSrc, pStreamBase, vShiftedOffsets, vGatherMask, 2, mpPrivateContext);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user