/* * Copyright (C) 2018-2021 Intel Corporation * * SPDX-License-Identifier: MIT * */ #pragma once #include "opencl/source/mem_obj/buffer.h" #include "opencl/test/unit_test/mocks/mock_context.h" #include "CL/cl.h" #include #include struct BufferDefaults { enum { flags = CL_MEM_READ_WRITE }; static const size_t sizeInBytes; static void *hostPtr; static NEO::Context *context; }; template struct BufferUseHostPtr : public BaseClass { enum { flags = BaseClass::flags | CL_MEM_USE_HOST_PTR }; }; template struct BufferReadOnly : public BaseClass { enum { flags = BaseClass::flags | CL_MEM_READ_ONLY }; }; template struct BufferWriteOnly : public BaseClass { enum { flags = BaseClass::flags | CL_MEM_WRITE_ONLY }; }; template struct BufferHelper { using Buffer = NEO::Buffer; using Context = NEO::Context; using MockContext = NEO::MockContext; static Buffer *create(Context *context = Traits::context) { auto retVal = CL_SUCCESS; auto hostPtr = Traits::flags & (CL_MEM_USE_HOST_PTR | CL_MEM_COPY_HOST_PTR) ? Traits::hostPtr : nullptr; auto buffer = Buffer::create( context ? context : std::shared_ptr(new MockContext).get(), Traits::flags, Traits::sizeInBytes, hostPtr, retVal); assert(buffer != nullptr); return buffer; } };