fix: Add asserts to ensure NonCopyable and NonMovable n/n

Related-To: NEO-14068

Signed-off-by: Filip Hazubski <filip.hazubski@intel.com>
This commit is contained in:
Filip Hazubski 2025-02-18 17:32:35 +00:00 committed by Compute-Runtime-Automation
parent aeff5513c3
commit b60c02d597
36 changed files with 71 additions and 51 deletions

View File

@ -6,6 +6,8 @@
*/
#pragma once
#include "shared/source/helpers/non_copyable_or_moveable.h"
#include "level_zero/api/sysman/zes_handles_struct.h"
#include <level_zero/zes_api.h>
@ -31,7 +33,7 @@ class VfManagement : _zes_vf_handle_t {
}
};
struct VfManagementHandleContext {
struct VfManagementHandleContext : NEO::NonCopyableAndNonMovableClass {
VfManagementHandleContext(OsSysman *pOsSysman) : pOsSysman(pOsSysman){};
~VfManagementHandleContext();
@ -47,5 +49,7 @@ struct VfManagementHandleContext {
std::once_flag initVfManagementOnce;
};
static_assert(NEO::NonCopyableAndNonMovable<VfManagementHandleContext>);
} // namespace Sysman
} // namespace L0

View File

@ -68,6 +68,7 @@ class Context : public BaseObject<_cl_context> {
const StackVec<NEO::GraphicsAllocation *, 1> &getAllocationsVector();
};
static_assert(NEO::NonCopyable<AbstractBuffersPool<BufferPool, Buffer, MemObj>>);
class BufferPoolAllocator : public AbstractBuffersAllocator<BufferPool, Buffer, MemObj> {
using BaseType = AbstractBuffersAllocator<BufferPool, Buffer, MemObj>;

View File

@ -78,6 +78,7 @@ class Event : public BaseObject<_cl_event>, public IDNode<Event> {
int32_t callbackExecutionStatusTarget; // minimum event execution status that will triger this callback
void *userData;
};
static_assert(NEO::NonCopyableAndNonMovable<IFList<Callback, true, true>>);
struct ProfilingInfo {
uint64_t cpuTimeInNs;

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2018-2020 Intel Corporation
* Copyright (C) 2018-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -24,6 +24,7 @@ struct TrackedEvent : IFNode<TrackedEvent> {
Event *ev = nullptr;
int64_t eventId = 1;
};
static_assert(NEO::NonCopyableAndNonMovable<IFList<TrackedEvent, true, true>>);
class EventsTracker {

View File

@ -31,6 +31,8 @@ namespace NEO {
template void KernelOperation::ResourceCleaner::operator()<LinearStream>(LinearStream *);
template void KernelOperation::ResourceCleaner::operator()<IndirectHeap>(IndirectHeap *);
static_assert(NEO::NonCopyableAndNonMovable<DecRefInternalAtScopeEnd<MemObj>>);
CommandMapUnmap::CommandMapUnmap(MapOperationType operationType, MemObj &memObj, MemObjSizeArray &copySize, MemObjOffsetArray &copyOffset, bool readOnly,
CommandQueue &commandQueue)
: Command(commandQueue), memObj(memObj), copySize(copySize), copyOffset(copyOffset), readOnly(readOnly), operationType(operationType) {

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2018-2024 Intel Corporation
* Copyright (C) 2018-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -79,9 +79,6 @@ class AUBCommandStreamReceiverHw : public CommandStreamReceiverSimulatedHw<GfxFa
const DeviceBitfield deviceBitfield);
~AUBCommandStreamReceiverHw() override;
AUBCommandStreamReceiverHw(const AUBCommandStreamReceiverHw &) = delete;
AUBCommandStreamReceiverHw &operator=(const AUBCommandStreamReceiverHw &) = delete;
MOCKABLE_VIRTUAL void openFile(const std::string &fileName);
MOCKABLE_VIRTUAL bool reopenFile(const std::string &fileName);
MOCKABLE_VIRTUAL void initFile(const std::string &fileName);

View File

@ -15,6 +15,7 @@
#include "shared/source/helpers/common_types.h"
#include "shared/source/helpers/completion_stamp.h"
#include "shared/source/helpers/kmd_notify_properties.h"
#include "shared/source/helpers/non_copyable_or_moveable.h"
#include "shared/source/helpers/options.h"
#include "shared/source/memory_manager/graphics_allocation.h"
#include "shared/source/utilities/spinlock.h"
@ -78,7 +79,7 @@ enum class DispatchMode {
batchedDispatch // dispatching is batched, explicit clFlush is required
};
class CommandStreamReceiver {
class CommandStreamReceiver : NEO::NonCopyableAndNonMovableClass {
public:
static constexpr size_t startingResidencyContainerSize = 128;
@ -93,8 +94,6 @@ class CommandStreamReceiver {
CommandStreamReceiver(ExecutionEnvironment &executionEnvironment,
uint32_t rootDeviceIndex,
const DeviceBitfield deviceBitfield);
CommandStreamReceiver(const CommandStreamReceiver &) = delete;
CommandStreamReceiver &operator=(const CommandStreamReceiver &) = delete;
virtual ~CommandStreamReceiver();
@ -709,6 +708,8 @@ class CommandStreamReceiver {
bool latestFlushIsTaskCountUpdateOnly = false;
};
static_assert(NEO::NonCopyableAndNonMovable<CommandStreamReceiver>);
typedef CommandStreamReceiver *(*CommandStreamReceiverCreateFunc)(bool withAubDump,
ExecutionEnvironment &executionEnvironment,
uint32_t rootDeviceIndex,

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2018-2024 Intel Corporation
* Copyright (C) 2018-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -27,9 +27,6 @@ class CommandStreamReceiverWithAUBDump : public BaseCSR {
uint32_t rootDeviceIndex,
const DeviceBitfield deviceBitfield);
CommandStreamReceiverWithAUBDump(const CommandStreamReceiverWithAUBDump &) = delete;
CommandStreamReceiverWithAUBDump &operator=(const CommandStreamReceiverWithAUBDump &) = delete;
SubmissionStatus flush(BatchBuffer &batchBuffer, ResidencyContainer &allocationsForResidency) override;
void makeNonResident(GraphicsAllocation &gfxAllocation) override;

View File

@ -9,6 +9,7 @@
#include "shared/source/command_container/cmdcontainer.h"
#include "shared/source/command_stream/csr_definitions.h"
#include "shared/source/command_stream/task_count_helper.h"
#include "shared/source/helpers/non_copyable_or_moveable.h"
#include "shared/source/helpers/pipe_control_args.h"
#include "shared/source/utilities/idlist.h"
@ -72,10 +73,8 @@ struct BatchBuffer {
bool taskCountUpdateOnly = false;
};
struct CommandBuffer : public IDNode<CommandBuffer> {
struct CommandBuffer : public IDNode<CommandBuffer>, NEO::NonCopyableAndNonMovableClass {
CommandBuffer(Device &device);
CommandBuffer &operator=(const CommandBuffer &) = delete;
CommandBuffer &operator=(CommandBuffer &&) = delete;
~CommandBuffer() override;
ResidencyContainer surfaces;
BatchBuffer batchBuffer;
@ -89,6 +88,8 @@ struct CommandBuffer : public IDNode<CommandBuffer> {
Device &device;
};
static_assert(NEO::NonCopyableAndNonMovable<CommandBuffer>);
struct CommandBufferList : public IDList<CommandBuffer, false, true, false> {};
using ResourcePackage = StackVec<GraphicsAllocation *, 128>;

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2022 Intel Corporation
* Copyright (C) 2019-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -43,4 +43,5 @@ uint32_t AUBCommandStreamReceiverHw<Family>::getGUCWorkQueueItemHeader() {
}
template class AUBCommandStreamReceiverHw<Family>;
static_assert(NEO::NonCopyableAndNonMovable<NEO::AUBCommandStreamReceiverHw<Family>>);
} // namespace NEO

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2023 Intel Corporation
* Copyright (C) 2019-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -15,4 +15,5 @@ namespace NEO {
template class DeviceCommandStreamReceiver<Gen12LpFamily>;
template class DrmCommandStreamReceiver<Gen12LpFamily>;
template class CommandStreamReceiverWithAUBDump<DrmCommandStreamReceiver<Gen12LpFamily>>;
static_assert(NEO::NonCopyableAndNonMovable<CommandStreamReceiverWithAUBDump<DrmCommandStreamReceiver<Gen12LpFamily>>>);
} // namespace NEO

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2022 Intel Corporation
* Copyright (C) 2019-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -37,4 +37,5 @@ void populateFactoryTable<TbxCommandStreamReceiverHw<Family>>() {
template class TbxCommandStreamReceiverHw<Family>;
template class CommandStreamReceiverWithAUBDump<TbxCommandStreamReceiverHw<Family>>;
static_assert(NEO::NonCopyableAndNonMovable<CommandStreamReceiverWithAUBDump<TbxCommandStreamReceiverHw<Family>>>);
} // namespace NEO

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2019-2022 Intel Corporation
* Copyright (C) 2019-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -15,4 +15,5 @@ namespace NEO {
template class DeviceCommandStreamReceiver<Gen12LpFamily>;
template class WddmCommandStreamReceiver<Gen12LpFamily>;
template class CommandStreamReceiverWithAUBDump<WddmCommandStreamReceiver<Gen12LpFamily>>;
static_assert(NEO::NonCopyableAndNonMovable<CommandStreamReceiverWithAUBDump<WddmCommandStreamReceiver<Gen12LpFamily>>>);
} // namespace NEO

View File

@ -1,11 +1,12 @@
/*
* Copyright (C) 2020-2024 Intel Corporation
* Copyright (C) 2020-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
#include "shared/source/helpers/non_copyable_or_moveable.h"
#include "shared/source/utilities/idlist.h"
namespace NEO {
@ -18,4 +19,6 @@ class DeferrableDeletion : public IDNode<DeferrableDeletion> {
bool isExternalHostptr() const { return externalHostptr; }
bool externalHostptr = false;
};
static_assert(NEO::NonCopyableAndNonMovable<IDList<DeferrableDeletion>>);
} // namespace NEO

View File

@ -61,7 +61,7 @@ struct AbstractBuffersPool : public NonCopyableClass {
AbstractBuffersPool(MemoryManager *memoryManager, OnChunkFreeCallback onChunkFreeCallback);
AbstractBuffersPool(MemoryManager *memoryManager, OnChunkFreeCallback onChunkFreeCallback, const SmallBuffersParams &params);
AbstractBuffersPool(AbstractBuffersPool<PoolT, BufferType, BufferParentType> &&bufferPool);
AbstractBuffersPool &operator=(AbstractBuffersPool &&) = delete;
AbstractBuffersPool &operator=(AbstractBuffersPool &&other) noexcept = delete;
virtual ~AbstractBuffersPool() = default;
void tryFreeFromPoolBuffer(BufferParentType *possiblePoolBuffer, size_t offset, size_t size);

View File

@ -8,6 +8,7 @@
#pragma once
#include "shared/source/helpers/debug_helpers.h"
#include "shared/source/helpers/non_copyable_or_moveable.h"
#include <atomic>
#include <thread>
@ -168,7 +169,7 @@ struct IDNode {
};
template <typename NodeObjectType, bool threadSafe = true, bool ownsNodes = false, bool supportRecursiveLock = true>
class IDList {
class IDList : NEO::NonCopyableAndNonMovableClass {
public:
using ThisType = IDList<NodeObjectType, threadSafe, ownsNodes, supportRecursiveLock>;
@ -192,9 +193,6 @@ class IDList {
this->cleanup();
}
IDList(const IDList &) = delete;
IDList &operator=(const IDList &) = delete;
void pushFrontOne(NodeObjectType &node) {
processLocked<ThisType, &ThisType::pushFrontOneImpl>(&node);
}

View File

@ -8,6 +8,7 @@
#pragma once
#include "shared/source/helpers/mt_helpers.h"
#include "shared/source/helpers/non_copyable_or_moveable.h"
#include <atomic>
#include <memory>
@ -89,7 +90,7 @@ struct IFNode {
};
template <typename NodeObjectType, bool threadSafe = true, bool ownsNodes = false>
class IFList {
class IFList : NEO::NonCopyableAndNonMovableClass {
public:
IFList()
: head(nullptr) {
@ -103,9 +104,6 @@ class IFList {
this->cleanup();
}
IFList(const IFList &) = delete;
IFList &operator=(const IFList &) = delete;
template <bool c = threadSafe>
typename std::enable_if<c, void>::type pushFrontOne(NodeObjectType &node) {
node.next = head;

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2018-2022 Intel Corporation
* Copyright (C) 2018-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -7,6 +7,7 @@
#pragma once
#include "shared/source/helpers/debug_helpers.h"
#include "shared/source/helpers/non_copyable_or_moveable.h"
#include <atomic>
#include <memory>
@ -169,7 +170,7 @@ inline ReferenceTrackedObject<DerivedClass>::~ReferenceTrackedObject() {
}
template <typename RefTrackedObj>
class DecRefInternalAtScopeEnd final {
class DecRefInternalAtScopeEnd final : NEO::NonCopyableAndNonMovableClass {
public:
DecRefInternalAtScopeEnd(RefTrackedObj &obj) : object{obj} {
}
@ -178,11 +179,6 @@ class DecRefInternalAtScopeEnd final {
object.decRefInternal();
}
DecRefInternalAtScopeEnd(const DecRefInternalAtScopeEnd &) = delete;
DecRefInternalAtScopeEnd(DecRefInternalAtScopeEnd &&) = delete;
DecRefInternalAtScopeEnd &operator=(const DecRefInternalAtScopeEnd &) = delete;
DecRefInternalAtScopeEnd &operator=(DecRefInternalAtScopeEnd &&) = delete;
private:
RefTrackedObj &object;
};

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2024 Intel Corporation
* Copyright (C) 2024-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -24,4 +24,5 @@ void populateFactoryTable<AUBCommandStreamReceiverHw<Family>>() {
}
template class AUBCommandStreamReceiverHw<Family>;
static_assert(NEO::NonCopyableAndNonMovable<AUBCommandStreamReceiverHw<Family>>);
} // namespace NEO

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2024 Intel Corporation
* Copyright (C) 2024-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -15,4 +15,5 @@ namespace NEO {
template class DeviceCommandStreamReceiver<Xe2HpgCoreFamily>;
template class DrmCommandStreamReceiver<Xe2HpgCoreFamily>;
template class CommandStreamReceiverWithAUBDump<DrmCommandStreamReceiver<Xe2HpgCoreFamily>>;
static_assert(NEO::NonCopyableAndNonMovable<CommandStreamReceiverWithAUBDump<DrmCommandStreamReceiver<Xe2HpgCoreFamily>>>);
} // namespace NEO

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2024 Intel Corporation
* Copyright (C) 2024-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -29,4 +29,5 @@ void populateFactoryTable<TbxCommandStreamReceiverHw<Family>>() {
template class TbxCommandStreamReceiverHw<Family>;
template class CommandStreamReceiverWithAUBDump<TbxCommandStreamReceiverHw<Family>>;
static_assert(NEO::NonCopyableAndNonMovable<CommandStreamReceiverWithAUBDump<TbxCommandStreamReceiverHw<Family>>>);
} // namespace NEO

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2024 Intel Corporation
* Copyright (C) 2024-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -15,4 +15,5 @@ namespace NEO {
template class DeviceCommandStreamReceiver<Xe2HpgCoreFamily>;
template class WddmCommandStreamReceiver<Xe2HpgCoreFamily>;
template class CommandStreamReceiverWithAUBDump<WddmCommandStreamReceiver<Xe2HpgCoreFamily>>;
static_assert(NEO::NonCopyableAndNonMovable<CommandStreamReceiverWithAUBDump<WddmCommandStreamReceiver<Xe2HpgCoreFamily>>>);
} // namespace NEO

View File

@ -23,4 +23,5 @@ void populateFactoryTable<AUBCommandStreamReceiverHw<Family>>() {
}
template class AUBCommandStreamReceiverHw<Family>;
static_assert(NEO::NonCopyableAndNonMovable<AUBCommandStreamReceiverHw<Family>>);
} // namespace NEO

View File

@ -15,4 +15,5 @@ namespace NEO {
template class DeviceCommandStreamReceiver<Xe3CoreFamily>;
template class DrmCommandStreamReceiver<Xe3CoreFamily>;
template class CommandStreamReceiverWithAUBDump<DrmCommandStreamReceiver<Xe3CoreFamily>>;
static_assert(NEO::NonCopyableAndNonMovable<CommandStreamReceiverWithAUBDump<DrmCommandStreamReceiver<Xe3CoreFamily>>>);
} // namespace NEO

View File

@ -27,4 +27,5 @@ void populateFactoryTable<TbxCommandStreamReceiverHw<Family>>() {
template class TbxCommandStreamReceiverHw<Family>;
template class CommandStreamReceiverWithAUBDump<TbxCommandStreamReceiverHw<Family>>;
static_assert(NEO::NonCopyableAndNonMovable<CommandStreamReceiverWithAUBDump<TbxCommandStreamReceiverHw<Family>>>);
} // namespace NEO

View File

@ -15,4 +15,5 @@ namespace NEO {
template class DeviceCommandStreamReceiver<Xe3CoreFamily>;
template class WddmCommandStreamReceiver<Xe3CoreFamily>;
template class CommandStreamReceiverWithAUBDump<WddmCommandStreamReceiver<Xe3CoreFamily>>;
static_assert(NEO::NonCopyableAndNonMovable<CommandStreamReceiverWithAUBDump<WddmCommandStreamReceiver<Xe3CoreFamily>>>);
} // namespace NEO

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021-2022 Intel Corporation
* Copyright (C) 2021-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -24,4 +24,5 @@ void populateFactoryTable<AUBCommandStreamReceiverHw<Family>>() {
}
template class AUBCommandStreamReceiverHw<Family>;
static_assert(NEO::NonCopyableAndNonMovable<AUBCommandStreamReceiverHw<Family>>);
} // namespace NEO

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021-2023 Intel Corporation
* Copyright (C) 2021-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -15,4 +15,5 @@ namespace NEO {
template class DeviceCommandStreamReceiver<XeHpcCoreFamily>;
template class DrmCommandStreamReceiver<XeHpcCoreFamily>;
template class CommandStreamReceiverWithAUBDump<DrmCommandStreamReceiver<XeHpcCoreFamily>>;
static_assert(NEO::NonCopyableAndNonMovable<CommandStreamReceiverWithAUBDump<DrmCommandStreamReceiver<XeHpcCoreFamily>>>);
} // namespace NEO

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021-2022 Intel Corporation
* Copyright (C) 2021-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -29,4 +29,5 @@ void populateFactoryTable<TbxCommandStreamReceiverHw<Family>>() {
template class TbxCommandStreamReceiverHw<Family>;
template class CommandStreamReceiverWithAUBDump<TbxCommandStreamReceiverHw<Family>>;
static_assert(NEO::NonCopyableAndNonMovable<CommandStreamReceiverWithAUBDump<TbxCommandStreamReceiverHw<Family>>>);
} // namespace NEO

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021-2022 Intel Corporation
* Copyright (C) 2021-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -15,4 +15,5 @@ namespace NEO {
template class DeviceCommandStreamReceiver<XeHpcCoreFamily>;
template class WddmCommandStreamReceiver<XeHpcCoreFamily>;
template class CommandStreamReceiverWithAUBDump<WddmCommandStreamReceiver<XeHpcCoreFamily>>;
static_assert(NEO::NonCopyableAndNonMovable<CommandStreamReceiverWithAUBDump<WddmCommandStreamReceiver<XeHpcCoreFamily>>>);
} // namespace NEO

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021-2022 Intel Corporation
* Copyright (C) 2021-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -24,4 +24,5 @@ void populateFactoryTable<AUBCommandStreamReceiverHw<Family>>() {
}
template class AUBCommandStreamReceiverHw<Family>;
static_assert(NEO::NonCopyableAndNonMovable<AUBCommandStreamReceiverHw<Family>>);
} // namespace NEO

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021-2023 Intel Corporation
* Copyright (C) 2021-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -15,4 +15,5 @@ namespace NEO {
template class DeviceCommandStreamReceiver<XeHpgCoreFamily>;
template class DrmCommandStreamReceiver<XeHpgCoreFamily>;
template class CommandStreamReceiverWithAUBDump<DrmCommandStreamReceiver<XeHpgCoreFamily>>;
static_assert(NEO::NonCopyableAndNonMovable<CommandStreamReceiverWithAUBDump<DrmCommandStreamReceiver<XeHpgCoreFamily>>>);
} // namespace NEO

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021-2022 Intel Corporation
* Copyright (C) 2021-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -29,4 +29,5 @@ void populateFactoryTable<TbxCommandStreamReceiverHw<Family>>() {
template class TbxCommandStreamReceiverHw<Family>;
template class CommandStreamReceiverWithAUBDump<TbxCommandStreamReceiverHw<Family>>;
static_assert(NEO::NonCopyableAndNonMovable<CommandStreamReceiverWithAUBDump<TbxCommandStreamReceiverHw<Family>>>);
} // namespace NEO

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2021-2022 Intel Corporation
* Copyright (C) 2021-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@ -15,4 +15,5 @@ namespace NEO {
template class DeviceCommandStreamReceiver<XeHpgCoreFamily>;
template class WddmCommandStreamReceiver<XeHpgCoreFamily>;
template class CommandStreamReceiverWithAUBDump<WddmCommandStreamReceiver<XeHpgCoreFamily>>;
static_assert(NEO::NonCopyableAndNonMovable<CommandStreamReceiverWithAUBDump<WddmCommandStreamReceiver<XeHpgCoreFamily>>>);
} // namespace NEO

View File

@ -13,7 +13,7 @@
namespace NEO {
template <typename GfxFamily>
class UltAubCommandStreamReceiver : public AUBCommandStreamReceiverHw<GfxFamily>, public NonCopyableAndNonMovableClass {
class UltAubCommandStreamReceiver : public AUBCommandStreamReceiverHw<GfxFamily> {
using BaseClass = AUBCommandStreamReceiverHw<GfxFamily>;
public:

View File

@ -46,7 +46,7 @@ struct WriteMemoryParams {
};
template <typename GfxFamily>
class UltCommandStreamReceiver : public CommandStreamReceiverHw<GfxFamily>, public NonCopyableAndNonMovableClass {
class UltCommandStreamReceiver : public CommandStreamReceiverHw<GfxFamily> {
using BaseClass = CommandStreamReceiverHw<GfxFamily>;
public: