RVGPU命令流 ======================= Command Stream ####################### RVGPU的命令流(command stream)是CPU控制GPU的命令组合,RVGPU中的命令包含如下: - 顶点处理命令 - 像素处理命令 - ... 后面会添加更多的命令 command stream的格式如下: :: command_stream -----> +-------------+ | Command 1 | +-------------+ | Command 2 | +-------------+ | Command 3 | +-------------+ | ...... | +-------------+ | END Command | +-------------+ Command的结构如下: :: typedef struct { enum cs_type type; union { command_vs vs; command_fs fs; } cmd; } command; 其中 command 类型定义如下: :: enum cs_type { CS_TYPE_VS = 1, CS_TYPE_FS = 2, CS_TYPE_END = 3, } 其中 vs command 和 fs command 定义如下: :: typedef struct { uint32_t vertex_count; uint64_t shader; uint64_t layout; } command_vs; typedef struct { xxxxx } command_fs; 字段 shader为一个指针,指向存储着色器程序的地址。layout为一个结构体,这个结构体是用户自定义的,指向的的是shader的输入输出接口。 比如要进行如下的两个数组相加: :: array_out[i] = array_a[i] + array_b[i]; 则这段shader程序的输入为两个数组的指针,输出为结构数组的指针,则可以定义layout为: :: struct layout { uint32_t *array_a; uint32_t *array_b; uint32_t *array_out; };