diff options
-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++) |