diff --git a/shared/source/os_interface/windows/wddm/wddm_interface.cpp b/shared/source/os_interface/windows/wddm/wddm_interface.cpp index b15cc378eb..e721f28d44 100644 --- a/shared/source/os_interface/windows/wddm/wddm_interface.cpp +++ b/shared/source/os_interface/windows/wddm/wddm_interface.cpp @@ -156,8 +156,18 @@ bool WddmInterface23::submit(uint64_t commandBuffer, size_t size, void *commandH submitCommand.CommandBuffer = commandBuffer; submitCommand.CommandLength = static_cast(size); - submitCommand.pPrivateDriverData = commandHeader; - submitCommand.PrivateDriverDataSize = sizeof(COMMAND_BUFFER_HEADER); + COMMAND_BUFFER_HEADER *pHeader = reinterpret_cast(commandHeader); + UmKmDataTempStorage internalRepresentation; + if (wddm.getHwDeviceId()->getUmKmDataTranslator()->enabled()) { + internalRepresentation.resize(wddm.getHwDeviceId()->getUmKmDataTranslator()->getSizeForCommandBufferHeaderDataInternalRepresentation()); + bool translated = wddm.getHwDeviceId()->getUmKmDataTranslator()->translateCommandBufferHeaderDataToInternalRepresentation(internalRepresentation.data(), internalRepresentation.size(), *pHeader); + UNRECOVERABLE_IF(false == translated); + submitCommand.pPrivateDriverData = internalRepresentation.data(); + submitCommand.PrivateDriverDataSize = static_cast(internalRepresentation.size()); + } else { + submitCommand.pPrivateDriverData = pHeader; + submitCommand.PrivateDriverDataSize = sizeof(COMMAND_BUFFER_HEADER); + } if (!debugManager.flags.UseCommandBufferHeaderSizeForWddmQueueSubmission.get()) { submitCommand.PrivateDriverDataSize = MemoryConstants::pageSize;