Browse Source

swr/rast: Convert system memory pointers to gfxptr_t

Fulfills an unused internal interface

Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
tags/19.1-branchpoint
Alok Hota 7 years ago
parent
commit
20d5c88760

+ 1
- 0
src/gallium/drivers/swr/rasterizer/core/api.cpp View File

@@ -196,6 +196,7 @@ HANDLE SwrCreateContext(SWR_CREATECONTEXT_INFO* pCreateInfo)
pContext->pfnLoadTile = pCreateInfo->pfnLoadTile;
pContext->pfnStoreTile = pCreateInfo->pfnStoreTile;
pContext->pfnClearTile = pCreateInfo->pfnClearTile;
pContext->pfnMakeGfxPtr = pCreateInfo->pfnMakeGfxPtr;
pContext->pfnUpdateSoWriteOffset = pCreateInfo->pfnUpdateSoWriteOffset;
pContext->pfnUpdateStats = pCreateInfo->pfnUpdateStats;
pContext->pfnUpdateStatsFE = pCreateInfo->pfnUpdateStatsFE;

+ 4
- 0
src/gallium/drivers/swr/rasterizer/core/api.h View File

@@ -145,6 +145,9 @@ typedef void(SWR_API* PFN_CLEAR_TILE)(HANDLE hPrivateContex
uint32_t renderTargetArrayIndex,
const float* pClearColor);

typedef gfxptr_t(SWR_API* PFN_MAKE_GFXPTR)(HANDLE hPrivateContext,
void* sysAddr);

//////////////////////////////////////////////////////////////////////////
/// @brief Callback to allow driver to update their copy of streamout write offset.
/// This is call is made for any draw operation that has streamout enabled
@@ -241,6 +244,7 @@ struct SWR_CREATECONTEXT_INFO
PFN_LOAD_TILE pfnLoadTile;
PFN_STORE_TILE pfnStoreTile;
PFN_CLEAR_TILE pfnClearTile;
PFN_MAKE_GFXPTR pfnMakeGfxPtr;
PFN_UPDATE_SO_WRITE_OFFSET pfnUpdateSoWriteOffset;
PFN_UPDATE_STATS pfnUpdateStats;
PFN_UPDATE_STATS_FE pfnUpdateStatsFE;

+ 1
- 0
src/gallium/drivers/swr/rasterizer/core/context.h View File

@@ -528,6 +528,7 @@ struct SWR_CONTEXT
PFN_LOAD_TILE pfnLoadTile;
PFN_STORE_TILE pfnStoreTile;
PFN_CLEAR_TILE pfnClearTile;
PFN_MAKE_GFXPTR pfnMakeGfxPtr;
PFN_UPDATE_SO_WRITE_OFFSET pfnUpdateSoWriteOffset;
PFN_UPDATE_STATS pfnUpdateStats;
PFN_UPDATE_STATS_FE pfnUpdateStatsFE;

+ 4
- 3
src/gallium/drivers/swr/rasterizer/core/frontend.cpp View File

@@ -1840,9 +1840,10 @@ void ProcessDraw(SWR_CONTEXT* pContext, DRAW_CONTEXT* pDC, uint32_t workerId, vo
{
vIndex = _simd16_add_epi32(_simd16_set1_epi32(work.startVertexID), vScale);

fetchInfo_lo.xpIndices = (gfxptr_t)&vIndex;
fetchInfo_hi.xpIndices =
(gfxptr_t)&vIndex + KNOB_SIMD_WIDTH * sizeof(int32_t); // 1/2 of KNOB_SIMD16_WIDTH
fetchInfo_lo.xpIndices =
pDC->pContext->pfnMakeGfxPtr(GetPrivateState(pDC), &vIndex);
fetchInfo_hi.xpIndices =
pDC->pContext->pfnMakeGfxPtr(GetPrivateState(pDC), &vIndex + KNOB_SIMD_WIDTH * sizeof(int32_t)); // 1/2 of KNOB_SIMD16_WIDTH
}

fetchInfo_lo.CurInstance = instanceNum;

+ 1
- 0
src/gallium/drivers/swr/swr_context.cpp View File

@@ -494,6 +494,7 @@ swr_create_context(struct pipe_screen *p_screen, void *priv, unsigned flags)
createInfo.pfnClearTile = swr_StoreHotTileClear;
createInfo.pfnUpdateStats = swr_UpdateStats;
createInfo.pfnUpdateStatsFE = swr_UpdateStatsFE;
createInfo.pfnMakeGfxPtr = swr_MakeGfxPtr;

SWR_THREADING_INFO threadingInfo {0};


+ 7
- 0
src/gallium/drivers/swr/swr_memory.h View File

@@ -68,3 +68,10 @@ swr_StoreHotTileClear(HANDLE hPrivateContext,

pDC->pAPI->pfnSwrStoreHotTileClear(hWorkerPrivateData, pDstSurface, renderTargetIndex, x, y, renderTargetArrayIndex, pClearColor);
}

INLINE gfxptr_t
swr_MakeGfxPtr(HANDLE hPrivateContext, void* sysAddr)
{
// Fulfill an unused internal interface
return (gfxptr_t)sysAddr;
}

Loading…
Cancel
Save