summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTony Wasserka <NeoBrainX@gmail.com>2014-07-22 13:04:16 +0200
committerTony Wasserka <NeoBrainX@gmail.com>2014-07-23 00:44:31 +0200
commit4b141791ed8bb4c1d80b239a1195897876fa30bb (patch)
tree6596840bc780f9dba6e54946e8e5837a974e9b75
parentGSP: Clean up GX command processing a lot and treat command id as a u8 rather than a u32. (diff)
downloadyuzu-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
-rw-r--r--src/core/hle/service/gsp.cpp8
-rw-r--r--src/core/hle/service/gsp.h8
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,
};