rocr: Refactor SDMA object creation (#2629)
Refactor SDMA object creation and add comment to clarify why GCR is not needed on DXG.
Este commit está contenido en:
@@ -717,7 +717,13 @@ core::Queue* GpuAgent::CreateInterceptibleQueue(void (*callback)(hsa_status_t st
|
||||
core::Blit* GpuAgent::CreateBlitSdma(bool use_xgmi, int rec_eng) {
|
||||
AMD::BlitSdmaBase* sdma;
|
||||
size_t copy_size_override = 0;
|
||||
const size_t copy_size_overrides[2] = {0x3fffff, 0x3fffffff};
|
||||
constexpr size_t copy_size_overrides[2] = {0x3fffff, 0x3fffffff};
|
||||
|
||||
/*
|
||||
* On DXG SDMA packets placed in the queue are wrapped inside GCR packets by
|
||||
* underlying driver and submitted into another queue. So GCR is not needed.
|
||||
*/
|
||||
auto isDXG = core::Runtime::runtime_singleton_->thunkLoader()->IsDXG();
|
||||
|
||||
switch (isa_->GetMajorVersion()) {
|
||||
case 9:
|
||||
@@ -726,17 +732,13 @@ core::Blit* GpuAgent::CreateBlitSdma(bool use_xgmi, int rec_eng) {
|
||||
copy_size_overrides[1] : copy_size_overrides[0];
|
||||
break;
|
||||
case 10:
|
||||
sdma = new BlitSdmaV5();
|
||||
sdma = (isDXG ? static_cast<BlitSdmaBase*>(new BlitSdmaV4()) : static_cast<BlitSdmaBase*>(new BlitSdmaV5()));
|
||||
copy_size_override = isa_->GetMinorVersion() < 3 ? copy_size_overrides[0] :
|
||||
copy_size_overrides[1];
|
||||
break;
|
||||
case 11:
|
||||
case 12:
|
||||
if (core::Runtime::runtime_singleton_->thunkLoader()->IsDXG()) {
|
||||
sdma = new BlitSdmaV4();
|
||||
} else {
|
||||
sdma = new BlitSdmaV5();
|
||||
}
|
||||
sdma = (isDXG ? static_cast<BlitSdmaBase*>(new BlitSdmaV4()) : static_cast<BlitSdmaBase*>(new BlitSdmaV5()));
|
||||
copy_size_override = copy_size_overrides[1];
|
||||
break;
|
||||
default:
|
||||
|
||||
Referencia en una nueva incidencia
Block a user