| // |
| // Copyright 2021 The ANGLE Project Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| // CLExtensions.cpp: Implements the struct methods for CLExtension. |
| |
| #include "libANGLE/renderer/CLExtensions.h" |
| |
| #include "common/string_utils.h" |
| |
| namespace rx |
| { |
| |
| CLExtensions::CLExtensions() = default; |
| |
| CLExtensions::~CLExtensions() = default; |
| |
| CLExtensions::CLExtensions(CLExtensions &&) = default; |
| |
| CLExtensions &CLExtensions::operator=(CLExtensions &&) = default; |
| |
| void CLExtensions::initializeExtensions(std::string &&extensionStr) |
| { |
| extensions.assign(std::move(extensionStr)); |
| if (extensions.empty()) |
| { |
| return; |
| } |
| |
| auto hasExtension = [&](const std::string &extension) { |
| return angle::ContainsToken(extensions, ' ', extension); |
| }; |
| |
| khrByteAddressableStore = hasExtension("cl_khr_byte_addressable_store"); |
| khrGlobalInt32BaseAtomics = hasExtension("cl_khr_global_int32_base_atomics"); |
| khrGlobalInt32ExtendedAtomics = hasExtension("cl_khr_global_int32_extended_atomics"); |
| khrLocalInt32BaseAtomics = hasExtension("cl_khr_local_int32_base_atomics"); |
| khrLocalInt32ExtendedAtomics = hasExtension("cl_khr_local_int32_extended_atomics"); |
| |
| khr3D_ImageWrites = hasExtension("cl_khr_3d_image_writes"); |
| khrDepthImages = hasExtension("cl_khr_depth_images"); |
| khrImage2D_FromBuffer = hasExtension("cl_khr_image2d_from_buffer"); |
| |
| khrExtendedVersioning = hasExtension("cl_khr_extended_versioning"); |
| khrFP64 = hasExtension("cl_khr_fp64"); |
| khrICD = hasExtension("cl_khr_icd"); |
| khrInt64BaseAtomics = hasExtension("cl_khr_int64_base_atomics"); |
| khrInt64ExtendedAtomics = hasExtension("cl_khr_int64_extended_atomics"); |
| } |
| |
| } // namespace rx |