Tony Wasserka 12 лет назад
Родитель
Сommit
4b141791ed
2 измененных файлов с 15 добавлено и 1 удалено
  1. 7 1
      src/core/hle/service/gsp.cpp
  2. 8 0
      src/core/hle/service/gsp.h

+ 7 - 1
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;
     }
 

+ 8 - 0
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,
 };