diff options
author | Tony Wasserka <NeoBrainX@gmail.com> | 2014-07-22 13:04:16 +0200 |
---|---|---|
committer | Tony Wasserka <NeoBrainX@gmail.com> | 2014-07-23 00:44:31 +0200 |
commit | 4b141791ed8bb4c1d80b239a1195897876fa30bb (patch) | |
tree | 6596840bc780f9dba6e54946e8e5837a974e9b75 /src/core/hle/service | |
parent | GSP: Clean up GX command processing a lot and treat command id as a u8 rather than a u32. (diff) | |
download | yuzu-4b141791ed8bb4c1d80b239a1195897876fa30bb.tar yuzu-4b141791ed8bb4c1d80b239a1195897876fa30bb.tar.gz yuzu-4b141791ed8bb4c1d80b239a1195897876fa30bb.tar.bz2 yuzu-4b141791ed8bb4c1d80b239a1195897876fa30bb.tar.lz yuzu-4b141791ed8bb4c1d80b239a1195897876fa30bb.tar.xz yuzu-4b141791ed8bb4c1d80b239a1195897876fa30bb.tar.zst yuzu-4b141791ed8bb4c1d80b239a1195897876fa30bb.zip |
Diffstat (limited to 'src/core/hle/service')
-rw-r--r-- | src/core/hle/service/gsp.cpp | 8 | ||||
-rw-r--r-- | src/core/hle/service/gsp.h | 8 |
2 files changed, 15 insertions, 1 deletions
diff --git a/src/core/hle/service/gsp.cpp b/src/core/hle/service/gsp.cpp index 05753fa2c..b20203e27 100644 --- a/src/core/hle/service/gsp.cpp +++ b/src/core/hle/service/gsp.cpp @@ -171,6 +171,9 @@ void TriggerCmdReqQueue(Service::Interface* self) { command.dma_request.size); break; + // ctrulib homebrew sends all relevant command list data with this command, + // hence we do all "interesting" stuff here and do nothing in SET_COMMAND_LIST_FIRST. + // TODO: This will need some rework in the future. case GXCommandId::SET_COMMAND_LIST_LAST: { auto& params = command.set_command_list_last; @@ -186,6 +189,8 @@ void TriggerCmdReqQueue(Service::Interface* self) { break; } + // It's assumed that the two "blocks" behave equivalently. + // Presumably this is done simply to allow two memory fills to run in parallel. case GXCommandId::SET_MEMORY_FILL: { auto& params = command.memory_fill; @@ -218,9 +223,10 @@ void TriggerCmdReqQueue(Service::Interface* self) { break; } + // TODO: Figure out what exactly SET_COMMAND_LIST_FIRST and SET_COMMAND_LIST_LAST + // are supposed to do. case GXCommandId::SET_COMMAND_LIST_FIRST: { - // TODO break; } diff --git a/src/core/hle/service/gsp.h b/src/core/hle/service/gsp.h index f36afb697..a83cb4846 100644 --- a/src/core/hle/service/gsp.h +++ b/src/core/hle/service/gsp.h @@ -15,9 +15,17 @@ namespace GSP_GPU { enum class GXCommandId : u32 { REQUEST_DMA = 0x00, SET_COMMAND_LIST_LAST = 0x01, + + // Fills a given memory range with a particular value SET_MEMORY_FILL = 0x02, + + // Copies an image and optionally performs color-conversion or scaling. + // This is highly similar to the GameCube's EFB copy feature SET_DISPLAY_TRANSFER = 0x03, + + // Conceptionally similar to SET_DISPLAY_TRANSFER and presumable uses the same hardware path SET_TEXTURE_COPY = 0x04, + SET_COMMAND_LIST_FIRST = 0x05, }; |