1 // 2 // Copyright 2021 The ANGLE Project Authors. All rights reserved. 3 // Use of this source code is governed by a BSD-style license that can be 4 // found in the LICENSE file. 5 // 6 // CLtypes.h: Defines common types for the OpenCL support in ANGLE. 7 8 #ifndef LIBANGLE_CLTYPES_H_ 9 #define LIBANGLE_CLTYPES_H_ 10 11 #include "libANGLE/CLBitField.h" 12 #include "libANGLE/CLRefPointer.h" 13 #include "libANGLE/Debug.h" 14 15 #include "common/PackedCLEnums_autogen.h" 16 #include "common/angleutils.h" 17 18 // Include frequently used standard headers 19 #include <algorithm> 20 #include <array> 21 #include <functional> 22 #include <list> 23 #include <memory> 24 #include <string> 25 #include <utility> 26 #include <vector> 27 28 #define ANGLE_CL_TRY(expression) \ 29 do \ 30 { \ 31 const cl_int _errorCode = expression; \ 32 if (_errorCode != CL_SUCCESS) \ 33 { \ 34 return _errorCode; \ 35 } \ 36 } while (0) 37 38 namespace cl 39 { 40 41 class Buffer; 42 class CommandQueue; 43 class Context; 44 class Device; 45 class Event; 46 class Image; 47 class Kernel; 48 class Memory; 49 class Object; 50 class Platform; 51 class Program; 52 class Sampler; 53 54 using BufferPtr = RefPointer<Buffer>; 55 using CommandQueuePtr = RefPointer<CommandQueue>; 56 using ContextPtr = RefPointer<Context>; 57 using DevicePtr = RefPointer<Device>; 58 using EventPtr = RefPointer<Event>; 59 using KernelPtr = RefPointer<Kernel>; 60 using MemoryPtr = RefPointer<Memory>; 61 using PlatformPtr = RefPointer<Platform>; 62 using ProgramPtr = RefPointer<Program>; 63 using SamplerPtr = RefPointer<Sampler>; 64 65 using BufferPtrs = std::vector<BufferPtr>; 66 using DevicePtrs = std::vector<DevicePtr>; 67 using EventPtrs = std::vector<EventPtr>; 68 using KernelPtrs = std::vector<KernelPtr>; 69 using MemoryPtrs = std::vector<MemoryPtr>; 70 using PlatformPtrs = std::vector<PlatformPtr>; 71 using ProgramPtrs = std::vector<ProgramPtr>; 72 73 struct ImageDescriptor 74 { 75 MemObjectType type; 76 size_t width; 77 size_t height; 78 size_t depth; 79 size_t arraySize; 80 size_t rowPitch; 81 size_t slicePitch; 82 cl_uint numMipLevels; 83 cl_uint numSamples; 84 }; 85 86 } // namespace cl 87 88 #endif // LIBANGLE_CLTYPES_H_ 89