swr/rast: Add TranslateGfxAddress for shader
Also add GFX_MEM_CLIENT_SHADER Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
This commit is contained in:
parent
edc41f73b8
commit
c328c5d0f4
|
@ -201,7 +201,7 @@ namespace SwrJit
|
|||
return Builder::MASKED_LOAD(Ptr, Align, Mask, PassThru, Name, Ty, usage);
|
||||
}
|
||||
|
||||
Value* BuilderGfxMem::TranslateGfxAddress(Value* xpGfxAddress, Type* PtrTy, const Twine &Name)
|
||||
Value* BuilderGfxMem::TranslateGfxAddress(Value* xpGfxAddress, Type* PtrTy, const Twine &Name, JIT_MEM_CLIENT /* usage */)
|
||||
{
|
||||
if (PtrTy == nullptr)
|
||||
{
|
||||
|
|
|
@ -57,7 +57,22 @@ namespace SwrJit
|
|||
|
||||
virtual Value *GATHERDD(Value* src, Value* pBase, Value* indices, Value* mask, uint8_t scale = 1, JIT_MEM_CLIENT usage = MEM_CLIENT_INTERNAL);
|
||||
|
||||
Value* TranslateGfxAddress(Value* xpGfxAddress, Type* PtrTy = nullptr, const Twine &Name = "");
|
||||
Value* TranslateGfxAddress(Value* xpGfxAddress, Type* PtrTy = nullptr, const Twine &Name = "", JIT_MEM_CLIENT usage = MEM_CLIENT_INTERNAL);
|
||||
template <typename T>
|
||||
Value* TranslateGfxAddress(Value* xpGfxBaseAddress, const std::initializer_list<T> &offset, Type* PtrTy = nullptr, const Twine &Name = "", JIT_MEM_CLIENT usage = GFX_MEM_CLIENT_SHADER)
|
||||
{
|
||||
AssertGFXMemoryParams(xpGfxBaseAddress, usage);
|
||||
SWR_ASSERT(xpGfxBaseAddress->getType()->isPointerTy() == false);
|
||||
|
||||
if (!PtrTy)
|
||||
{
|
||||
PtrTy = mInt8PtrTy;
|
||||
}
|
||||
|
||||
Value* ptr = INT_TO_PTR(xpGfxBaseAddress, PtrTy);
|
||||
ptr = GEP(ptr, offset);
|
||||
return TranslateGfxAddress(PTR_TO_INT(ptr, mInt64Ty), PtrTy, Name, usage);
|
||||
}
|
||||
|
||||
|
||||
protected:
|
||||
|
|
|
@ -35,7 +35,8 @@ typedef enum _JIT_MEM_CLIENT
|
|||
{
|
||||
MEM_CLIENT_INTERNAL,
|
||||
GFX_MEM_CLIENT_FETCH,
|
||||
GFX_MEM_CLIENT_SAMPLER
|
||||
GFX_MEM_CLIENT_SAMPLER,
|
||||
GFX_MEM_CLIENT_SHADER,
|
||||
} JIT_MEM_CLIENT;
|
||||
|
||||
protected:
|
||||
|
|
Loading…
Reference in New Issue