• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 // CLDeviceVk.h: Defines the class interface for CLDeviceVk, implementing CLDeviceImpl.
7 
8 #ifndef LIBANGLE_RENDERER_VULKAN_CLDEVICEVK_H_
9 #define LIBANGLE_RENDERER_VULKAN_CLDEVICEVK_H_
10 
11 #include "libANGLE/renderer/vulkan/DisplayVk.h"
12 #include "libANGLE/renderer/vulkan/cl_types.h"
13 #include "libANGLE/renderer/vulkan/vk_renderer.h"
14 
15 #include "libANGLE/renderer/CLDeviceImpl.h"
16 
17 #include "libANGLE/Display.h"
18 
19 namespace rx
20 {
21 
22 class CLDeviceVk : public CLDeviceImpl
23 {
24   public:
25     explicit CLDeviceVk(const cl::Device &device, vk::Renderer *renderer);
26     ~CLDeviceVk() override;
27 
28     Info createInfo(cl::DeviceType type) const override;
29 
30     angle::Result getInfoUInt(cl::DeviceInfo name, cl_uint *value) const override;
31     angle::Result getInfoULong(cl::DeviceInfo name, cl_ulong *value) const override;
32     angle::Result getInfoSizeT(cl::DeviceInfo name, size_t *value) const override;
33     angle::Result getInfoStringLength(cl::DeviceInfo name, size_t *value) const override;
34     angle::Result getInfoString(cl::DeviceInfo name, size_t size, char *value) const override;
35 
36     angle::Result createSubDevices(const cl_device_partition_property *properties,
37                                    cl_uint numDevices,
38                                    CreateFuncs &subDevices,
39                                    cl_uint *numDevicesRet) override;
40 
41     // Returns runtime-selected LWS value
42     cl::WorkgroupSize selectWorkGroupSize(const cl::NDRange &ndrange) const;
43 
44   private:
45     vk::Renderer *mRenderer;
46     angle::HashMap<cl::DeviceInfo, cl_uint> mInfoUInt;
47     angle::HashMap<cl::DeviceInfo, cl_ulong> mInfoULong;
48     angle::HashMap<cl::DeviceInfo, size_t> mInfoSizeT;
49     angle::HashMap<cl::DeviceInfo, std::string> mInfoString;
50 };
51 
52 }  // namespace rx
53 
54 #endif  // LIBANGLE_RENDERER_VULKAN_CLDEVICEVK_H_
55