1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
|
/*
* Copyright (C) 2018-2024 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
#include "shared/source/helpers/ptr_math.h"
#include "opencl/test/unit_test/command_queue/command_enqueue_fixture.h"
#include "opencl/test/unit_test/fixtures/buffer_fixture.h"
#include "opencl/test/unit_test/mocks/mock_context.h"
namespace NEO {
struct EnqueueCopyBufferRectHelper {
cl_int enqueueCopyBufferRect(
CommandQueue *pCmdQ,
Buffer *srcBuffer,
Buffer *dstBuffer,
const size_t *srcOrigin,
const size_t *dstOrigin,
const size_t *region,
size_t srcRowPitch,
size_t srcSlicePitch,
size_t dstRowPitch,
size_t dstSlicePitch,
cl_uint numEventsInWaitList,
const cl_event *eventWaitList,
cl_event *event) {
cl_int retVal = pCmdQ->enqueueCopyBufferRect(
srcBuffer,
dstBuffer,
srcOrigin,
dstOrigin,
region,
srcRowPitch,
srcSlicePitch,
dstRowPitch,
dstSlicePitch,
numEventsInWaitList,
eventWaitList,
event);
return retVal;
}
};
struct EnqueueCopyBufferRectTest : public CommandEnqueueFixture,
public EnqueueCopyBufferRectHelper,
public ::testing::Test {
struct BufferRect : public BufferDefaults {
static const size_t sizeInBytes;
};
void SetUp(void) override {
CommandEnqueueFixture::setUp();
BufferDefaults::context = new MockContext;
srcBuffer = BufferHelper<BufferRect>::create();
dstBuffer = BufferHelper<BufferRect>::create();
}
void TearDown(void) override {
delete srcBuffer;
delete dstBuffer;
delete BufferDefaults::context;
CommandEnqueueFixture::tearDown();
}
protected:
template <typename FamilyType>
void enqueueCopyBufferRect2D() {
size_t srcOrigin[] = {0, 0, 0};
size_t dstOrigin[] = {0, 0, 0};
size_t region[] = {50, 50, 1};
auto retVal = EnqueueCopyBufferRectHelper::enqueueCopyBufferRect(
pCmdQ,
srcBuffer,
dstBuffer,
srcOrigin,
dstOrigin,
region,
rowPitch,
slicePitch,
rowPitch,
slicePitch,
0,
nullptr,
nullptr);
EXPECT_EQ(CL_SUCCESS, retVal);
parseCommands<FamilyType>(*pCmdQ);
}
template <typename FamilyType>
void enqueueCopyBufferRect3D() {
size_t srcOrigin[] = {0, 0, 0};
size_t dstOrigin[] = {0, 0, 0};
size_t region[] = {50, 50, 50};
auto retVal = EnqueueCopyBufferRectHelper::enqueueCopyBufferRect(
pCmdQ,
srcBuffer,
dstBuffer,
srcOrigin,
dstOrigin,
region,
rowPitch,
slicePitch,
rowPitch,
slicePitch,
0,
nullptr,
nullptr);
EXPECT_EQ(CL_SUCCESS, retVal);
parseCommands<FamilyType>(*pCmdQ);
}
Buffer *srcBuffer = nullptr;
Buffer *dstBuffer = nullptr;
static const size_t rowPitch = 100;
static const size_t slicePitch = 100 * 100;
};
} // namespace NEO
|