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:
Boris Brezillon
2023-11-15 12:08:24 +01:00
committed by Marge Bot
parent 2e9450f49f
commit ce24f78603
2 changed files with 11 additions and 0 deletions
+6
View File
@@ -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);
+5
View File
@@ -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) {