mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-23 16:10:33 +01:00
swr: [rasterizer archrast] Add thread tags to event files.
This allows the post-processor to easily detect the API thread and to process frame information. The frame information is needed to optimized how data is processed from worker threads. Reviewed-by: Bruce Cherniak <bruce.cherniak@intel.com>
This commit is contained in:
parent
7a2387c3e0
commit
1a3ed86348
5 changed files with 24 additions and 4 deletions
|
|
@ -97,6 +97,14 @@ event End
|
|||
uint32_t count;
|
||||
};
|
||||
|
||||
event ThreadStartApiEvent
|
||||
{
|
||||
};
|
||||
|
||||
event ThreadStartWorkerEvent
|
||||
{
|
||||
};
|
||||
|
||||
event DrawInstancedEvent
|
||||
{
|
||||
uint32_t drawId;
|
||||
|
|
|
|||
|
|
@ -112,10 +112,11 @@ HANDLE SwrCreateContext(
|
|||
pContext->ppScratch = new uint8_t*[pContext->NumWorkerThreads];
|
||||
pContext->pStats = new SWR_STATS[pContext->NumWorkerThreads];
|
||||
|
||||
#if KNOB_ENABLE_AR
|
||||
#if defined(KNOB_ENABLE_AR)
|
||||
// Setup ArchRast thread contexts which includes +1 for API thread.
|
||||
pContext->pArContext = new HANDLE[pContext->NumWorkerThreads+1];
|
||||
pContext->pArContext[pContext->NumWorkerThreads] = ArchRast::CreateThreadContext();
|
||||
_AR_EVENT(pContext->pArContext[pContext->NumWorkerThreads], ThreadStartApiEvent());
|
||||
#endif
|
||||
|
||||
// Allocate scratch space for workers.
|
||||
|
|
@ -133,9 +134,10 @@ HANDLE SwrCreateContext(
|
|||
pContext->ppScratch[i] = (uint8_t*)AlignedMalloc(32 * sizeof(KILOBYTE), KNOB_SIMD_WIDTH * 4);
|
||||
#endif
|
||||
|
||||
#if KNOB_ENABLE_AR
|
||||
#if defined(KNOB_ENABLE_AR)
|
||||
// Initialize worker thread context for ArchRast.
|
||||
pContext->pArContext[i] = ArchRast::CreateThreadContext();
|
||||
_AR_EVENT(pContext->pArContext[i], ThreadStartWorkerEvent());
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -383,7 +385,7 @@ void SwrDestroyContext(HANDLE hContext)
|
|||
AlignedFree(pContext->ppScratch[i]);
|
||||
#endif
|
||||
|
||||
#if KNOB_ENABLE_AR
|
||||
#if defined(KNOB_ENABLE_AR)
|
||||
ArchRast::DestroyThreadContext(pContext->pArContext[i]);
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,6 +49,8 @@ def parse_event_fields(lines, idx, event_dict):
|
|||
field_types = []
|
||||
end_of_event = False
|
||||
|
||||
num_fields = 0
|
||||
|
||||
# record all fields in event definition.
|
||||
# note: we don't check if there's a leading brace.
|
||||
while not end_of_event and idx < len(lines):
|
||||
|
|
@ -60,11 +62,14 @@ def parse_event_fields(lines, idx, event_dict):
|
|||
if field:
|
||||
field_types.append(field.group(2))
|
||||
field_names.append(field.group(4))
|
||||
num_fields += 1
|
||||
|
||||
end_of_event = re.match(r"(\s*)};", line)
|
||||
|
||||
event_dict['field_types'] = field_types
|
||||
event_dict['field_names'] = field_names
|
||||
event_dict['num_fields'] = num_fields
|
||||
|
||||
return idx
|
||||
|
||||
def parse_enums(lines, idx, event_dict):
|
||||
|
|
|
|||
|
|
@ -86,9 +86,10 @@ namespace ArchRast
|
|||
${field_types[i]} ${field_names[i]},
|
||||
% endif
|
||||
% if i == len(field_names)-1:
|
||||
${field_types[i]} ${field_names[i]})
|
||||
${field_types[i]} ${field_names[i]}
|
||||
% endif
|
||||
% endfor
|
||||
)
|
||||
{
|
||||
% for i in range(len(field_names)):
|
||||
data.${field_names[i]} = ${field_names[i]};
|
||||
|
|
|
|||
|
|
@ -83,7 +83,11 @@ namespace ArchRast
|
|||
% for name in protos['event_names']:
|
||||
virtual void handle(${name}& event)
|
||||
{
|
||||
% if protos['events'][name]['num_fields'] == 0:
|
||||
write(${protos['events'][name]['event_id']}, (char*)&event.data, 0);
|
||||
% else:
|
||||
write(${protos['events'][name]['event_id']}, (char*)&event.data, sizeof(event.data));
|
||||
%endif
|
||||
}
|
||||
% endfor
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue