Skip to content

Commit 21021f0

Browse files
Revert "refactor: unify blit memory fill methods and pass BlitProperties"
This reverts commit d7ca656. Signed-off-by: Compute-Runtime-Validation <[email protected]>
1 parent 7cbe19c commit 21021f0

14 files changed

+75
-153
lines changed

level_zero/core/source/cmdlist/cmdlist_hw.inl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2327,15 +2327,15 @@ ze_result_t CommandListCoreFamily<gfxCoreFamily>::appendBlitFill(void *ptr,
23272327
}
23282328
}
23292329

2330-
auto offset = getAllocationOffsetForAppendBlitFill(ptr, *gpuAllocation);
2330+
uint64_t offset = getAllocationOffsetForAppendBlitFill(ptr, *gpuAllocation);
23312331

23322332
commandContainer.addToResidencyContainer(gpuAllocation);
23332333
uint32_t patternToCommand[4] = {};
23342334
memcpy_s(&patternToCommand, sizeof(patternToCommand), pattern, patternSize);
2335-
2336-
auto blitProperties = NEO::BlitProperties::constructPropertiesForMemoryFill(gpuAllocation, size, patternToCommand, patternSize, offset);
2337-
2338-
NEO::BlitCommandsHelper<GfxFamily>::dispatchBlitMemoryColorFill(blitProperties, *commandContainer.getCommandStream(), neoDevice->getRootDeviceEnvironmentRef());
2335+
NEO::BlitCommandsHelper<GfxFamily>::dispatchBlitMemoryColorFill(gpuAllocation, offset, patternToCommand, patternSize,
2336+
*commandContainer.getCommandStream(),
2337+
size,
2338+
neoDevice->getRootDeviceEnvironmentRef());
23392339
dummyBlitWa.isWaRequired = true;
23402340

23412341
appendSignalEventPostWalker(signalEvent, nullptr, nullptr, false, false, true);

shared/source/gen12lp/command_stream_receiver_hw_gen12lp.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,8 @@ void BlitCommandsHelper<Family>::appendBlitCommandsForImages(const BlitPropertie
108108
}
109109

110110
template <>
111-
void BlitCommandsHelper<Family>::dispatchBlitMemoryByteFill(const BlitProperties &blitProperties, LinearStream &linearStream, RootDeviceEnvironment &rootDeviceEnvironment) {
112-
NEO::BlitCommandsHelper<Family>::dispatchBlitMemoryFill(blitProperties, linearStream, rootDeviceEnvironment);
111+
void BlitCommandsHelper<Family>::dispatchBlitMemoryByteFill(NEO::GraphicsAllocation *dstAlloc, uint64_t offset, uint32_t *pattern, LinearStream &linearStream, size_t size, RootDeviceEnvironment &rootDeviceEnvironment) {
112+
NEO::BlitCommandsHelper<Family>::dispatchBlitMemoryFill(dstAlloc, offset, pattern, linearStream, size, rootDeviceEnvironment, COLOR_DEPTH::COLOR_DEPTH_8_BIT_COLOR, 1);
113113
}
114114

115115
template <>

shared/source/helpers/blit_commands_helper.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,9 @@ struct BlitCommandsHelper {
4949
static void dispatchBlitCommandsForBufferRegion(const BlitProperties &blitProperties, LinearStream &linearStream, RootDeviceEnvironment &rootDeviceEnvironment);
5050
static void dispatchBlitCommandsForBufferPerRow(const BlitProperties &blitProperties, LinearStream &linearStream, RootDeviceEnvironment &rootDeviceEnvironment);
5151
static void dispatchBlitCommandsForImageRegion(const BlitProperties &blitProperties, LinearStream &linearStream, RootDeviceEnvironment &rootDeviceEnvironment);
52-
static void dispatchBlitMemoryColorFill(const BlitProperties &blitProperties, LinearStream &linearStream, RootDeviceEnvironment &rootDeviceEnvironment);
53-
static void dispatchBlitMemoryByteFill(const BlitProperties &blitProperties, LinearStream &linearStream, RootDeviceEnvironment &rootDeviceEnvironment);
54-
static void dispatchBlitMemoryFill(const BlitProperties &blitProperties, LinearStream &linearStream, RootDeviceEnvironment &rootDeviceEnvironment);
52+
static void dispatchBlitMemoryColorFill(NEO::GraphicsAllocation *dstAlloc, uint64_t offset, uint32_t *pattern, size_t patternSize, LinearStream &linearStream, size_t size, RootDeviceEnvironment &rootDeviceEnvironment);
53+
static void dispatchBlitMemoryByteFill(NEO::GraphicsAllocation *dstAlloc, uint64_t offset, uint32_t *pattern, LinearStream &linearStream, size_t size, RootDeviceEnvironment &rootDeviceEnvironment);
54+
static void dispatchBlitMemoryFill(NEO::GraphicsAllocation *dstAlloc, uint64_t offset, uint32_t *pattern, LinearStream &linearStream, size_t size, RootDeviceEnvironment &rootDeviceEnvironment, COLOR_DEPTH depth, size_t patternSize);
5555
static void dispatchDummyBlit(LinearStream &linearStream, EncodeDummyBlitWaArgs &waArgs);
5656
static size_t getDummyBlitSize(const EncodeDummyBlitWaArgs &waArgs);
5757
static bool isDummyBlitWaNeeded(const EncodeDummyBlitWaArgs &waArgs);
@@ -67,9 +67,9 @@ struct BlitCommandsHelper {
6767
template <typename T = typename GfxFamily::XY_BLOCK_COPY_BLT>
6868
static void appendColorDepth(const BlitProperties &blitProperties, T &blitCmd);
6969
static void appendBlitMemoryOptionsForFillBuffer(NEO::GraphicsAllocation *dstAlloc, typename GfxFamily::XY_COLOR_BLT &blitCmd, const RootDeviceEnvironment &rootDeviceEnvironment);
70-
static void appendBlitFillCommand(const BlitProperties &blitProperties, typename GfxFamily::XY_COLOR_BLT &blitCmd);
70+
static void appendBlitFillCommand(typename GfxFamily::XY_COLOR_BLT &blitCmd);
7171
static void appendBlitMemSetCompressionFormat(void *blitCmd, NEO::GraphicsAllocation *dstAlloc, uint32_t compressionFormat);
72-
static void appendBlitMemSetCommand(const BlitProperties &blitProperties, void *blitCmd);
72+
static void appendBlitMemSetCommand(void *blitCmd);
7373
static void appendSurfaceType(const BlitProperties &blitProperties, typename GfxFamily::XY_BLOCK_COPY_BLT &blitCmd);
7474
static void appendTilingEnable(typename GfxFamily::XY_COLOR_BLT &blitCmd);
7575
static void appendTilingType(const GMM_TILE_TYPE srcTilingType, const GMM_TILE_TYPE dstTilingType, typename GfxFamily::XY_BLOCK_COPY_BLT &blitCmd);

shared/source/helpers/blit_commands_helper_base.inl

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
#include "shared/source/helpers/gfx_core_helper.h"
1212
#include "shared/source/helpers/register_offsets.h"
1313
#include "shared/source/helpers/timestamp_packet.h"
14-
#include "shared/source/utilities/lookup_array.h"
1514

1615
#include <cmath>
1716

@@ -254,31 +253,22 @@ void BlitCommandsHelper<GfxFamily>::dispatchBlitCommandsForBufferPerRow(const Bl
254253
}
255254

256255
template <typename GfxFamily>
257-
void BlitCommandsHelper<GfxFamily>::appendBlitMemSetCommand(const BlitProperties &blitProperties, void *blitCmd) {}
256+
void BlitCommandsHelper<GfxFamily>::appendBlitMemSetCommand(void *blitCmd) {}
258257

259258
template <typename GfxFamily>
260-
void BlitCommandsHelper<GfxFamily>::dispatchBlitMemoryFill(const BlitProperties &blitProperties, LinearStream &linearStream, RootDeviceEnvironment &rootDeviceEnvironment) {
259+
void BlitCommandsHelper<GfxFamily>::dispatchBlitMemoryFill(NEO::GraphicsAllocation *dstAlloc, uint64_t offset, uint32_t *pattern, LinearStream &linearStream, size_t size, RootDeviceEnvironment &rootDeviceEnvironment, COLOR_DEPTH depth, size_t patternSize) {
261260
using XY_COLOR_BLT = typename GfxFamily::XY_COLOR_BLT;
262261
auto blitCmd = GfxFamily::cmdInitXyColorBlt;
263262
const auto maxWidth = getMaxBlitWidth(rootDeviceEnvironment);
264263
const auto maxHeight = getMaxBlitHeight(rootDeviceEnvironment, true);
265264

266-
const LookupArray<size_t, COLOR_DEPTH, 5> colorDepthSize({{
267-
{1, COLOR_DEPTH::COLOR_DEPTH_8_BIT_COLOR},
268-
{2, COLOR_DEPTH::COLOR_DEPTH_16_BIT_COLOR},
269-
{4, COLOR_DEPTH::COLOR_DEPTH_32_BIT_COLOR},
270-
{8, COLOR_DEPTH::COLOR_DEPTH_64_BIT_COLOR},
271-
{16, COLOR_DEPTH::COLOR_DEPTH_128_BIT_COLOR},
272-
}});
265+
blitCmd.setFillColor(pattern);
266+
blitCmd.setColorDepth(depth);
273267

274-
blitCmd.setFillColor(blitProperties.fillPattern);
275-
blitCmd.setColorDepth(colorDepthSize.lookUp(blitProperties.fillPatternSize));
276-
277-
uint64_t sizeToFill = blitProperties.copySize.x / blitProperties.fillPatternSize;
278-
uint64_t offset = blitProperties.dstOffset.x;
268+
uint64_t sizeToFill = size / patternSize;
279269
while (sizeToFill != 0) {
280270
auto tmpCmd = blitCmd;
281-
tmpCmd.setDestinationBaseAddress(ptrOffset(blitProperties.dstAllocation->getGpuAddress(), static_cast<size_t>(offset)));
271+
tmpCmd.setDestinationBaseAddress(ptrOffset(dstAlloc->getGpuAddress(), static_cast<size_t>(offset)));
282272
uint64_t height = 0;
283273
uint64_t width = 0;
284274
if (sizeToFill <= maxWidth) {
@@ -293,15 +283,15 @@ void BlitCommandsHelper<GfxFamily>::dispatchBlitMemoryFill(const BlitProperties
293283
}
294284
tmpCmd.setDestinationX2CoordinateRight(static_cast<uint32_t>(width));
295285
tmpCmd.setDestinationY2CoordinateBottom(static_cast<uint32_t>(height));
296-
tmpCmd.setDestinationPitch(static_cast<uint32_t>(width * blitProperties.fillPatternSize));
286+
tmpCmd.setDestinationPitch(static_cast<uint32_t>(width * patternSize));
297287

298-
appendBlitMemoryOptionsForFillBuffer(blitProperties.dstAllocation, tmpCmd, rootDeviceEnvironment);
299-
appendBlitFillCommand(blitProperties, tmpCmd);
288+
appendBlitMemoryOptionsForFillBuffer(dstAlloc, tmpCmd, rootDeviceEnvironment);
289+
appendBlitFillCommand(tmpCmd);
300290

301291
auto cmd = linearStream.getSpaceForCmd<XY_COLOR_BLT>();
302292
*cmd = tmpCmd;
303293
auto blitSize = width * height;
304-
offset += (blitSize * blitProperties.fillPatternSize);
294+
offset += (blitSize * patternSize);
305295
sizeToFill -= blitSize;
306296
}
307297
}
@@ -564,14 +554,25 @@ template <typename GfxFamily>
564554
void BlitCommandsHelper<GfxFamily>::adjustControlSurfaceType(const BlitProperties &blitProperties, typename GfxFamily::XY_BLOCK_COPY_BLT &blitCmd) {}
565555

566556
template <typename GfxFamily>
567-
void BlitCommandsHelper<GfxFamily>::appendBlitFillCommand(const BlitProperties &blitProperties, typename GfxFamily::XY_COLOR_BLT &blitCmd) {}
568-
569-
template <typename GfxFamily>
570-
void BlitCommandsHelper<GfxFamily>::dispatchBlitMemoryColorFill(const BlitProperties &blitProperties, LinearStream &linearStream, RootDeviceEnvironment &rootDeviceEnvironment) {
571-
if (blitProperties.fillPatternSize == 1) {
572-
NEO::BlitCommandsHelper<GfxFamily>::dispatchBlitMemoryByteFill(blitProperties, linearStream, rootDeviceEnvironment);
573-
} else {
574-
NEO::BlitCommandsHelper<GfxFamily>::dispatchBlitMemoryFill(blitProperties, linearStream, rootDeviceEnvironment);
557+
void BlitCommandsHelper<GfxFamily>::appendBlitFillCommand(typename GfxFamily::XY_COLOR_BLT &blitCmd) {}
558+
559+
template <typename GfxFamily>
560+
void BlitCommandsHelper<GfxFamily>::dispatchBlitMemoryColorFill(NEO::GraphicsAllocation *dstAlloc, uint64_t offset, uint32_t *pattern, size_t patternSize, LinearStream &linearStream, size_t size, RootDeviceEnvironment &rootDeviceEnvironment) {
561+
switch (patternSize) {
562+
case 1:
563+
NEO::BlitCommandsHelper<GfxFamily>::dispatchBlitMemoryByteFill(dstAlloc, offset, pattern, linearStream, size, rootDeviceEnvironment);
564+
break;
565+
case 2:
566+
NEO::BlitCommandsHelper<GfxFamily>::dispatchBlitMemoryFill(dstAlloc, offset, pattern, linearStream, size, rootDeviceEnvironment, COLOR_DEPTH::COLOR_DEPTH_16_BIT_COLOR, 2);
567+
break;
568+
case 4:
569+
NEO::BlitCommandsHelper<GfxFamily>::dispatchBlitMemoryFill(dstAlloc, offset, pattern, linearStream, size, rootDeviceEnvironment, COLOR_DEPTH::COLOR_DEPTH_32_BIT_COLOR, 4);
570+
break;
571+
case 8:
572+
NEO::BlitCommandsHelper<GfxFamily>::dispatchBlitMemoryFill(dstAlloc, offset, pattern, linearStream, size, rootDeviceEnvironment, COLOR_DEPTH::COLOR_DEPTH_64_BIT_COLOR, 8);
573+
break;
574+
default:
575+
NEO::BlitCommandsHelper<GfxFamily>::dispatchBlitMemoryFill(dstAlloc, offset, pattern, linearStream, size, rootDeviceEnvironment, COLOR_DEPTH::COLOR_DEPTH_128_BIT_COLOR, 16);
575576
}
576577
}
577578

shared/source/helpers/blit_commands_helper_pvc_and_later.inl

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
namespace NEO {
1313

1414
template <typename GfxFamily>
15-
void BlitCommandsHelper<GfxFamily>::dispatchBlitMemoryByteFill(const BlitProperties &blitProperties, LinearStream &linearStream, RootDeviceEnvironment &rootDeviceEnvironment) {
15+
void BlitCommandsHelper<GfxFamily>::dispatchBlitMemoryByteFill(NEO::GraphicsAllocation *dstAlloc, uint64_t offset, uint32_t *pattern, LinearStream &linearStream, size_t size, RootDeviceEnvironment &rootDeviceEnvironment) {
1616
using MEM_SET = typename Family::MEM_SET;
1717
auto blitCmd = Family::cmdInitMemSet;
1818

@@ -23,20 +23,19 @@ void BlitCommandsHelper<GfxFamily>::dispatchBlitMemoryByteFill(const BlitPropert
2323
blitCmd.setDestinationMOCS(mocs);
2424

2525
uint32_t compressionFormat = 0;
26-
if (blitProperties.dstAllocation->isCompressionEnabled()) {
27-
auto resourceFormat = blitProperties.dstAllocation->getDefaultGmm()->gmmResourceInfo->getResourceFormat();
26+
if (dstAlloc->isCompressionEnabled()) {
27+
auto resourceFormat = dstAlloc->getDefaultGmm()->gmmResourceInfo->getResourceFormat();
2828
compressionFormat = static_cast<uint32_t>(rootDeviceEnvironment.getGmmClientContext()->getSurfaceStateCompressionFormat(resourceFormat));
2929
}
3030

31-
appendBlitMemSetCompressionFormat(&blitCmd, blitProperties.dstAllocation, compressionFormat);
31+
appendBlitMemSetCompressionFormat(&blitCmd, dstAlloc, compressionFormat);
3232

33-
blitCmd.setFillData(*blitProperties.fillPattern);
33+
blitCmd.setFillData(*pattern);
3434

35-
auto sizeToFill = blitProperties.copySize.x;
36-
uint64_t offset = blitProperties.dstOffset.x;
35+
auto sizeToFill = size;
3736
while (sizeToFill != 0) {
3837
auto tmpCmd = blitCmd;
39-
tmpCmd.setDestinationStartAddress(ptrOffset(blitProperties.dstAllocation->getGpuAddress(), static_cast<size_t>(offset)));
38+
tmpCmd.setDestinationStartAddress(ptrOffset(dstAlloc->getGpuAddress(), static_cast<size_t>(offset)));
4039
size_t height = 0;
4140
size_t width = 0;
4241
if (sizeToFill <= BlitterConstants::maxBlitSetWidth) {
@@ -53,7 +52,7 @@ void BlitCommandsHelper<GfxFamily>::dispatchBlitMemoryByteFill(const BlitPropert
5352
tmpCmd.setFillHeight(static_cast<uint32_t>(height));
5453
tmpCmd.setDestinationPitch(static_cast<uint32_t>(width));
5554

56-
appendBlitMemSetCommand(blitProperties, &tmpCmd);
55+
appendBlitMemSetCommand(&tmpCmd);
5756

5857
auto cmd = linearStream.getSpaceForCmd<MEM_SET>();
5958
*cmd = tmpCmd;

shared/source/helpers/blit_commands_helper_xehp_and_later.inl

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -367,10 +367,7 @@ void BlitCommandsHelper<GfxFamily>::dispatchDummyBlit(LinearStream &linearStream
367367

368368
appendTilingEnable(blitCmd);
369369
appendBlitMemoryOptionsForFillBuffer(dummyAllocation, blitCmd, *rootDeviceEnvironment);
370-
371-
BlitProperties blitProperties = {};
372-
373-
appendBlitFillCommand(blitProperties, blitCmd);
370+
appendBlitFillCommand(blitCmd);
374371

375372
auto cmd = linearStream.getSpaceForCmd<XY_COLOR_BLT>();
376373
*cmd = blitCmd;

shared/source/helpers/blit_properties.cpp

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,6 @@
1313

1414
namespace NEO {
1515

16-
BlitProperties BlitProperties::constructPropertiesForMemoryFill(GraphicsAllocation *dstAllocation, size_t size, uint32_t *pattern, size_t patternSize, size_t offset) {
17-
return {
18-
.blitDirection = BlitterConstants::BlitDirection::fill,
19-
.dstAllocation = dstAllocation,
20-
.fillPattern = pattern,
21-
.copySize = {size, 1, 1},
22-
.dstOffset = {offset, 0, 0},
23-
.srcOffset = {0, 0, 0},
24-
.fillPatternSize = patternSize,
25-
.isSystemMemoryPoolUsed = MemoryPoolHelper::isSystemMemoryPool(dstAllocation->getMemoryPool())};
26-
}
27-
2816
BlitProperties BlitProperties::constructPropertiesForReadWrite(BlitterConstants::BlitDirection blitDirection,
2917
CommandStreamReceiver &commandStreamReceiver,
3018
GraphicsAllocation *memObjAllocation,

shared/source/helpers/blit_properties.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ struct BlitSyncProperties {
4343
};
4444

4545
struct BlitProperties {
46-
static BlitProperties constructPropertiesForMemoryFill(GraphicsAllocation *dstAllocation, size_t size, uint32_t *pattern, size_t patternSize, size_t offset);
4746
static BlitProperties constructPropertiesForReadWrite(BlitterConstants::BlitDirection blitDirection,
4847
CommandStreamReceiver &commandStreamReceiver,
4948
GraphicsAllocation *memObjAllocation,
@@ -76,7 +75,6 @@ struct BlitProperties {
7675
GraphicsAllocation *dstAllocation = nullptr;
7776
GraphicsAllocation *srcAllocation = nullptr;
7877
GraphicsAllocation *clearColorAllocation = nullptr;
79-
uint32_t *fillPattern = nullptr;
8078
uint64_t dstGpuAddress = 0;
8179
uint64_t srcGpuAddress = 0;
8280

@@ -88,7 +86,6 @@ struct BlitProperties {
8886
size_t dstSlicePitch = 0;
8987
size_t srcRowPitch = 0;
9088
size_t srcSlicePitch = 0;
91-
size_t fillPatternSize = 0;
9289
Vec3<size_t> dstSize = 0;
9390
Vec3<size_t> srcSize = 0;
9491
size_t bytesPerPixel = 1;

shared/source/helpers/constants.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,9 @@ enum class BlitDirection : uint32_t {
7070
bufferToHostPtr,
7171
hostPtrToBuffer,
7272
bufferToBuffer,
73-
fill,
7473
hostPtrToImage,
7574
imageToHostPtr,
76-
imageToImage,
75+
imageToImage
7776
};
7877

7978
enum PostBlitMode : int32_t {

shared/source/xe_hpg_core/command_stream_receiver_hw_xe_hpg_core.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,8 @@ void BlitCommandsHelper<Family>::appendBlitCommandsBlockCopy(const BlitPropertie
150150
}
151151

152152
template <>
153-
void BlitCommandsHelper<Family>::dispatchBlitMemoryByteFill(const BlitProperties &blitProperties, LinearStream &linearStream, RootDeviceEnvironment &rootDeviceEnvironment) {
154-
NEO::BlitCommandsHelper<Family>::dispatchBlitMemoryFill(blitProperties, linearStream, rootDeviceEnvironment);
153+
void BlitCommandsHelper<Family>::dispatchBlitMemoryByteFill(NEO::GraphicsAllocation *dstAlloc, uint64_t offset, uint32_t *pattern, LinearStream &linearStream, size_t size, RootDeviceEnvironment &rootDeviceEnvironment) {
154+
NEO::BlitCommandsHelper<Family>::dispatchBlitMemoryFill(dstAlloc, offset, pattern, linearStream, size, rootDeviceEnvironment, COLOR_DEPTH::COLOR_DEPTH_8_BIT_COLOR, 1);
155155
}
156156

157157
template <>

0 commit comments

Comments
 (0)