pan/decode: Introduce the concept of usermode queue
This way we allow JUMPs to be decoded when the decode function is passed an indirect CS buffer that's called from a kernelmode queue. Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com> Reviewed-by: Antonino Maniscalco <antonino.maniscalco@collabora.com> Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26358>
This commit is contained in:
committed by
Marge Bot
parent
2e9450f49f
commit
ce24f78603
@@ -41,6 +41,12 @@ struct pandecode_context {
|
||||
struct util_dynarray ro_mappings;
|
||||
int dump_frame_count;
|
||||
simple_mtx_t lock;
|
||||
|
||||
/* On CSF context, set to true if the root CS ring buffer
|
||||
* is managed in userspace. The blob does that, and mesa might use
|
||||
* usermode queues too at some point.
|
||||
*/
|
||||
bool usermode_queue;
|
||||
};
|
||||
|
||||
void pandecode_dump_file_open(struct pandecode_context *ctx);
|
||||
|
||||
@@ -951,6 +951,11 @@ GENX(pandecode_cs)(struct pandecode_context *ctx, mali_ptr queue, uint32_t size,
|
||||
.ip = cs,
|
||||
.end = cs + (size / 8),
|
||||
.gpu_id = gpu_id,
|
||||
|
||||
/* If this is a kernel mode queue, we don't see the root ring buffer and
|
||||
* we must adjust the initial call stack depth accordingly.
|
||||
*/
|
||||
.call_stack_depth = ctx->usermode_queue ? 0 : 1,
|
||||
};
|
||||
|
||||
if (size) {
|
||||
|
||||
Reference in New Issue
Block a user