diff options
author | Lucas Fryzek <lucas.fryzek@fryzekconcepts.com> | 2024-08-06 21:09:46 +0100 |
---|---|---|
committer | Lucas Fryzek <lucas.fryzek@fryzekconcepts.com> | 2024-08-06 21:09:46 +0100 |
commit | b77021daaa375b0553ac78b0d8f46eca05ccf415 (patch) | |
tree | 1a2e073c51a1a6debadea52ee63cb41943434e4b | |
parent | deb35af5181d960c4334414981b8fd3e603a94b3 (diff) |
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.
-rw-r--r-- | src/drv.c | 12 | ||||
-rw-r--r-- | src/wrap.c | 7 |
2 files changed, 11 insertions, 8 deletions
@@ -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, @@ -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++) |