From b77021daaa375b0553ac78b0d8f46eca05ccf415 Mon Sep 17 00:00:00 2001 From: Lucas Fryzek Date: Tue, 6 Aug 2024 21:09:46 +0100 Subject: wrap: Zero more buffers Zero more buffers so its easier to figure out what needs to be copied and modified in the example driver to replay the dumped command buffer. --- src/drv.c | 12 ++++++------ src/wrap.c | 7 +++++-- 2 files changed, 11 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/drv.c b/src/drv.c index a2b8c84..e4d74f5 100644 --- a/src/drv.c +++ b/src/drv.c @@ -370,12 +370,12 @@ static void register_hw_render_ctx(struct driver_state *state) { 0x21, 0x1, 0x0, - state->ccb_buffer.sClientMemInfo.sDevVAddr.uiAddr, - state->kernel_buffer_2.sClientMemInfo.sDevVAddr.uiAddr, + state->ccb_buffer.sClientMemInfo.sDevVAddr.uiAddr, // Not all zeros + state->kernel_buffer_2.sClientMemInfo.sDevVAddr.uiAddr, // All zeros 0x0, - state->kernel_buffer_3.sClientMemInfo.sDevVAddr.uiAddr, - state->perctx_3d_buffer.sClientMemInfo.sDevVAddr.uiAddr, - state->ta_data_buffer.sClientMemInfo.sDevVAddr.uiAddr, + state->kernel_buffer_3.sClientMemInfo.sDevVAddr.uiAddr, // All zeros + state->perctx_3d_buffer.sClientMemInfo.sDevVAddr.uiAddr, // All zeros + state->ta_data_buffer.sClientMemInfo.sDevVAddr.uiAddr, // All zeros 0x0, 0x0, 0x0, @@ -384,7 +384,7 @@ static void register_hw_render_ctx(struct driver_state *state) { 0x0, 0x0, 0x0, - 0x50f, + 0x50f, // This value seems to change but I'm not sure why }; PVRSRV_BRIDGE_IN_SGX_REGISTER_HW_RENDER_CONTEXT in = { .hDevCookie = state->dev_cookie, diff --git a/src/wrap.c b/src/wrap.c index 6b96f36..01ae2a3 100644 --- a/src/wrap.c +++ b/src/wrap.c @@ -212,9 +212,12 @@ static void clear_mem(struct mem_entry *mem) { || heap == PVR_HEAP_GENERAL //|| heap == PVR_HEAP_KERNEL_DATA || heap == PVR_HEAP_PERCONTEXT_3DPARAMETERS - || heap == PVR_HEAP_SYNC_INFO; + || heap == PVR_HEAP_SYNC_INFO + || heap == PVR_HEAP_TA_DATA; IMG_HANDLE handle = mem->mem_info.hKernelMemInfo; - bool is_special_heap = (uintptr_t)handle == 0x14; + bool is_special_heap = (uintptr_t)handle == 0x14 || + (uintptr_t)handle == 0x15 || + (uintptr_t)handle == 0x10; if(mem->type == MEM_TYPE_NORMAL && (valid_heap || is_special_heap)) { printf("Clearing heap\n"); for (int i = 0; i < 2; i++) -- cgit