mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 09:38:07 +02:00
swr: [rasterizer core] Fix crash that can occur when switching contexts
This commit is contained in:
parent
51a11658d9
commit
be4c558d01
3 changed files with 22 additions and 1 deletions
|
|
@ -408,9 +408,10 @@ void ProcessInvalidateTilesBE(DRAW_CONTEXT *pDC, uint32_t workerId, uint32_t mac
|
|||
{
|
||||
if (pDesc->attachmentMask & (1 << i))
|
||||
{
|
||||
HOTTILE *pHotTile = pContext->pHotTileMgr->GetHotTile(pContext, pDC, macroTile, (SWR_RENDERTARGET_ATTACHMENT)i, false);
|
||||
HOTTILE *pHotTile = pContext->pHotTileMgr->GetHotTileNoLoad(pContext, pDC, macroTile, (SWR_RENDERTARGET_ATTACHMENT)i);
|
||||
if (pHotTile)
|
||||
{
|
||||
SWR_ASSERT(pHotTile->state == HOTTILE_INVALID || pHotTile->state == HOTTILE_RESOLVED);
|
||||
pHotTile->state = HOTTILE_INVALID;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -186,6 +186,24 @@ HOTTILE* HotTileMgr::GetHotTile(SWR_CONTEXT* pContext, DRAW_CONTEXT* pDC, uint32
|
|||
return &tile.Attachment[attachment];
|
||||
}
|
||||
|
||||
HOTTILE* HotTileMgr::GetHotTileNoLoad(SWR_CONTEXT* pContext, DRAW_CONTEXT* pDC, uint32_t macroID, SWR_RENDERTARGET_ATTACHMENT attachment)
|
||||
{
|
||||
uint32_t x, y;
|
||||
MacroTileMgr::getTileIndices(macroID, x, y);
|
||||
|
||||
SWR_ASSERT(x < KNOB_NUM_HOT_TILES_X);
|
||||
SWR_ASSERT(y < KNOB_NUM_HOT_TILES_Y);
|
||||
|
||||
HotTileSet &tile = mHotTiles[x][y];
|
||||
HOTTILE& hotTile = tile.Attachment[attachment];
|
||||
if (hotTile.pBuffer == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return &hotTile;
|
||||
}
|
||||
|
||||
void HotTileMgr::ClearColorHotTile(const HOTTILE* pHotTile) // clear a macro tile from float4 clear data.
|
||||
{
|
||||
// Load clear color into SIMD register...
|
||||
|
|
|
|||
|
|
@ -297,6 +297,8 @@ public:
|
|||
HOTTILE *GetHotTile(SWR_CONTEXT* pContext, DRAW_CONTEXT* pDC, uint32_t macroID, SWR_RENDERTARGET_ATTACHMENT attachment, bool create, uint32_t numSamples = 1,
|
||||
uint32_t renderTargetArrayIndex = 0);
|
||||
|
||||
HOTTILE *GetHotTileNoLoad(SWR_CONTEXT* pContext, DRAW_CONTEXT* pDC, uint32_t macroID, SWR_RENDERTARGET_ATTACHMENT attachment);
|
||||
|
||||
static void ClearColorHotTile(const HOTTILE* pHotTile);
|
||||
static void ClearDepthHotTile(const HOTTILE* pHotTile);
|
||||
static void ClearStencilHotTile(const HOTTILE* pHotTile);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue