summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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,
};