Move builtin kernel logic out of blit enqueue path

Change-Id: I857ac7d1304f8b228bf558904ee929aa114ab003
Signed-off-by: Bartosz Dunajski <bartosz.dunajski@intel.com>
This commit is contained in:
Bartosz Dunajski
2020-09-01 11:39:32 +02:00
parent 1afc985577
commit e079d94869
32 changed files with 243 additions and 224 deletions

View File

@@ -43,9 +43,10 @@ class BuiltInOp<EBuiltInOps::CopyBufferToBuffer> : public BuiltinDispatchInfoBui
"CopyBufferToBufferRightLeftover", kernRightLeftover);
}
template <typename OffsetType>
bool buildDispatchInfosTyped(MultiDispatchInfo &multiDispatchInfo, const BuiltinOpParams &operationParams) const {
bool buildDispatchInfosTyped(MultiDispatchInfo &multiDispatchInfo) const {
DispatchInfoBuilder<SplitDispatch::Dim::d1D, SplitDispatch::SplitMode::KernelSplit> kernelSplit1DBuilder;
multiDispatchInfo.setBuiltinOpParams(operationParams);
auto &operationParams = multiDispatchInfo.peekBuiltinOpParams();
uintptr_t start = reinterpret_cast<uintptr_t>(operationParams.dstPtr) + operationParams.dstOffset.x;
size_t middleAlignment = MemoryConstants::cacheLineSize;
@@ -111,8 +112,8 @@ class BuiltInOp<EBuiltInOps::CopyBufferToBuffer> : public BuiltinDispatchInfoBui
return true;
}
bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo, const BuiltinOpParams &operationParams) const override {
return buildDispatchInfosTyped<uint32_t>(multiDispatchInfo, operationParams);
bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo) const override {
return buildDispatchInfosTyped<uint32_t>(multiDispatchInfo);
}
protected:
@@ -137,8 +138,8 @@ class BuiltInOp<EBuiltInOps::CopyBufferToBufferStateless> : public BuiltInOp<EBu
"CopyBufferToBufferRightLeftover", kernRightLeftover);
}
bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo, const BuiltinOpParams &operationParams) const override {
return buildDispatchInfosTyped<uint64_t>(multiDispatchInfo, operationParams);
bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo) const override {
return buildDispatchInfosTyped<uint64_t>(multiDispatchInfo);
}
};
@@ -156,9 +157,10 @@ class BuiltInOp<EBuiltInOps::CopyBufferRect> : public BuiltinDispatchInfoBuilder
}
template <typename OffsetType>
bool buildDispatchInfosTyped(MultiDispatchInfo &multiDispatchInfo, const BuiltinOpParams &operationParams) const {
bool buildDispatchInfosTyped(MultiDispatchInfo &multiDispatchInfo) const {
DispatchInfoBuilder<SplitDispatch::Dim::d3D, SplitDispatch::SplitMode::NoSplit> kernelNoSplit3DBuilder;
multiDispatchInfo.setBuiltinOpParams(operationParams);
auto &operationParams = multiDispatchInfo.peekBuiltinOpParams();
size_t hostPtrSize = 0;
bool is3D = false;
@@ -237,8 +239,8 @@ class BuiltInOp<EBuiltInOps::CopyBufferRect> : public BuiltinDispatchInfoBuilder
return true;
}
bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo, const BuiltinOpParams &operationParams) const override {
return buildDispatchInfosTyped<uint32_t>(multiDispatchInfo, operationParams);
bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo) const override {
return buildDispatchInfosTyped<uint32_t>(multiDispatchInfo);
}
protected:
@@ -258,8 +260,8 @@ class BuiltInOp<EBuiltInOps::CopyBufferRectStateless> : public BuiltInOp<EBuiltI
"CopyBufferRectBytes2d", kernelBytes[1],
"CopyBufferRectBytes3d", kernelBytes[2]);
}
bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo, const BuiltinOpParams &operationParams) const override {
return buildDispatchInfosTyped<uint64_t>(multiDispatchInfo, operationParams);
bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo) const override {
return buildDispatchInfosTyped<uint64_t>(multiDispatchInfo);
}
};
@@ -277,9 +279,10 @@ class BuiltInOp<EBuiltInOps::FillBuffer> : public BuiltinDispatchInfoBuilder {
}
template <typename OffsetType>
bool buildDispatchInfosTyped(MultiDispatchInfo &multiDispatchInfo, const BuiltinOpParams &operationParams) const {
bool buildDispatchInfosTyped(MultiDispatchInfo &multiDispatchInfo) const {
DispatchInfoBuilder<SplitDispatch::Dim::d1D, SplitDispatch::SplitMode::KernelSplit> kernelSplit1DBuilder;
multiDispatchInfo.setBuiltinOpParams(operationParams);
auto &operationParams = multiDispatchInfo.peekBuiltinOpParams();
uintptr_t start = reinterpret_cast<uintptr_t>(operationParams.dstPtr) + operationParams.dstOffset.x;
size_t middleAlignment = MemoryConstants::cacheLineSize;
@@ -335,8 +338,8 @@ class BuiltInOp<EBuiltInOps::FillBuffer> : public BuiltinDispatchInfoBuilder {
return true;
}
bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo, const BuiltinOpParams &operationParams) const override {
return buildDispatchInfosTyped<uint32_t>(multiDispatchInfo, operationParams);
bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo) const override {
return buildDispatchInfosTyped<uint32_t>(multiDispatchInfo);
}
protected:
@@ -358,8 +361,8 @@ class BuiltInOp<EBuiltInOps::FillBufferStateless> : public BuiltInOp<EBuiltInOps
"FillBufferMiddle", kernMiddle,
"FillBufferRightLeftover", kernRightLeftover);
}
bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo, const BuiltinOpParams &operationParams) const override {
return buildDispatchInfosTyped<uint64_t>(multiDispatchInfo, operationParams);
bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfos) const override {
return buildDispatchInfosTyped<uint64_t>(multiDispatchInfos);
}
};
@@ -378,8 +381,8 @@ class BuiltInOp<EBuiltInOps::CopyBufferToImage3d> : public BuiltinDispatchInfoBu
"CopyBufferToImage3d16Bytes", kernelBytes[4]);
}
bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo, const BuiltinOpParams &operationParams) const override {
return buildDispatchInfosTyped<uint32_t>(multiDispatchInfo, operationParams);
bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo) const override {
return buildDispatchInfosTyped<uint32_t>(multiDispatchInfo);
}
protected:
@@ -387,9 +390,10 @@ class BuiltInOp<EBuiltInOps::CopyBufferToImage3d> : public BuiltinDispatchInfoBu
BuiltInOp(BuiltIns &kernelsLib) : BuiltinDispatchInfoBuilder(kernelsLib){};
template <typename OffsetType>
bool buildDispatchInfosTyped(MultiDispatchInfo &multiDispatchInfo, const BuiltinOpParams &operationParams) const {
bool buildDispatchInfosTyped(MultiDispatchInfo &multiDispatchInfo) const {
DispatchInfoBuilder<SplitDispatch::Dim::d3D, SplitDispatch::SplitMode::NoSplit> kernelNoSplit3DBuilder;
multiDispatchInfo.setBuiltinOpParams(operationParams);
auto &operationParams = multiDispatchInfo.peekBuiltinOpParams();
DEBUG_BREAK_IF(!(((operationParams.srcPtr != nullptr) || (operationParams.srcMemObj != nullptr)) && (operationParams.dstPtr == nullptr)));
auto dstImage = castToObjectOrAbort<Image>(operationParams.dstMemObj);
@@ -471,8 +475,8 @@ class BuiltInOp<EBuiltInOps::CopyBufferToImage3dStateless> : public BuiltInOp<EB
"CopyBufferToImage3d16Bytes", kernelBytes[4]);
}
bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo, const BuiltinOpParams &operationParams) const override {
return buildDispatchInfosTyped<uint64_t>(multiDispatchInfo, operationParams);
bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo) const override {
return buildDispatchInfosTyped<uint64_t>(multiDispatchInfo);
}
};
@@ -491,8 +495,8 @@ class BuiltInOp<EBuiltInOps::CopyImage3dToBuffer> : public BuiltinDispatchInfoBu
"CopyImage3dToBuffer16Bytes", kernelBytes[4]);
}
bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo, const BuiltinOpParams &operationParams) const override {
return buildDispatchInfosTyped<uint32_t>(multiDispatchInfo, operationParams);
bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo) const override {
return buildDispatchInfosTyped<uint32_t>(multiDispatchInfo);
}
protected:
@@ -501,9 +505,10 @@ class BuiltInOp<EBuiltInOps::CopyImage3dToBuffer> : public BuiltinDispatchInfoBu
BuiltInOp(BuiltIns &kernelsLib) : BuiltinDispatchInfoBuilder(kernelsLib) {}
template <typename OffsetType>
bool buildDispatchInfosTyped(MultiDispatchInfo &multiDispatchInfo, const BuiltinOpParams &operationParams) const {
bool buildDispatchInfosTyped(MultiDispatchInfo &multiDispatchInfo) const {
DispatchInfoBuilder<SplitDispatch::Dim::d3D, SplitDispatch::SplitMode::NoSplit> kernelNoSplit3DBuilder;
multiDispatchInfo.setBuiltinOpParams(operationParams);
auto &operationParams = multiDispatchInfo.peekBuiltinOpParams();
DEBUG_BREAK_IF(!((operationParams.srcPtr == nullptr) && ((operationParams.dstPtr != nullptr) || (operationParams.dstMemObj != nullptr))));
auto srcImage = castToObjectOrAbort<Image>(operationParams.srcMemObj);
@@ -585,8 +590,8 @@ class BuiltInOp<EBuiltInOps::CopyImage3dToBufferStateless> : public BuiltInOp<EB
"CopyImage3dToBuffer16Bytes", kernelBytes[4]);
}
bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo, const BuiltinOpParams &operationParams) const override {
return buildDispatchInfosTyped<uint64_t>(multiDispatchInfo, operationParams);
bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo) const override {
return buildDispatchInfosTyped<uint64_t>(multiDispatchInfo);
}
};
@@ -601,9 +606,10 @@ class BuiltInOp<EBuiltInOps::CopyImageToImage3d> : public BuiltinDispatchInfoBui
"CopyImageToImage3d", kernel);
}
bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo, const BuiltinOpParams &operationParams) const override {
bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo) const override {
DispatchInfoBuilder<SplitDispatch::Dim::d3D, SplitDispatch::SplitMode::NoSplit> kernelNoSplit3DBuilder;
multiDispatchInfo.setBuiltinOpParams(operationParams);
auto &operationParams = multiDispatchInfo.peekBuiltinOpParams();
DEBUG_BREAK_IF(!((operationParams.srcPtr == nullptr) && (operationParams.dstPtr == nullptr)));
auto srcImage = castToObjectOrAbort<Image>(operationParams.srcMemObj);
@@ -666,9 +672,9 @@ class BuiltInOp<EBuiltInOps::FillImage3d> : public BuiltinDispatchInfoBuilder {
"FillImage3d", kernel);
}
bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo, const BuiltinOpParams &operationParams) const override {
bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo) const override {
DispatchInfoBuilder<SplitDispatch::Dim::d3D, SplitDispatch::SplitMode::NoSplit> kernelNoSplit3DBuilder;
multiDispatchInfo.setBuiltinOpParams(operationParams);
auto &operationParams = multiDispatchInfo.peekBuiltinOpParams();
DEBUG_BREAK_IF(!((operationParams.srcMemObj == nullptr) && (operationParams.srcPtr != nullptr) && (operationParams.dstPtr == nullptr)));
auto image = castToObjectOrAbort<Image>(operationParams.dstMemObj);
@@ -783,4 +789,4 @@ void BuiltInOwnershipWrapper::takeOwnership(BuiltinDispatchInfoBuilder &inputBui
}
}
} // namespace NEO
} // namespace NEO

View File

@@ -61,7 +61,7 @@ class BuiltinDispatchInfoBuilder {
template <typename... KernelsDescArgsT>
void populate(Device &device, EBuiltInOps::Type operation, ConstStringRef options, KernelsDescArgsT &&... desc);
virtual bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo, const BuiltinOpParams &operationParams) const {
virtual bool buildDispatchInfos(MultiDispatchInfo &multiDispatchInfo) const {
return false;
}

View File

@@ -349,7 +349,7 @@ class CommandQueueHw : public CommandQueue {
cl_event *event);
template <uint32_t cmdType, size_t surfaceCount>
void dispatchBcsOrGpgpuEnqueue(MultiDispatchInfo &dispatchInfo, Surface *(&surfaces)[surfaceCount], cl_uint numEventsInWaitList, const cl_event *eventWaitList, cl_event *event, bool blocking);
void dispatchBcsOrGpgpuEnqueue(MultiDispatchInfo &dispatchInfo, Surface *(&surfaces)[surfaceCount], EBuiltInOps::Type builtInOperation, cl_uint numEventsInWaitList, const cl_event *eventWaitList, cl_event *event, bool blocking);
template <uint32_t cmdType>
void enqueueBlit(const MultiDispatchInfo &multiDispatchInfo, cl_uint numEventsInWaitList, const cl_event *eventWaitList, cl_event *event, bool blocking);

View File

@@ -1099,10 +1099,16 @@ void CommandQueueHw<GfxFamily>::enqueueBlit(const MultiDispatchInfo &multiDispat
template <typename GfxFamily>
template <uint32_t cmdType, size_t surfaceCount>
void CommandQueueHw<GfxFamily>::dispatchBcsOrGpgpuEnqueue(MultiDispatchInfo &dispatchInfo, Surface *(&surfaces)[surfaceCount], cl_uint numEventsInWaitList, const cl_event *eventWaitList, cl_event *event, bool blocking) {
void CommandQueueHw<GfxFamily>::dispatchBcsOrGpgpuEnqueue(MultiDispatchInfo &dispatchInfo, Surface *(&surfaces)[surfaceCount], EBuiltInOps::Type builtInOperation, cl_uint numEventsInWaitList, const cl_event *eventWaitList, cl_event *event, bool blocking) {
if (blitEnqueueAllowed(cmdType)) {
enqueueBlit<cmdType>(dispatchInfo, numEventsInWaitList, eventWaitList, event, blocking);
} else {
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(builtInOperation,
this->getDevice());
BuiltInOwnershipWrapper builtInLock(builder, this->context);
builder.buildDispatchInfos(dispatchInfo);
enqueueHandler<cmdType>(
surfaces,
blocking,

View File

@@ -30,31 +30,26 @@ cl_int CommandQueueHw<GfxFamily>::enqueueCopyBuffer(
const cl_event *eventWaitList,
cl_event *event) {
MultiDispatchInfo dispatchInfo;
auto eBuiltInOpsType = EBuiltInOps::CopyBufferToBuffer;
if (forceStateless(std::max(srcBuffer->getSize(), dstBuffer->getSize()))) {
eBuiltInOpsType = EBuiltInOps::CopyBufferToBufferStateless;
}
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(eBuiltInOpsType,
this->getDevice());
BuiltInOwnershipWrapper builtInLock(builder, this->context);
BuiltinOpParams dc;
dc.srcMemObj = srcBuffer;
dc.dstMemObj = dstBuffer;
dc.srcOffset = {srcOffset, 0, 0};
dc.dstOffset = {dstOffset, 0, 0};
dc.size = {size, 0, 0};
builder.buildDispatchInfos(dispatchInfo, dc);
MultiDispatchInfo dispatchInfo(dc);
MemObjSurface s1(srcBuffer);
MemObjSurface s2(dstBuffer);
Surface *surfaces[] = {&s1, &s2};
dispatchBcsOrGpgpuEnqueue<CL_COMMAND_COPY_BUFFER>(dispatchInfo, surfaces, numEventsInWaitList, eventWaitList, event, false);
dispatchBcsOrGpgpuEnqueue<CL_COMMAND_COPY_BUFFER>(dispatchInfo, surfaces, eBuiltInOpsType, numEventsInWaitList, eventWaitList, event, false);
return CL_SUCCESS;
}

View File

@@ -38,10 +38,6 @@ cl_int CommandQueueHw<GfxFamily>::enqueueCopyBufferRect(
eBuiltInOps = EBuiltInOps::CopyBufferRectStateless;
}
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(eBuiltInOps,
this->getDevice());
BuiltInOwnershipWrapper builtInLock(builder, this->context);
MemObjSurface srcBufferSurf(srcBuffer);
MemObjSurface dstBufferSurf(dstBuffer);
Surface *surfaces[] = {&srcBufferSurf, &dstBufferSurf};
@@ -57,10 +53,9 @@ cl_int CommandQueueHw<GfxFamily>::enqueueCopyBufferRect(
dc.dstRowPitch = dstRowPitch;
dc.dstSlicePitch = dstSlicePitch;
MultiDispatchInfo dispatchInfo;
builder.buildDispatchInfos(dispatchInfo, dc);
MultiDispatchInfo dispatchInfo(dc);
dispatchBcsOrGpgpuEnqueue<CL_COMMAND_COPY_BUFFER_RECT>(dispatchInfo, surfaces, numEventsInWaitList, eventWaitList, event, false);
dispatchBcsOrGpgpuEnqueue<CL_COMMAND_COPY_BUFFER_RECT>(dispatchInfo, surfaces, eBuiltInOps, numEventsInWaitList, eventWaitList, event, false);
return CL_SUCCESS;
}

View File

@@ -54,8 +54,8 @@ cl_int CommandQueueHw<GfxFamily>::enqueueCopyBufferToImage(
dc.dstMipLevel = findMipLevel(dstImage->getImageDesc().image_type, dstOrigin);
}
MultiDispatchInfo dispatchInfo;
builder.buildDispatchInfos(dispatchInfo, dc);
MultiDispatchInfo dispatchInfo(dc);
builder.buildDispatchInfos(dispatchInfo);
enqueueHandler<CL_COMMAND_COPY_BUFFER_TO_IMAGE>(
surfaces,

View File

@@ -32,8 +32,6 @@ cl_int CommandQueueHw<GfxFamily>::enqueueCopyImage(
const cl_event *eventWaitList,
cl_event *event) {
MultiDispatchInfo di;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImageToImage3d,
this->getDevice());
BuiltInOwnershipWrapper builtInLock(builder, this->context);
@@ -54,7 +52,10 @@ cl_int CommandQueueHw<GfxFamily>::enqueueCopyImage(
if (dstImage->getImageDesc().num_mip_levels > 0) {
dc.dstMipLevel = findMipLevel(dstImage->getImageDesc().image_type, dstOrigin);
}
builder.buildDispatchInfos(di, dc);
MultiDispatchInfo di(dc);
builder.buildDispatchInfos(di);
enqueueHandler<CL_COMMAND_COPY_IMAGE>(
surfaces,

View File

@@ -53,8 +53,8 @@ cl_int CommandQueueHw<GfxFamily>::enqueueCopyImageToBuffer(
dc.srcMipLevel = findMipLevel(srcImage->getImageDesc().image_type, srcOrigin);
}
MultiDispatchInfo dispatchInfo;
builder.buildDispatchInfos(dispatchInfo, dc);
MultiDispatchInfo dispatchInfo(dc);
builder.buildDispatchInfos(dispatchInfo);
enqueueHandler<CL_COMMAND_COPY_IMAGE_TO_BUFFER>(
surfaces,

View File

@@ -66,8 +66,8 @@ cl_int CommandQueueHw<GfxFamily>::enqueueFillBuffer(
dc.dstOffset = {offset, 0, 0};
dc.size = {size, 0, 0};
MultiDispatchInfo dispatchInfo;
builder.buildDispatchInfos(dispatchInfo, dc);
MultiDispatchInfo dispatchInfo(dc);
builder.buildDispatchInfos(dispatchInfo);
MemObjSurface s1(buffer);
GeneralSurface s2(patternAllocation);

View File

@@ -30,8 +30,6 @@ cl_int CommandQueueHw<GfxFamily>::enqueueFillImage(
const cl_event *eventWaitList,
cl_event *event) {
MultiDispatchInfo di;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::FillImage3d,
this->getDevice());
BuiltInOwnershipWrapper builtInLock(builder, this->context);
@@ -45,7 +43,10 @@ cl_int CommandQueueHw<GfxFamily>::enqueueFillImage(
dc.srcOffset = {0, 0, 0};
dc.dstOffset = origin;
dc.size = region;
builder.buildDispatchInfos(di, dc);
MultiDispatchInfo di(dc);
builder.buildDispatchInfos(di);
enqueueHandler<CL_COMMAND_FILL_IMAGE>(
surfaces,

View File

@@ -81,9 +81,6 @@ cl_int CommandQueueHw<GfxFamily>::enqueueReadBuffer(
if (forceStateless(buffer->getSize())) {
eBuiltInOps = EBuiltInOps::CopyBufferToBufferStateless;
}
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(eBuiltInOps,
this->getDevice());
BuiltInOwnershipWrapper builtInLock(builder, this->context);
void *dstPtr = ptr;
@@ -119,8 +116,7 @@ cl_int CommandQueueHw<GfxFamily>::enqueueReadBuffer(
dc.size = {size, 0, 0};
dc.transferAllocation = mapAllocation ? mapAllocation : hostPtrSurf.getAllocation();
MultiDispatchInfo dispatchInfo;
builder.buildDispatchInfos(dispatchInfo, dc);
MultiDispatchInfo dispatchInfo(dc);
if (context->isProvidingPerformanceHints()) {
context->providePerformanceHintForMemoryTransfer(CL_COMMAND_READ_BUFFER, true, static_cast<cl_mem>(buffer), ptr);
@@ -129,7 +125,7 @@ cl_int CommandQueueHw<GfxFamily>::enqueueReadBuffer(
}
}
dispatchBcsOrGpgpuEnqueue<CL_COMMAND_READ_BUFFER>(dispatchInfo, surfaces, numEventsInWaitList, eventWaitList, event, blockingRead);
dispatchBcsOrGpgpuEnqueue<CL_COMMAND_READ_BUFFER>(dispatchInfo, surfaces, eBuiltInOps, numEventsInWaitList, eventWaitList, event, blockingRead);
return CL_SUCCESS;
}

View File

@@ -52,9 +52,6 @@ cl_int CommandQueueHw<GfxFamily>::enqueueReadBufferRect(
if (forceStateless(buffer->getSize())) {
eBuiltInOps = EBuiltInOps::CopyBufferRectStateless;
}
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(eBuiltInOps,
this->getDevice());
BuiltInOwnershipWrapper builtInLock(builder, this->context);
size_t hostPtrSize = Buffer::calculateHostPtrSize(hostOrigin, region, hostRowPitch, hostSlicePitch);
void *dstPtr = ptr;
@@ -90,10 +87,9 @@ cl_int CommandQueueHw<GfxFamily>::enqueueReadBufferRect(
dc.dstRowPitch = hostRowPitch;
dc.dstSlicePitch = hostSlicePitch;
MultiDispatchInfo dispatchInfo;
builder.buildDispatchInfos(dispatchInfo, dc);
MultiDispatchInfo dispatchInfo(dc);
dispatchBcsOrGpgpuEnqueue<CL_COMMAND_READ_BUFFER_RECT>(dispatchInfo, surfaces, numEventsInWaitList, eventWaitList, event, blockingRead);
dispatchBcsOrGpgpuEnqueue<CL_COMMAND_READ_BUFFER_RECT>(dispatchInfo, surfaces, eBuiltInOps, numEventsInWaitList, eventWaitList, event, blockingRead);
if (context->isProvidingPerformanceHints()) {
context->providePerformanceHintForMemoryTransfer(CL_COMMAND_READ_BUFFER_RECT, true, static_cast<cl_mem>(buffer), ptr);

View File

@@ -46,7 +46,6 @@ cl_int CommandQueueHw<GfxFamily>::enqueueReadImage(
notifyEnqueueReadImage(srcImage, !!blockingRead, EngineHelpers::isBcs(csr.getOsContext().getEngineType()));
}
MultiDispatchInfo di;
auto isMemTransferNeeded = true;
if (srcImage->isMemObjZeroCopy()) {
size_t hostOffset;
@@ -104,7 +103,10 @@ cl_int CommandQueueHw<GfxFamily>::enqueueReadImage(
if (srcImage->getImageDesc().num_mip_levels > 0) {
dc.srcMipLevel = findMipLevel(srcImage->getImageDesc().image_type, origin);
}
builder.buildDispatchInfos(di, dc);
MultiDispatchInfo di(dc);
builder.buildDispatchInfos(di);
enqueueHandler<CL_COMMAND_READ_IMAGE>(
surfaces,

View File

@@ -106,11 +106,6 @@ cl_int CommandQueueHw<GfxFamily>::enqueueSVMMap(cl_bool blockingMap,
return CL_SUCCESS;
}
MultiDispatchInfo dispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer,
this->getDevice());
BuiltInOwnershipWrapper builtInLock(builder, this->context);
auto gpuAllocation = svmData->gpuAllocations.getGraphicsAllocation(getDevice().getRootDeviceIndex());
GeneralSurface dstSurface(svmData->cpuAllocation);
@@ -129,9 +124,10 @@ cl_int CommandQueueHw<GfxFamily>::enqueueSVMMap(cl_bool blockingMap,
dc.srcOffset = {svmOffset, 0, 0};
dc.size = {size, 0, 0};
dc.unifiedMemoryArgsRequireMemSync = externalAppCall;
builder.buildDispatchInfos(dispatchInfo, dc);
dispatchBcsOrGpgpuEnqueue<CL_COMMAND_READ_BUFFER>(dispatchInfo, surfaces, numEventsInWaitList, eventWaitList, event, blocking);
MultiDispatchInfo dispatchInfo(dc);
dispatchBcsOrGpgpuEnqueue<CL_COMMAND_READ_BUFFER>(dispatchInfo, surfaces, EBuiltInOps::CopyBufferToBuffer, numEventsInWaitList, eventWaitList, event, blocking);
if (event) {
castToObjectOrAbort<Event>(*event)->setCmdType(CL_COMMAND_SVM_MAP);
@@ -198,11 +194,6 @@ cl_int CommandQueueHw<GfxFamily>::enqueueSVMUnmap(void *svmPtr,
gpuAllocation->setAubWritable(true, GraphicsAllocation::defaultBank);
gpuAllocation->setTbxWritable(true, GraphicsAllocation::defaultBank);
MultiDispatchInfo dispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer,
this->getDevice());
BuiltInOwnershipWrapper builtInLock(builder, this->context);
GeneralSurface dstSurface(gpuAllocation);
GeneralSurface srcSurface(svmData->cpuAllocation);
@@ -217,9 +208,10 @@ cl_int CommandQueueHw<GfxFamily>::enqueueSVMUnmap(void *svmPtr,
dc.srcOffset = {svmOperation->offset, 0, 0};
dc.size = {svmOperation->regionSize, 0, 0};
dc.unifiedMemoryArgsRequireMemSync = externalAppCall;
builder.buildDispatchInfos(dispatchInfo, dc);
dispatchBcsOrGpgpuEnqueue<CL_COMMAND_READ_BUFFER>(dispatchInfo, surfaces, numEventsInWaitList, eventWaitList, event, false);
MultiDispatchInfo dispatchInfo(dc);
dispatchBcsOrGpgpuEnqueue<CL_COMMAND_READ_BUFFER>(dispatchInfo, surfaces, EBuiltInOps::CopyBufferToBuffer, numEventsInWaitList, eventWaitList, event, false);
if (event) {
castToObjectOrAbort<Event>(*event)->setCmdType(CL_COMMAND_SVM_UNMAP);
@@ -330,9 +322,6 @@ cl_int CommandQueueHw<GfxFamily>::enqueueSVMMemcpy(cl_bool blockingCopy,
builtInType = EBuiltInOps::CopyBufferToBufferStateless;
}
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(builtInType,
this->getDevice());
BuiltInOwnershipWrapper builtInLock(builder, this->context);
MultiDispatchInfo dispatchInfo;
BuiltinOpParams operationParams;
Surface *surfaces[2];
@@ -354,9 +343,10 @@ cl_int CommandQueueHw<GfxFamily>::enqueueSVMMemcpy(cl_bool blockingCopy,
setOperationParams(operationParams, size, srcPtr, srcSvmData->gpuAllocations.getGraphicsAllocation(rootDeviceIndex), dstPtr, dstHostPtrSurf.getAllocation());
surfaces[0] = &srcSvmSurf;
surfaces[1] = &dstHostPtrSurf;
builder.buildDispatchInfos(dispatchInfo, operationParams);
dispatchBcsOrGpgpuEnqueue<CL_COMMAND_READ_BUFFER>(dispatchInfo, surfaces, numEventsInWaitList, eventWaitList, event, blockingCopy);
dispatchInfo.setBuiltinOpParams(operationParams);
dispatchBcsOrGpgpuEnqueue<CL_COMMAND_READ_BUFFER>(dispatchInfo, surfaces, builtInType, numEventsInWaitList, eventWaitList, event, blockingCopy);
} else if (copyType == HostToSvm) {
HostPtrSurface srcHostPtrSurf(const_cast<void *>(srcPtr), size);
@@ -374,9 +364,10 @@ cl_int CommandQueueHw<GfxFamily>::enqueueSVMMemcpy(cl_bool blockingCopy,
dstPtr, dstSvmData->gpuAllocations.getGraphicsAllocation(rootDeviceIndex));
surfaces[0] = &dstSvmSurf;
surfaces[1] = &srcHostPtrSurf;
builder.buildDispatchInfos(dispatchInfo, operationParams);
dispatchBcsOrGpgpuEnqueue<CL_COMMAND_WRITE_BUFFER>(dispatchInfo, surfaces, numEventsInWaitList, eventWaitList, event, blockingCopy);
dispatchInfo.setBuiltinOpParams(operationParams);
dispatchBcsOrGpgpuEnqueue<CL_COMMAND_WRITE_BUFFER>(dispatchInfo, surfaces, builtInType, numEventsInWaitList, eventWaitList, event, blockingCopy);
} else if (copyType == SvmToSvm) {
GeneralSurface srcSvmSurf(srcSvmData->gpuAllocations.getGraphicsAllocation(rootDeviceIndex));
@@ -385,9 +376,10 @@ cl_int CommandQueueHw<GfxFamily>::enqueueSVMMemcpy(cl_bool blockingCopy,
dstPtr, dstSvmData->gpuAllocations.getGraphicsAllocation(rootDeviceIndex));
surfaces[0] = &srcSvmSurf;
surfaces[1] = &dstSvmSurf;
builder.buildDispatchInfos(dispatchInfo, operationParams);
dispatchBcsOrGpgpuEnqueue<CL_COMMAND_SVM_MEMCPY>(dispatchInfo, surfaces, numEventsInWaitList, eventWaitList, event, blockingCopy);
dispatchInfo.setBuiltinOpParams(operationParams);
dispatchBcsOrGpgpuEnqueue<CL_COMMAND_SVM_MEMCPY>(dispatchInfo, surfaces, builtInType, numEventsInWaitList, eventWaitList, event, blockingCopy);
} else {
HostPtrSurface srcHostPtrSurf(const_cast<void *>(srcPtr), size);
@@ -407,9 +399,9 @@ cl_int CommandQueueHw<GfxFamily>::enqueueSVMMemcpy(cl_bool blockingCopy,
surfaces[0] = &srcHostPtrSurf;
surfaces[1] = &dstHostPtrSurf;
builder.buildDispatchInfos(dispatchInfo, operationParams);
dispatchInfo.setBuiltinOpParams(operationParams);
dispatchBcsOrGpgpuEnqueue<CL_COMMAND_WRITE_BUFFER>(dispatchInfo, surfaces, numEventsInWaitList, eventWaitList, event, blockingCopy);
dispatchBcsOrGpgpuEnqueue<CL_COMMAND_WRITE_BUFFER>(dispatchInfo, surfaces, builtInType, numEventsInWaitList, eventWaitList, event, blockingCopy);
}
if (event) {
auto pEvent = castToObjectOrAbort<Event>(*event);
@@ -487,8 +479,8 @@ cl_int CommandQueueHw<GfxFamily>::enqueueSVMMemFill(void *svmPtr,
operationParams.dstOffset = {dstPtrOffset, 0, 0};
operationParams.size = {size, 0, 0};
MultiDispatchInfo dispatchInfo;
builder.buildDispatchInfos(dispatchInfo, operationParams);
MultiDispatchInfo dispatchInfo(operationParams);
builder.buildDispatchInfos(dispatchInfo);
GeneralSurface s1(gpuAllocation);
GeneralSurface s2(patternAllocation);

View File

@@ -73,10 +73,6 @@ cl_int CommandQueueHw<GfxFamily>::enqueueWriteBuffer(
if (forceStateless(buffer->getSize())) {
eBuiltInOps = EBuiltInOps::CopyBufferToBufferStateless;
}
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(eBuiltInOps,
this->getDevice());
BuiltInOwnershipWrapper builtInLock(builder, this->context);
void *srcPtr = const_cast<void *>(ptr);
@@ -113,10 +109,9 @@ cl_int CommandQueueHw<GfxFamily>::enqueueWriteBuffer(
dc.size = {size, 0, 0};
dc.transferAllocation = mapAllocation ? mapAllocation : hostPtrSurf.getAllocation();
MultiDispatchInfo dispatchInfo;
builder.buildDispatchInfos(dispatchInfo, dc);
MultiDispatchInfo dispatchInfo(dc);
dispatchBcsOrGpgpuEnqueue<CL_COMMAND_WRITE_BUFFER>(dispatchInfo, surfaces, numEventsInWaitList, eventWaitList, event, blockingWrite);
dispatchBcsOrGpgpuEnqueue<CL_COMMAND_WRITE_BUFFER>(dispatchInfo, surfaces, eBuiltInOps, numEventsInWaitList, eventWaitList, event, blockingWrite);
if (context->isProvidingPerformanceHints()) {
context->providePerformanceHint(CL_CONTEXT_DIAGNOSTICS_LEVEL_NEUTRAL_INTEL, CL_ENQUEUE_WRITE_BUFFER_REQUIRES_COPY_DATA, static_cast<cl_mem>(buffer));

View File

@@ -51,9 +51,6 @@ cl_int CommandQueueHw<GfxFamily>::enqueueWriteBufferRect(
if (forceStateless(buffer->getSize())) {
eBuiltInOps = EBuiltInOps::CopyBufferRectStateless;
}
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(eBuiltInOps,
this->getDevice());
BuiltInOwnershipWrapper builtInLock(builder, this->context);
size_t hostPtrSize = Buffer::calculateHostPtrSize(hostOrigin, region, hostRowPitch, hostSlicePitch);
void *srcPtr = const_cast<void *>(ptr);
@@ -89,10 +86,9 @@ cl_int CommandQueueHw<GfxFamily>::enqueueWriteBufferRect(
dc.dstRowPitch = bufferRowPitch;
dc.dstSlicePitch = bufferSlicePitch;
MultiDispatchInfo dispatchInfo;
builder.buildDispatchInfos(dispatchInfo, dc);
MultiDispatchInfo dispatchInfo(dc);
dispatchBcsOrGpgpuEnqueue<CL_COMMAND_WRITE_BUFFER_RECT>(dispatchInfo, surfaces, numEventsInWaitList, eventWaitList, event, blockingWrite);
dispatchBcsOrGpgpuEnqueue<CL_COMMAND_WRITE_BUFFER_RECT>(dispatchInfo, surfaces, eBuiltInOps, numEventsInWaitList, eventWaitList, event, blockingWrite);
if (context->isProvidingPerformanceHints()) {
context->providePerformanceHint(CL_CONTEXT_DIAGNOSTICS_LEVEL_NEUTRAL_INTEL, CL_ENQUEUE_WRITE_BUFFER_RECT_REQUIRES_COPY_DATA, static_cast<cl_mem>(buffer));

View File

@@ -35,7 +35,6 @@ cl_int CommandQueueHw<GfxFamily>::enqueueWriteImage(
const cl_event *eventWaitList,
cl_event *event) {
MultiDispatchInfo di;
auto isMemTransferNeeded = true;
if (dstImage->isMemObjZeroCopy()) {
size_t hostOffset;
@@ -93,7 +92,8 @@ cl_int CommandQueueHw<GfxFamily>::enqueueWriteImage(
dc.dstMipLevel = findMipLevel(dstImage->getImageDesc().image_type, origin);
}
builder.buildDispatchInfos(di, dc);
MultiDispatchInfo di(dc);
builder.buildDispatchInfos(di);
enqueueHandler<CL_COMMAND_WRITE_IMAGE>(
surfaces,

View File

@@ -87,6 +87,7 @@ struct MultiDispatchInfo {
}
explicit MultiDispatchInfo(Kernel *mainKernel) : mainKernel(mainKernel) {}
explicit MultiDispatchInfo(const BuiltinOpParams &operationParams) : builtinOpParams(operationParams) {}
MultiDispatchInfo() = default;
MultiDispatchInfo &operator=(const MultiDispatchInfo &) = delete;

View File

@@ -165,7 +165,6 @@ TEST_F(BuiltInTests, BuiltinDispatchInfoBuilderCopyBufferToBuffer) {
MockBuffer &src = *srcPtr;
MockBuffer &dst = *dstPtr;
MultiDispatchInfo multiDispatchInfo;
BuiltinOpParams builtinOpsParams;
builtinOpsParams.srcMemObj = &src;
@@ -174,7 +173,8 @@ TEST_F(BuiltInTests, BuiltinDispatchInfoBuilderCopyBufferToBuffer) {
builtinOpsParams.dstPtr = dst.getCpuAddress();
builtinOpsParams.size = {dst.getSize(), 0, 0};
ASSERT_TRUE(builder.buildDispatchInfos(multiDispatchInfo, builtinOpsParams));
MultiDispatchInfo multiDispatchInfo(builtinOpsParams);
ASSERT_TRUE(builder.buildDispatchInfos(multiDispatchInfo));
size_t leftSize = reinterpret_cast<uintptr_t>(dst.getCpuAddress()) % MemoryConstants::cacheLineSize;
if (leftSize > 0) {
@@ -608,14 +608,14 @@ TEST_F(BuiltInTests, BuiltinDispatchInfoBuilderCopyBufferToBufferAligned) {
AlignedBuffer src;
AlignedBuffer dst;
MultiDispatchInfo multiDispatchInfo;
BuiltinOpParams builtinOpsParams;
builtinOpsParams.srcMemObj = &src;
builtinOpsParams.dstMemObj = &dst;
builtinOpsParams.size = {src.getSize(), 0, 0};
ASSERT_TRUE(builder.buildDispatchInfos(multiDispatchInfo, builtinOpsParams));
MultiDispatchInfo multiDispatchInfo(builtinOpsParams);
ASSERT_TRUE(builder.buildDispatchInfos(multiDispatchInfo));
EXPECT_EQ(1u, multiDispatchInfo.size());
@@ -653,7 +653,6 @@ TEST_F(BuiltInTests, givenBigOffsetAndSizeWhenBuilderCopyBufferToBufferStateless
MockBuffer dstBuffer;
dstBuffer.size = static_cast<size_t>(bigSize);
MultiDispatchInfo multiDispatchInfo;
BuiltinOpParams builtinOpsParams;
builtinOpsParams.srcMemObj = &srcBuffer;
@@ -662,7 +661,8 @@ TEST_F(BuiltInTests, givenBigOffsetAndSizeWhenBuilderCopyBufferToBufferStateless
builtinOpsParams.dstOffset = {0, 0, 0};
builtinOpsParams.size = {static_cast<size_t>(size), 0, 0};
ASSERT_TRUE(builder.buildDispatchInfos(multiDispatchInfo, builtinOpsParams));
MultiDispatchInfo multiDispatchInfo(builtinOpsParams);
ASSERT_TRUE(builder.buildDispatchInfos(multiDispatchInfo));
EXPECT_EQ(1u, multiDispatchInfo.size());
EXPECT_TRUE(compareBuiltinOpParams(multiDispatchInfo.peekBuiltinOpParams(), builtinOpsParams));
}
@@ -695,8 +695,8 @@ TEST_F(BuiltInTests, givenBigOffsetAndSizeWhenBuilderCopyBufferToBufferRectState
dc.dstRowPitch = static_cast<size_t>(size);
dc.dstSlicePitch = 0;
MultiDispatchInfo multiDispatchInfo;
ASSERT_TRUE(builder.buildDispatchInfos(multiDispatchInfo, dc));
MultiDispatchInfo multiDispatchInfo(dc);
ASSERT_TRUE(builder.buildDispatchInfos(multiDispatchInfo));
EXPECT_EQ(1u, multiDispatchInfo.size());
EXPECT_TRUE(compareBuiltinOpParams(multiDispatchInfo.peekBuiltinOpParams(), dc));
}
@@ -724,8 +724,8 @@ TEST_F(BuiltInTests, givenBigOffsetAndSizeWhenBuilderFillBufferStatelessIsUsedTh
dc.dstOffset = {static_cast<size_t>(bigOffset), 0, 0};
dc.size = {static_cast<size_t>(size), 0, 0};
MultiDispatchInfo multiDispatchInfo;
ASSERT_TRUE(builder.buildDispatchInfos(multiDispatchInfo, dc));
MultiDispatchInfo multiDispatchInfo(dc);
ASSERT_TRUE(builder.buildDispatchInfos(multiDispatchInfo));
EXPECT_EQ(1u, multiDispatchInfo.size());
EXPECT_TRUE(compareBuiltinOpParams(multiDispatchInfo.peekBuiltinOpParams(), dc));
}
@@ -755,8 +755,8 @@ HWTEST_F(BuiltInTests, givenBigOffsetAndSizeWhenBuilderCopyBufferToImageStateles
dc.dstRowPitch = 0;
dc.dstSlicePitch = 0;
MultiDispatchInfo multiDispatchInfo;
ASSERT_TRUE(builder.buildDispatchInfos(multiDispatchInfo, dc));
MultiDispatchInfo multiDispatchInfo(dc);
ASSERT_TRUE(builder.buildDispatchInfos(multiDispatchInfo));
EXPECT_EQ(1u, multiDispatchInfo.size());
EXPECT_TRUE(compareBuiltinOpParams(multiDispatchInfo.peekBuiltinOpParams(), dc));
@@ -789,8 +789,8 @@ HWTEST_F(BuiltInTests, givenBigOffsetAndSizeWhenBuilderCopyImageToBufferStateles
dc.dstOffset = {static_cast<size_t>(bigOffset), 0, 0};
dc.size = {1, 1, 1};
MultiDispatchInfo multiDispatchInfo;
ASSERT_TRUE(builder.buildDispatchInfos(multiDispatchInfo, dc));
MultiDispatchInfo multiDispatchInfo(dc);
ASSERT_TRUE(builder.buildDispatchInfos(multiDispatchInfo));
EXPECT_EQ(1u, multiDispatchInfo.size());
EXPECT_TRUE(compareBuiltinOpParams(multiDispatchInfo.peekBuiltinOpParams(), dc));
@@ -806,7 +806,6 @@ TEST_F(BuiltInTests, BuiltinDispatchInfoBuilderCopyBufferToBufferWithSourceOffse
AlignedBuffer src;
AlignedBuffer dst;
MultiDispatchInfo multiDispatchInfo;
BuiltinOpParams builtinOpsParams;
builtinOpsParams.srcMemObj = &src;
@@ -814,7 +813,8 @@ TEST_F(BuiltInTests, BuiltinDispatchInfoBuilderCopyBufferToBufferWithSourceOffse
builtinOpsParams.dstMemObj = &dst;
builtinOpsParams.size = {src.getSize(), 0, 0};
ASSERT_TRUE(builder.buildDispatchInfos(multiDispatchInfo, builtinOpsParams));
MultiDispatchInfo multiDispatchInfo(builtinOpsParams);
ASSERT_TRUE(builder.buildDispatchInfos(multiDispatchInfo));
EXPECT_EQ(1u, multiDispatchInfo.size());
@@ -832,14 +832,14 @@ TEST_F(BuiltInTests, BuiltinDispatchInfoBuilderReadBufferAligned) {
auto size = 10 * MemoryConstants::cacheLineSize;
auto dstPtr = alignedMalloc(size, MemoryConstants::cacheLineSize);
MultiDispatchInfo multiDispatchInfo;
BuiltinOpParams builtinOpsParams;
builtinOpsParams.srcMemObj = &srcMemObj;
builtinOpsParams.dstPtr = dstPtr;
builtinOpsParams.size = {size, 0, 0};
ASSERT_TRUE(builder.buildDispatchInfos(multiDispatchInfo, builtinOpsParams));
MultiDispatchInfo multiDispatchInfo(builtinOpsParams);
ASSERT_TRUE(builder.buildDispatchInfos(multiDispatchInfo));
EXPECT_EQ(1u, multiDispatchInfo.size());
@@ -867,14 +867,14 @@ TEST_F(BuiltInTests, BuiltinDispatchInfoBuilderWriteBufferAligned) {
auto srcPtr = alignedMalloc(size, MemoryConstants::cacheLineSize);
AlignedBuffer dstMemObj;
MultiDispatchInfo multiDispatchInfo;
BuiltinOpParams builtinOpsParams;
builtinOpsParams.srcPtr = srcPtr;
builtinOpsParams.dstMemObj = &dstMemObj;
builtinOpsParams.size = {size, 0, 0};
ASSERT_TRUE(builder.buildDispatchInfos(multiDispatchInfo, builtinOpsParams));
MultiDispatchInfo multiDispatchInfo(builtinOpsParams);
ASSERT_TRUE(builder.buildDispatchInfos(multiDispatchInfo));
EXPECT_EQ(1u, multiDispatchInfo.size());
@@ -939,10 +939,10 @@ HWCMDTEST_F(IGFX_GEN8_CORE, BuiltInTests, getSchedulerKernelForSecondTimeDoesNot
TEST_F(BuiltInTests, BuiltinDispatchInfoBuilderReturnFalseIfUnsupportedBuildType) {
auto &bs = *pDevice->getBuiltIns();
BuiltinDispatchInfoBuilder bdib{bs};
MultiDispatchInfo multiDispatchInfo;
BuiltinOpParams params;
auto ret = bdib.buildDispatchInfos(multiDispatchInfo, params);
MultiDispatchInfo multiDispatchInfo(params);
auto ret = bdib.buildDispatchInfos(multiDispatchInfo);
EXPECT_FALSE(ret);
ASSERT_EQ(0U, multiDispatchInfo.size());

View File

@@ -706,14 +706,15 @@ void CloneMdi(MultiDispatchInfo &dst, const MultiDispatchInfo &src) {
for (auto &srcDi : src) {
dst.push(srcDi);
}
dst.setBuiltinOpParams(src.peekBuiltinOpParams());
}
struct MockBuilder : BuiltinDispatchInfoBuilder {
MockBuilder(NEO::BuiltIns &builtins) : BuiltinDispatchInfoBuilder(builtins) {
}
bool buildDispatchInfos(MultiDispatchInfo &d, const BuiltinOpParams &conf) const override {
bool buildDispatchInfos(MultiDispatchInfo &d) const override {
wasBuildDispatchInfosWithBuiltinOpParamsCalled = true;
paramsReceived.multiDispatchInfo.setBuiltinOpParams(conf);
paramsReceived.multiDispatchInfo.setBuiltinOpParams(d.peekBuiltinOpParams());
return true;
}
bool buildDispatchInfos(MultiDispatchInfo &d, Kernel *kernel,

View File

@@ -159,7 +159,6 @@ HWCMDTEST_F(IGFX_GEN8_CORE, EnqueueCopyBufferRectTest, WhenCopyingBufferRect2DTh
enqueueCopyBufferRect2D<FamilyType>();
// Extract the kernel used
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferRect,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -174,7 +173,9 @@ HWCMDTEST_F(IGFX_GEN8_CORE, EnqueueCopyBufferRectTest, WhenCopyingBufferRect2DTh
dc.srcSlicePitch = slicePitch;
dc.dstRowPitch = rowPitch;
dc.dstSlicePitch = slicePitch;
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();
@@ -204,8 +205,8 @@ HWTEST_F(EnqueueCopyBufferRectTest, WhenCopyingBufferRectStatelessThenStatelessK
dc.dstRowPitch = rowPitch;
dc.dstSlicePitch = slicePitch;
MultiDispatchInfo multiDispatchInfo;
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();

View File

@@ -135,7 +135,6 @@ HWTEST_F(EnqueueCopyBufferTest, WhenCopyingBufferThenIndirectDataGetsAdded) {
enqueueCopyBuffer();
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -146,7 +145,9 @@ HWTEST_F(EnqueueCopyBufferTest, WhenCopyingBufferThenIndirectDataGetsAdded) {
dc.srcOffset = {EnqueueCopyBufferTraits::srcOffset, 0, 0};
dc.dstOffset = {EnqueueCopyBufferTraits::dstOffset, 0, 0};
dc.size = {EnqueueCopyBufferTraits::size, 0, 0};
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();
@@ -163,7 +164,6 @@ HWTEST_F(EnqueueCopyBufferTest, WhenCopyingBufferStatelessThenStatelessKernelIsU
auto srcBuffer = std::unique_ptr<Buffer>(BufferHelper<>::create());
auto dstBuffer = std::unique_ptr<Buffer>(BufferHelper<>::create());
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBufferStateless,
pCmdQ->getDevice());
@@ -174,7 +174,9 @@ HWTEST_F(EnqueueCopyBufferTest, WhenCopyingBufferStatelessThenStatelessKernelIsU
dc.srcOffset = {EnqueueCopyBufferTraits::srcOffset, 0, 0};
dc.dstOffset = {EnqueueCopyBufferTraits::dstOffset, 0, 0};
dc.size = {EnqueueCopyBufferTraits::size, 0, 0};
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();
@@ -253,7 +255,7 @@ HWTEST_F(EnqueueCopyBufferTest, WhenCopyingBufferThenArgumentZeroMatchesSourceAd
enqueueCopyBufferAndParse<FamilyType>();
// Extract the kernel used
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -264,7 +266,9 @@ HWTEST_F(EnqueueCopyBufferTest, WhenCopyingBufferThenArgumentZeroMatchesSourceAd
dc.srcOffset = {EnqueueCopyBufferTraits::srcOffset, 0, 0};
dc.dstOffset = {EnqueueCopyBufferTraits::dstOffset, 0, 0};
dc.size = {EnqueueCopyBufferTraits::size, 0, 0};
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();
@@ -280,7 +284,6 @@ HWTEST_F(EnqueueCopyBufferTest, WhenCopyingBufferThenArgumentOneMatchesDestinati
enqueueCopyBufferAndParse<FamilyType>();
// Extract the kernel used
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -291,7 +294,9 @@ HWTEST_F(EnqueueCopyBufferTest, WhenCopyingBufferThenArgumentOneMatchesDestinati
dc.srcOffset = {EnqueueCopyBufferTraits::srcOffset, 0, 0};
dc.dstOffset = {EnqueueCopyBufferTraits::dstOffset, 0, 0};
dc.size = {EnqueueCopyBufferTraits::size, 0, 0};
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();

View File

@@ -97,7 +97,6 @@ HWTEST_F(EnqueueFillBufferCmdTests, WhenFillingBufferThenIndirectDataGetsAdded)
EnqueueFillBufferHelper<>::enqueueFillBuffer(pCmdQ, buffer);
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -109,7 +108,9 @@ HWTEST_F(EnqueueFillBufferCmdTests, WhenFillingBufferThenIndirectDataGetsAdded)
dc.dstMemObj = buffer;
dc.dstOffset = {EnqueueFillBufferTraits::offset, 0, 0};
dc.size = {EnqueueFillBufferTraits::size, 0, 0};
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();
@@ -128,7 +129,6 @@ HWTEST_F(EnqueueFillBufferCmdTests, FillBufferRightLeftover) {
EnqueueFillBufferHelper<>::enqueueFillBuffer(pCmdQ, buffer);
MultiDispatchInfo mdi;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -140,7 +140,9 @@ HWTEST_F(EnqueueFillBufferCmdTests, FillBufferRightLeftover) {
dc.dstMemObj = buffer;
dc.dstOffset = {0, 0, 0};
dc.size = {EnqueueFillBufferTraits::patternSize, 0, 0};
builder.buildDispatchInfos(mdi, dc);
MultiDispatchInfo mdi(dc);
builder.buildDispatchInfos(mdi);
EXPECT_EQ(1u, mdi.size());
auto kernel = mdi.begin()->getKernel();
@@ -154,7 +156,6 @@ HWTEST_F(EnqueueFillBufferCmdTests, FillBufferMiddle) {
EnqueueFillBufferHelper<>::enqueueFillBuffer(pCmdQ, buffer);
MultiDispatchInfo mdi;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -166,7 +167,9 @@ HWTEST_F(EnqueueFillBufferCmdTests, FillBufferMiddle) {
dc.dstMemObj = buffer;
dc.dstOffset = {0, 0, 0};
dc.size = {MemoryConstants::cacheLineSize, 0, 0};
builder.buildDispatchInfos(mdi, dc);
MultiDispatchInfo mdi(dc);
builder.buildDispatchInfos(mdi);
EXPECT_EQ(1u, mdi.size());
auto kernel = mdi.begin()->getKernel();
@@ -180,7 +183,6 @@ HWTEST_F(EnqueueFillBufferCmdTests, FillBufferLeftLeftover) {
EnqueueFillBufferHelper<>::enqueueFillBuffer(pCmdQ, buffer);
MultiDispatchInfo mdi;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -192,7 +194,9 @@ HWTEST_F(EnqueueFillBufferCmdTests, FillBufferLeftLeftover) {
dc.dstMemObj = buffer;
dc.dstOffset = {EnqueueFillBufferTraits::patternSize, 0, 0};
dc.size = {EnqueueFillBufferTraits::patternSize, 0, 0};
builder.buildDispatchInfos(mdi, dc);
MultiDispatchInfo mdi(dc);
builder.buildDispatchInfos(mdi);
EXPECT_EQ(1u, mdi.size());
auto kernel = mdi.begin()->getKernel();
@@ -273,7 +277,7 @@ HWTEST_F(EnqueueFillBufferCmdTests, WhenFillingBufferThenArgumentZeroShouldMatch
enqueueFillBuffer<FamilyType>();
// Extract the kernel used
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -285,7 +289,9 @@ HWTEST_F(EnqueueFillBufferCmdTests, WhenFillingBufferThenArgumentZeroShouldMatch
dc.dstMemObj = buffer;
dc.dstOffset = {EnqueueFillBufferTraits::offset, 0, 0};
dc.size = {EnqueueFillBufferTraits::size, 0, 0};
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();
@@ -308,7 +314,6 @@ HWTEST_F(EnqueueFillBufferCmdTests, DISABLED_WhenFillingBufferThenArgumentOneSho
enqueueFillBuffer<FamilyType>();
// Extract the kernel used
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -320,7 +325,9 @@ HWTEST_F(EnqueueFillBufferCmdTests, DISABLED_WhenFillingBufferThenArgumentOneSho
dc.dstMemObj = buffer;
dc.dstOffset = {EnqueueFillBufferTraits::offset, 0, 0};
dc.size = {EnqueueFillBufferTraits::size, 0, 0};
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();
@@ -340,7 +347,6 @@ HWTEST_F(EnqueueFillBufferCmdTests, WhenFillingBufferThenArgumentTwoShouldMatchP
enqueueFillBuffer<FamilyType>();
// Extract the kernel used
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -352,7 +358,9 @@ HWTEST_F(EnqueueFillBufferCmdTests, WhenFillingBufferThenArgumentTwoShouldMatchP
dc.dstMemObj = buffer;
dc.dstOffset = {EnqueueFillBufferTraits::offset, 0, 0};
dc.size = {EnqueueFillBufferTraits::size, 0, 0};
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();
@@ -381,8 +389,8 @@ HWTEST_F(EnqueueFillBufferCmdTests, WhenFillingBufferStatelessThenStatelessKerne
dc.dstOffset = {EnqueueFillBufferTraits::offset, 0, 0};
dc.size = {EnqueueFillBufferTraits::size, 0, 0};
MultiDispatchInfo multiDispatchInfo;
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();

View File

@@ -172,7 +172,6 @@ HWCMDTEST_F(IGFX_GEN8_CORE, EnqueueReadBufferRectTest, WhenReadingBufferThenIndi
enqueueReadBufferRect2D<FamilyType>();
// Extract the kernel used
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferRect,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -187,7 +186,9 @@ HWCMDTEST_F(IGFX_GEN8_CORE, EnqueueReadBufferRectTest, WhenReadingBufferThenIndi
dc.srcSlicePitch = slicePitch;
dc.dstRowPitch = rowPitch;
dc.dstSlicePitch = slicePitch;
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();

View File

@@ -140,7 +140,6 @@ HWTEST_F(EnqueueReadBufferTypeTest, addsIndirectData) {
srcBuffer->forceDisallowCPUCopy = true;
EnqueueReadBufferHelper<>::enqueueReadBuffer(pCmdQ, srcBuffer.get(), CL_TRUE);
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -150,7 +149,9 @@ HWTEST_F(EnqueueReadBufferTypeTest, addsIndirectData) {
dc.srcMemObj = srcBuffer.get();
dc.srcOffset = {EnqueueReadBufferTraits::offset, 0, 0};
dc.size = {srcBuffer->getSize(), 0, 0};
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();

View File

@@ -146,7 +146,6 @@ HWCMDTEST_F(IGFX_GEN8_CORE, EnqueueWriteBufferRectTest, WhenWritingBufferThenInd
enqueueWriteBufferRect2D<FamilyType>();
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferRect,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -161,7 +160,9 @@ HWCMDTEST_F(IGFX_GEN8_CORE, EnqueueWriteBufferRectTest, WhenWritingBufferThenInd
dc.srcSlicePitch = slicePitch;
dc.dstRowPitch = rowPitch;
dc.dstSlicePitch = slicePitch;
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();

View File

@@ -138,7 +138,6 @@ HWTEST_F(EnqueueWriteBufferTypeTest, WhenWritingBufferThenIndirectDataIsAdded) {
srcBuffer->forceDisallowCPUCopy = true;
EnqueueWriteBufferHelper<>::enqueueWriteBuffer(pCmdQ, srcBuffer.get(), EnqueueWriteBufferTraits::blocking);
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -148,7 +147,9 @@ HWTEST_F(EnqueueWriteBufferTypeTest, WhenWritingBufferThenIndirectDataIsAdded) {
dc.dstMemObj = srcBuffer.get();
dc.dstOffset = {EnqueueWriteBufferTraits::offset, 0, 0};
dc.size = {srcBuffer->getSize(), 0, 0};
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();

View File

@@ -76,7 +76,6 @@ HWTEST_F(GetSizeRequiredBufferTest, WhenFillingBufferThenHeapsAndCommandBufferCo
auto retVal = EnqueueFillBufferHelper<>::enqueue(pCmdQ);
EXPECT_EQ(CL_SUCCESS, retVal);
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::FillBuffer,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -88,7 +87,9 @@ HWTEST_F(GetSizeRequiredBufferTest, WhenFillingBufferThenHeapsAndCommandBufferCo
dc.dstMemObj = dstBuffer;
dc.dstOffset = {EnqueueFillBufferTraits::offset, 0, 0};
dc.size = {EnqueueFillBufferTraits::size, 0, 0};
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto usedAfterCS = commandStream.getUsed();
@@ -129,7 +130,6 @@ HWTEST_F(GetSizeRequiredBufferTest, WhenCopyingBufferThenHeapsAndCommandBufferCo
auto retVal = EnqueueCopyBufferHelper<>::enqueue(pCmdQ);
EXPECT_EQ(CL_SUCCESS, retVal);
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -140,7 +140,9 @@ HWTEST_F(GetSizeRequiredBufferTest, WhenCopyingBufferThenHeapsAndCommandBufferCo
dc.srcOffset = {EnqueueCopyBufferTraits::srcOffset, 0, 0};
dc.dstOffset = {EnqueueCopyBufferTraits::dstOffset, 0, 0};
dc.size = {EnqueueCopyBufferTraits::size, 0, 0};
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto usedAfterCS = commandStream.getUsed();
@@ -183,7 +185,6 @@ HWTEST_F(GetSizeRequiredBufferTest, WhenReadingBufferNonBlockingThenHeapsAndComm
srcBuffer,
CL_FALSE);
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -193,7 +194,9 @@ HWTEST_F(GetSizeRequiredBufferTest, WhenReadingBufferNonBlockingThenHeapsAndComm
dc.srcMemObj = srcBuffer;
dc.srcOffset = {EnqueueReadBufferTraits::offset, 0, 0};
dc.size = {srcBuffer->getSize(), 0, 0};
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto usedAfterCS = commandStream.getUsed();
@@ -237,7 +240,6 @@ HWTEST_F(GetSizeRequiredBufferTest, WhenReadingBufferBlockingThenThenHeapsAndCom
srcBuffer,
CL_TRUE);
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -247,7 +249,9 @@ HWTEST_F(GetSizeRequiredBufferTest, WhenReadingBufferBlockingThenThenHeapsAndCom
dc.srcMemObj = srcBuffer;
dc.srcOffset = {EnqueueReadBufferTraits::offset, 0, 0};
dc.size = {srcBuffer->getSize(), 0, 0};
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto usedAfterCS = commandStream.getUsed();
@@ -291,7 +295,6 @@ HWTEST_F(GetSizeRequiredBufferTest, WhenWritingBufferNonBlockingThenHeapsAndComm
CL_FALSE);
EXPECT_EQ(CL_SUCCESS, retVal);
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -301,7 +304,9 @@ HWTEST_F(GetSizeRequiredBufferTest, WhenWritingBufferNonBlockingThenHeapsAndComm
dc.dstMemObj = dstBuffer;
dc.dstOffset = {EnqueueWriteBufferTraits::offset, 0, 0};
dc.size = {dstBuffer->getSize(), 0, 0};
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto usedAfterCS = commandStream.getUsed();
@@ -342,7 +347,6 @@ HWTEST_F(GetSizeRequiredBufferTest, WhenWritingBufferBlockingThenHeapsAndCommand
CL_TRUE);
EXPECT_EQ(CL_SUCCESS, retVal);
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -352,7 +356,9 @@ HWTEST_F(GetSizeRequiredBufferTest, WhenWritingBufferBlockingThenHeapsAndCommand
dc.dstMemObj = dstBuffer;
dc.dstOffset = {EnqueueWriteBufferTraits::offset, 0, 0};
dc.size = {dstBuffer->getSize(), 0, 0};
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto usedAfterCS = commandStream.getUsed();
@@ -377,7 +383,6 @@ HWTEST_F(GetSizeRequiredBufferTest, WhenWritingBufferBlockingThenHeapsAndCommand
}
HWTEST_F(GetSizeRequiredBufferTest, givenMultipleKernelRequiringSshWhenTotalSizeIsComputedThenItIsProperlyAligned) {
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToBuffer,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -387,10 +392,13 @@ HWTEST_F(GetSizeRequiredBufferTest, givenMultipleKernelRequiringSshWhenTotalSize
dc.dstMemObj = dstBuffer;
dc.dstOffset = {EnqueueWriteBufferTraits::offset, 0, 0};
dc.size = {dstBuffer->getSize(), 0, 0};
builder.buildDispatchInfos(multiDispatchInfo, dc);
builder.buildDispatchInfos(multiDispatchInfo, dc);
builder.buildDispatchInfos(multiDispatchInfo, dc);
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
builder.buildDispatchInfos(multiDispatchInfo);
builder.buildDispatchInfos(multiDispatchInfo);
builder.buildDispatchInfos(multiDispatchInfo);
auto sizeSSH = multiDispatchInfo.begin()->getKernel()->getSurfaceStateHeapSize();
sizeSSH += sizeSSH ? FamilyType::BINDING_TABLE_STATE::SURFACESTATEPOINTER_ALIGN_SIZE : 0;

View File

@@ -67,7 +67,6 @@ HWTEST_F(GetSizeRequiredImageTest, WhenCopyingImageThenHeapsAndCommandBufferCons
auto retVal = EnqueueCopyImageHelper<>::enqueueCopyImage(pCmdQ);
EXPECT_EQ(CL_SUCCESS, retVal);
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImageToImage3d,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -78,7 +77,9 @@ HWTEST_F(GetSizeRequiredImageTest, WhenCopyingImageThenHeapsAndCommandBufferCons
dc.srcOffset = EnqueueCopyImageTraits::srcOrigin;
dc.dstOffset = EnqueueCopyImageTraits::dstOrigin;
dc.size = {1, 1, 1};
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();
@@ -170,7 +171,6 @@ HWTEST_F(GetSizeRequiredImageTest, WhenReadingImageNonBlockingThenHeapsAndComman
CL_FALSE);
EXPECT_EQ(CL_SUCCESS, retVal);
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImage3dToBuffer,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -182,7 +182,9 @@ HWTEST_F(GetSizeRequiredImageTest, WhenReadingImageNonBlockingThenHeapsAndComman
dc.size = EnqueueReadImageTraits::region;
dc.srcRowPitch = EnqueueReadImageTraits::rowPitch;
dc.srcSlicePitch = EnqueueReadImageTraits::slicePitch;
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();
@@ -224,7 +226,6 @@ HWTEST_F(GetSizeRequiredImageTest, WhenReadingImageBlockingThenHeapsAndCommandBu
CL_TRUE);
EXPECT_EQ(CL_SUCCESS, retVal);
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImage3dToBuffer,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -236,7 +237,9 @@ HWTEST_F(GetSizeRequiredImageTest, WhenReadingImageBlockingThenHeapsAndCommandBu
dc.size = EnqueueReadImageTraits::region;
dc.srcRowPitch = EnqueueReadImageTraits::rowPitch;
dc.srcSlicePitch = EnqueueReadImageTraits::slicePitch;
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();
@@ -278,7 +281,6 @@ HWTEST_F(GetSizeRequiredImageTest, WhenWritingImageNonBlockingThenHeapsAndComman
CL_FALSE);
EXPECT_EQ(CL_SUCCESS, retVal);
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToImage3d,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -290,7 +292,9 @@ HWTEST_F(GetSizeRequiredImageTest, WhenWritingImageNonBlockingThenHeapsAndComman
dc.size = EnqueueWriteImageTraits::region;
dc.dstRowPitch = EnqueueWriteImageTraits::rowPitch;
dc.dstSlicePitch = EnqueueWriteImageTraits::slicePitch;
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();
@@ -332,7 +336,6 @@ HWTEST_F(GetSizeRequiredImageTest, WhenWritingImageBlockingThenHeapsAndCommandBu
CL_TRUE);
EXPECT_EQ(CL_SUCCESS, retVal);
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToImage3d,
pCmdQ->getDevice());
ASSERT_NE(nullptr, &builder);
@@ -344,7 +347,9 @@ HWTEST_F(GetSizeRequiredImageTest, WhenWritingImageBlockingThenHeapsAndCommandBu
dc.size = EnqueueWriteImageTraits::region;
dc.dstRowPitch = EnqueueWriteImageTraits::rowPitch;
dc.dstSlicePitch = EnqueueWriteImageTraits::slicePitch;
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();

View File

@@ -66,7 +66,6 @@ HWCMDTEST_F(IGFX_GEN8_CORE, HardwareCommandsTest, WhenProgramInterfaceDescriptor
std::unique_ptr<Image> dstImage(Image2dHelper<>::create(pContext));
ASSERT_NE(nullptr, dstImage.get());
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImageToImage3d,
cmdQ.getDevice());
ASSERT_NE(nullptr, &builder);
@@ -77,7 +76,9 @@ HWCMDTEST_F(IGFX_GEN8_CORE, HardwareCommandsTest, WhenProgramInterfaceDescriptor
dc.srcOffset = {0, 0, 0};
dc.dstOffset = {0, 0, 0};
dc.size = {1, 1, 1};
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();
@@ -138,7 +139,6 @@ HWTEST_F(HardwareCommandsTest, WhenCrossThreadDataIsCreatedThenOnlyRequiredSpace
std::unique_ptr<Image> dstImage(Image2dHelper<>::create(pContext));
ASSERT_NE(nullptr, dstImage.get());
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImageToImage3d,
cmdQ.getDevice());
ASSERT_NE(nullptr, &builder);
@@ -149,7 +149,9 @@ HWTEST_F(HardwareCommandsTest, WhenCrossThreadDataIsCreatedThenOnlyRequiredSpace
dc.srcOffset = {0, 0, 0};
dc.dstOffset = {0, 0, 0};
dc.size = {1, 1, 1};
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();
@@ -286,7 +288,6 @@ HWCMDTEST_F(IGFX_GEN8_CORE, HardwareCommandsTest, WhenAllocatingIndirectStateRes
std::unique_ptr<Image> dstImage(Image2dHelper<>::create(pContext));
ASSERT_NE(nullptr, dstImage.get());
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImageToImage3d,
cmdQ.getDevice());
ASSERT_NE(nullptr, &builder);
@@ -297,7 +298,9 @@ HWCMDTEST_F(IGFX_GEN8_CORE, HardwareCommandsTest, WhenAllocatingIndirectStateRes
dc.srcOffset = {0, 0, 0};
dc.dstOffset = {0, 0, 0};
dc.size = {1, 1, 1};
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();
@@ -504,7 +507,6 @@ HWCMDTEST_F(IGFX_GEN8_CORE, HardwareCommandsTest, whenSendingIndirectStateThenKe
std::unique_ptr<Image> img(Image2dHelper<>::create(pContext));
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyImageToImage3d,
cmdQ.getDevice());
@@ -512,7 +514,9 @@ HWCMDTEST_F(IGFX_GEN8_CORE, HardwareCommandsTest, whenSendingIndirectStateThenKe
dc.srcMemObj = img.get();
dc.dstMemObj = img.get();
dc.size = {1, 1, 1};
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
ASSERT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();
@@ -586,7 +590,6 @@ HWCMDTEST_F(IGFX_GEN8_CORE, HardwareCommandsTest, WhenSendingIndirectStateThenBi
std::unique_ptr<Image> dstImage(Image2dHelper<>::create(pContext));
ASSERT_NE(nullptr, dstImage.get());
MultiDispatchInfo multiDispatchInfo;
auto &builder = BuiltInDispatchBuilderOp::getBuiltinDispatchInfoBuilder(EBuiltInOps::CopyBufferToImage3d,
cmdQ.getDevice());
ASSERT_NE(nullptr, &builder);
@@ -598,7 +601,9 @@ HWCMDTEST_F(IGFX_GEN8_CORE, HardwareCommandsTest, WhenSendingIndirectStateThenBi
dc.size = {1, 1, 1};
dc.dstRowPitch = 0;
dc.dstSlicePitch = 0;
builder.buildDispatchInfos(multiDispatchInfo, dc);
MultiDispatchInfo multiDispatchInfo(dc);
builder.buildDispatchInfos(multiDispatchInfo);
EXPECT_NE(0u, multiDispatchInfo.size());
auto kernel = multiDispatchInfo.begin()->getKernel();

View File

@@ -20,18 +20,19 @@ class MockBuiltinDispatchInfoBuilder : public BuiltinDispatchInfoBuilder {
virtual void validateInput(const BuiltinOpParams &conf) const {};
bool buildDispatchInfos(MultiDispatchInfo &mdi, const BuiltinOpParams &conf) const override {
validateInput(conf);
builtinOpParams = conf;
originalBuilder->buildDispatchInfos(mdi, conf);
bool buildDispatchInfos(MultiDispatchInfo &mdi) const override {
validateInput(mdi.peekBuiltinOpParams());
originalBuilder->buildDispatchInfos(mdi);
for (auto &di : mdi) {
multiDispatchInfo.push(di);
}
multiDispatchInfo.setBuiltinOpParams(mdi.peekBuiltinOpParams());
return true;
}
const BuiltinOpParams *getBuiltinOpParams() const {
return &builtinOpParams;
return &multiDispatchInfo.peekBuiltinOpParams();
};
const MultiDispatchInfo *getMultiDispatchInfo() const {
return &multiDispatchInfo;
@@ -48,7 +49,6 @@ class MockBuiltinDispatchInfoBuilder : public BuiltinDispatchInfoBuilder {
}
protected:
mutable BuiltinOpParams builtinOpParams;
mutable MultiDispatchInfo multiDispatchInfo;
BuiltinDispatchInfoBuilder *originalBuilder;
bool withFailureInjection = false;