[Mesa-dev] [PATCH 1/7] swr/rast: Added in-place building to SCATTERPS
Cherniak, Bruce
bruce.cherniak at intel.com
Thu May 24 23:48:47 UTC 2018
Entire patchset: 1-7 (What I meant to say in the first place)
Reviewed-by: Bruce Cherniak <bruce.cherniak at intel.com>
> On May 24, 2018, at 11:13 AM, Cherniak, Bruce <bruce.cherniak at intel.com> wrote:
>
> Patchset (1/7)
> Reviewed-by: Bruce Cherniak <bruce.cherniak at intel.com>
>
>> On May 23, 2018, at 2:58 PM, Alok Hota <alok.hota at intel.com> wrote:
>>
>> SCATTERPS previously assumed it was being used with an existing basic
>> block
>> ---
>> .../drivers/swr/rasterizer/jitter/builder_mem.cpp | 29 +++++++++++++++-------
>> 1 file changed, 20 insertions(+), 9 deletions(-)
>>
>> diff --git a/src/gallium/drivers/swr/rasterizer/jitter/builder_mem.cpp b/src/gallium/drivers/swr/rasterizer/jitter/builder_mem.cpp
>> index 6e17888..77c2095 100644
>> --- a/src/gallium/drivers/swr/rasterizer/jitter/builder_mem.cpp
>> +++ b/src/gallium/drivers/swr/rasterizer/jitter/builder_mem.cpp
>> @@ -617,17 +617,28 @@ namespace SwrJit
>>
>> Value* pIsUndef = ICMP_EQ(pIndex, C(32));
>>
>> - // Split current block
>> - BasicBlock* pPostLoop = pCurBB->splitBasicBlock(cast<Instruction>(pIsUndef)->getNextNode());
>> + // Split current block or create new one if building inline
>> + BasicBlock* pPostLoop;
>> + if (pCurBB->getTerminator())
>> + {
>> + pPostLoop = pCurBB->splitBasicBlock(cast<Instruction>(pIsUndef)->getNextNode());
>>
>> - // Remove unconditional jump created by splitBasicBlock
>> - pCurBB->getTerminator()->eraseFromParent();
>> + // Remove unconditional jump created by splitBasicBlock
>> + pCurBB->getTerminator()->eraseFromParent();
>>
>> - // Add terminator to end of original block
>> - IRB()->SetInsertPoint(pCurBB);
>> + // Add terminator to end of original block
>> + IRB()->SetInsertPoint(pCurBB);
>>
>> - // Add conditional branch
>> - COND_BR(pIsUndef, pPostLoop, pLoop);
>> + // Add conditional branch
>> + COND_BR(pIsUndef, pPostLoop, pLoop);
>> + }
>> + else
>> + {
>> + pPostLoop = BasicBlock::Create(mpJitMgr->mContext, "PostScatter_Loop", pFunc);
>> +
>> + // Add conditional branch
>> + COND_BR(pIsUndef, pPostLoop, pLoop);
>> + }
>>
>> // Add loop basic block contents
>> IRB()->SetInsertPoint(pLoop);
>> @@ -642,7 +653,7 @@ namespace SwrJit
>> Value* pOffsetElem = LOADV(pOffsetsArrayPtr, { pIndexPhi });
>>
>> // GEP to this offset in dst
>> - Value* pCurDst = GEP(pDst, pOffsetElem);
>> + Value* pCurDst = GEP(pDst, pOffsetElem, mInt8PtrTy);
>> pCurDst = POINTER_CAST(pCurDst, PointerType::get(pSrcTy, 0));
>> STORE(pSrcElem, pCurDst);
>>
>> --
>> 2.7.4
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list