From 1ed7f3e0281de29fd99f7d4802fcc5a1906930f8 Mon Sep 17 00:00:00 2001 From: Yuri Kunde Schlesner Date: Mon, 7 Sep 2015 19:22:44 -0300 Subject: GSP: Implement command 0x05, used for flushing caches May fix additional texture caching issues. (Though mostly in homebrew, I haven't seen any commercial software use this to flush anything but command lists.) --- src/core/hle/service/gsp_gpu.h | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'src/core/hle/service/gsp_gpu.h') diff --git a/src/core/hle/service/gsp_gpu.h b/src/core/hle/service/gsp_gpu.h index 8bcb30ad1..0e2f7a21e 100644 --- a/src/core/hle/service/gsp_gpu.h +++ b/src/core/hle/service/gsp_gpu.h @@ -31,7 +31,8 @@ enum class InterruptId : u8 { /// GSP command ID enum class CommandId : u32 { REQUEST_DMA = 0x00, - SET_COMMAND_LIST_LAST = 0x01, + /// Submits a commandlist for execution by the GPU. + SUBMIT_GPU_CMDLIST = 0x01, // Fills a given memory range with a particular value SET_MEMORY_FILL = 0x02, @@ -42,8 +43,8 @@ enum class CommandId : u32 { // Conceptionally similar to SET_DISPLAY_TRANSFER and presumable uses the same hardware path SET_TEXTURE_COPY = 0x04, - - SET_COMMAND_LIST_FIRST = 0x05, + /// Flushes up to 3 cache regions in a single command. + CACHE_FLUSH = 0x05, }; /// GSP thread interrupt relay queue @@ -106,7 +107,10 @@ struct Command { struct { u32 address; u32 size; - } set_command_list_last; + u32 flags; + u32 unused[3]; + u32 do_flush; + } submit_gpu_cmdlist; struct { u32 start1; @@ -138,6 +142,13 @@ struct Command { u32 flags; } texture_copy; + struct { + struct { + u32 address; + u32 size; + } regions[3]; + } cache_flush; + u8 raw_data[0x1C]; }; }; -- cgit v1.2.3