| 472 | self.internal_cmd_sizes.append(len(arr)) |
| 473 | |
| 474 | def copy(self, dest:HCQBuffer, src:HCQBuffer, copy_size:int): |
| 475 | copied, copy_commands = 0, (copy_size + self.max_copy_size - 1) // self.max_copy_size |
| 476 | |
| 477 | for _ in range(copy_commands): |
| 478 | step_copy_size = min(copy_size - copied, self.max_copy_size) |
| 479 | |
| 480 | self.q(self.sdma.SDMA_OP_COPY | self.sdma.SDMA_PKT_COPY_LINEAR_HEADER_SUB_OP(self.sdma.SDMA_SUBOP_COPY_LINEAR), |
| 481 | self.sdma.SDMA_PKT_COPY_LINEAR_COUNT_COUNT(step_copy_size - 1), 0, *data64_le(src.va_addr + copied), *data64_le(dest.va_addr + copied)) |
| 482 | |
| 483 | copied += step_copy_size |
| 484 | return self |
| 485 | |
| 486 | def signal(self, signal:AMDSignal, value:sint=0): |
| 487 | fence_flags = self.sdma.SDMA_PKT_FENCE_HEADER_MTYPE(3) if self.dev.target[0] != 9 else 0 |