mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-22 00:08:09 +02:00
u_vector_add() don't keep the returned pointers valid.
After the initial size allocated in u_vector_init() is reached it will
allocate a bigger buffer and copy data from older buffer to the new
one and free the old buffer, making all the previous pointers returned
by u_vector_add() invalid and crashing the application when trying to
access it.
This is reproduced when running
dEQP-VK.synchronization.signal_order.timeline_semaphore.* in DG2 SKUs
that has 4 CCS engines, INTEL_COMPUTE_CLASS=1 is set and of course
perfetto build is enabled.
To fix this issue here I'm moving the storage/allocation of
struct intel_ds_queue to struct anv_queue/iris_batch and using
struct list_head to maintain a chain of intel_ds_queue of the
intel_ds_device.
This allows us to append or remove queues dynamically in future if
necessary.
Fixes:
|
||
|---|---|---|
| .. | ||
| .clang-format | ||
| intel_driver_ds.cc | ||
| intel_driver_ds.h | ||
| intel_pps_driver.cc | ||
| intel_pps_driver.h | ||
| intel_pps_perf.cc | ||
| intel_pps_perf.h | ||
| intel_pps_priv.h | ||
| intel_tracepoints.py | ||
| meson.build | ||