diff --git a/offload/liboffload/src/OffloadImpl.cpp b/offload/liboffload/src/OffloadImpl.cpp index 54c6d452cbd9e..5374b87ee63f6 100644 --- a/offload/liboffload/src/OffloadImpl.cpp +++ b/offload/liboffload/src/OffloadImpl.cpp @@ -339,8 +339,15 @@ Error olGetDeviceInfoImplDetail(ol_device_handle_t Device, // None of the existing plugins specify a limit on a single allocation, // so return the global memory size instead case OL_DEVICE_INFO_MAX_MEM_ALLOC_SIZE: - PropName = OL_DEVICE_INFO_GLOBAL_MEM_SIZE; - break; + [[fallthrough]]; + // AMD doesn't provide the global memory size (trivially) with the device info + // struct, so use the plugin interface + case OL_DEVICE_INFO_GLOBAL_MEM_SIZE: { + uint64_t Mem; + if (auto Err = Device->Device->getDeviceMemorySize(Mem)) + return Err; + return Info.write(Mem); + } break; default: break; @@ -368,14 +375,6 @@ Error olGetDeviceInfoImplDetail(ol_device_handle_t Device, return Info.writeString(std::get(Entry->Value).c_str()); } - case OL_DEVICE_INFO_GLOBAL_MEM_SIZE: { - // Uint64 values - if (!std::holds_alternative(Entry->Value)) - return makeError(ErrorCode::BACKEND_FAILURE, - "plugin returned incorrect type"); - return Info.write(std::get(Entry->Value)); - } - case OL_DEVICE_INFO_MAX_WORK_GROUP_SIZE: case OL_DEVICE_INFO_VENDOR_ID: case OL_DEVICE_INFO_NUM_COMPUTE_UNITS: