mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 04:38:03 +02:00
swr/rast: Add split draw and other state information to DrawInfoEvent.
Removed specific split draw events. Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
This commit is contained in:
parent
714093203e
commit
2f6ae8cfcd
4 changed files with 22 additions and 32 deletions
|
|
@ -85,28 +85,18 @@ namespace ArchRast
|
|||
|
||||
virtual void Handle(const DrawInstancedEvent& event)
|
||||
{
|
||||
DrawInfoEvent e(event.data.drawId, ArchRast::Instanced, event.data.topology, event.data.numVertices, 0, 0, event.data.startVertex, event.data.numInstances, event.data.startInstance);
|
||||
DrawInfoEvent e(event.data.drawId, ArchRast::Instanced, event.data.topology,
|
||||
event.data.numVertices, 0, 0, event.data.startVertex, event.data.numInstances,
|
||||
event.data.startInstance, event.data.tsEnable, event.data.gsEnable, event.data.soEnable, event.data.splitId);
|
||||
|
||||
EventHandlerFile::Handle(e);
|
||||
}
|
||||
|
||||
virtual void Handle(const DrawIndexedInstancedEvent& event)
|
||||
{
|
||||
DrawInfoEvent e(event.data.drawId, ArchRast::IndexedInstanced, event.data.topology, 0, event.data.numIndices, event.data.indexOffset, event.data.baseVertex, event.data.numInstances, event.data.startInstance);
|
||||
|
||||
EventHandlerFile::Handle(e);
|
||||
}
|
||||
|
||||
virtual void Handle(const DrawInstancedSplitEvent& event)
|
||||
{
|
||||
DrawInfoEvent e(event.data.drawId, ArchRast::InstancedSplit, 0, 0, 0, 0, 0, 0, 0);
|
||||
|
||||
EventHandlerFile::Handle(e);
|
||||
}
|
||||
|
||||
virtual void Handle(const DrawIndexedInstancedSplitEvent& event)
|
||||
{
|
||||
DrawInfoEvent e(event.data.drawId, ArchRast::IndexedInstancedSplit, 0, 0, 0, 0, 0, 0, 0);
|
||||
DrawInfoEvent e(event.data.drawId, ArchRast::IndexedInstanced, event.data.topology, 0,
|
||||
event.data.numIndices, event.data.indexOffset, event.data.baseVertex, event.data.numInstances,
|
||||
event.data.startInstance, event.data.tsEnable, event.data.gsEnable, event.data.soEnable, event.data.splitId);
|
||||
|
||||
EventHandlerFile::Handle(e);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -48,6 +48,10 @@ event DrawInfoEvent
|
|||
int32_t baseVertex;
|
||||
uint32_t numInstances;
|
||||
uint32_t startInstance;
|
||||
uint32_t tsEnable;
|
||||
uint32_t gsEnable;
|
||||
uint32_t soEnable;
|
||||
uint32_t splitId; // Split draw count or id.
|
||||
};
|
||||
|
||||
event DispatchEvent
|
||||
|
|
|
|||
|
|
@ -128,6 +128,10 @@ event DrawInstancedEvent
|
|||
int32_t startVertex;
|
||||
uint32_t numInstances;
|
||||
uint32_t startInstance;
|
||||
uint32_t tsEnable;
|
||||
uint32_t gsEnable;
|
||||
uint32_t soEnable;
|
||||
uint32_t splitId; // Split draw count or id.
|
||||
};
|
||||
|
||||
event DrawIndexedInstancedEvent
|
||||
|
|
@ -139,16 +143,8 @@ event DrawIndexedInstancedEvent
|
|||
int32_t baseVertex;
|
||||
uint32_t numInstances;
|
||||
uint32_t startInstance;
|
||||
};
|
||||
|
||||
///@brief API Stat: Split draw event for DrawInstanced. In certain cases, Rasty can split draws up into smaller draws.
|
||||
event DrawInstancedSplitEvent
|
||||
{
|
||||
uint32_t drawId;
|
||||
};
|
||||
|
||||
///@brief API Stat: Split draw event for DrawIndexedInstanced.
|
||||
event DrawIndexedInstancedSplitEvent
|
||||
{
|
||||
uint32_t drawId;
|
||||
uint32_t tsEnable;
|
||||
uint32_t gsEnable;
|
||||
uint32_t soEnable;
|
||||
uint32_t splitId; // Split draw count or id.
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1169,7 +1169,6 @@ void DrawInstanced(
|
|||
DRAW_CONTEXT* pDC = GetDrawContext(pContext);
|
||||
|
||||
RDTSC_BEGIN(APIDraw, pDC->drawId);
|
||||
AR_API_EVENT(DrawInstancedEvent(pDC->drawId, topology, numVertices, startVertex, numInstances, startInstance));
|
||||
|
||||
uint32_t maxVertsPerDraw = MaxVertsPerDraw(pDC, numVertices, topology);
|
||||
uint32_t primsPerDraw = GetNumPrims(topology, maxVertsPerDraw);
|
||||
|
|
@ -1221,7 +1220,8 @@ void DrawInstanced(
|
|||
//enqueue DC
|
||||
QueueDraw(pContext);
|
||||
|
||||
AR_API_EVENT(DrawInstancedSplitEvent(pDC->drawId));
|
||||
AR_API_EVENT(DrawInstancedEvent(pDC->drawId, topology, numVertsForDraw, startVertex, numInstances,
|
||||
startInstance, pState->tsState.tsEnable, pState->gsState.gsEnable, pState->soState.soEnable, draw));
|
||||
|
||||
remainingVerts -= numVertsForDraw;
|
||||
draw++;
|
||||
|
|
@ -1297,7 +1297,6 @@ void DrawIndexedInstance(
|
|||
API_STATE* pState = &pDC->pState->state;
|
||||
|
||||
RDTSC_BEGIN(APIDrawIndexed, pDC->drawId);
|
||||
AR_API_EVENT(DrawIndexedInstancedEvent(pDC->drawId, topology, numIndices, indexOffset, baseVertex, numInstances, startInstance));
|
||||
|
||||
uint32_t maxIndicesPerDraw = MaxVertsPerDraw(pDC, numIndices, topology);
|
||||
uint32_t primsPerDraw = GetNumPrims(topology, maxIndicesPerDraw);
|
||||
|
|
@ -1366,7 +1365,8 @@ void DrawIndexedInstance(
|
|||
//enqueue DC
|
||||
QueueDraw(pContext);
|
||||
|
||||
AR_API_EVENT(DrawIndexedInstancedSplitEvent(pDC->drawId));
|
||||
AR_API_EVENT(DrawIndexedInstancedEvent(pDC->drawId, topology, numIndicesForDraw, indexOffset, baseVertex,
|
||||
numInstances, startInstance, pState->tsState.tsEnable, pState->gsState.gsEnable, pState->soState.soEnable, draw));
|
||||
|
||||
pIB += maxIndicesPerDraw * indexSize;
|
||||
remainingIndices -= numIndicesForDraw;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue