A Modern GPGPU API & wip linux RDNA2+ Driver
rdna driver linux gpu
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

api: fixed root argument to dispatch

+11 -9
+2 -2
kestrel/include/kestrel/interface.h
··· 29 29 void (*fn_cmd_write_timestamp)(KesCommandList, kes_gpuptr_t addr); 30 30 void (*fn_cmd_signal_after)(KesCommandList, enum KesStage before, kes_gpuptr_t addr, uint64_t value, enum KesSignal); 31 31 void (*fn_cmd_wait_before)(KesCommandList, enum KesStage after, kes_gpuptr_t addr, uint64_t value, enum KesOp, enum KesHazardFlags, uint64_t mask); 32 - void (*fn_cmd_dispatch)(KesCommandList command_list, uint32_t x, uint32_t y, uint32_t z); 33 - void (*fn_cmd_dispatch_indirect)(KesCommandList command_list, kes_gpuptr_t command_addr); 32 + void (*fn_cmd_dispatch)(KesCommandList command_list, kes_gpuptr_t data, uint32_t x, uint32_t y, uint32_t z); 33 + void (*fn_cmd_dispatch_indirect)(KesCommandList command_list, kes_gpuptr_t data, kes_gpuptr_t command_addr); 34 34 }; 35 35 36 36 /**
+5 -3
kestrel/include/kestrel/kestrel.h
··· 295 295 296 296 /** 297 297 * Record a compute shader dispatch in the command list. 298 - * @param command_list 298 + * @param command_list The command list to record the command in. 299 + * @param data The GPU data root pointer. 299 300 * @param x 300 301 * @param y 301 302 * @param z 302 303 */ 303 - void kes_cmd_dispatch(KesCommandList command_list, uint32_t x, uint32_t y, uint32_t z); 304 + void kes_cmd_dispatch(KesCommandList command_list, kes_gpuptr_t data, uint32_t x, uint32_t y, uint32_t z); 304 305 305 306 /** 306 307 * Record an indirect compute shader dispatch in the command list. 307 308 * @param command_list The command list to record the command in. 309 + * @param data The GPU data root pointer. 308 310 * @param command_addr A GPU pointer to a KesDispatchIndirectCommand 309 311 * @sa KesDispatchIndirectCommand 310 312 */ 311 - void kes_cmd_dispatch_indirect(KesCommandList command_list, kes_gpuptr_t command_addr); 313 + void kes_cmd_dispatch_indirect(KesCommandList command_list, kes_gpuptr_t data, kes_gpuptr_t command_addr); 312 314 313 315 314 316 #ifdef __cplusplus
+4 -4
kestrel/rt/api.cpp
··· 201 201 dev->fns.fn_cmd_wait_before(clhandle->cmdlist, after, addr, value, op, hazard, mask); 202 202 } 203 203 204 - API_EXPORT void kes_cmd_dispatch(KesCommandList pcl, uint32_t x, uint32_t y, uint32_t z) { 204 + API_EXPORT void kes_cmd_dispatch(KesCommandList pcl, kes_gpuptr_t data, uint32_t x, uint32_t y, uint32_t z) { 205 205 auto *clhandle = reinterpret_cast<CommandListHandle *>(pcl); 206 206 auto *dev = clhandle->dev; 207 207 208 - dev->fns.fn_cmd_dispatch(clhandle->cmdlist, x, y, z); 208 + dev->fns.fn_cmd_dispatch(clhandle->cmdlist, data, x, y, z); 209 209 } 210 210 211 - API_EXPORT void kes_cmd_dispatch_indirect(KesCommandList pcl, kes_gpuptr_t command_addr) { 211 + API_EXPORT void kes_cmd_dispatch_indirect(KesCommandList pcl, kes_gpuptr_t data, kes_gpuptr_t command_addr) { 212 212 auto *clhandle = reinterpret_cast<CommandListHandle *>(pcl); 213 213 auto *dev = clhandle->dev; 214 214 215 - dev->fns.fn_cmd_dispatch_indirect(clhandle->cmdlist, command_addr); 215 + dev->fns.fn_cmd_dispatch_indirect(clhandle->cmdlist, data, command_addr); 216 216 }