Edit

kc3-lang/angle/src/libANGLE/renderer/CLExtensions.cpp

Branch :

  • Show log

    Commit

  • Author : John Plate
    Date : 2021-06-11 19:12:11
    Hash : 69562546
    Message : CL: Refactor info structs and fix conformance bug - Remove variable name prefix from Info structs to be more consistent with other ANGLE structs. - Fix CL object validation check with magics, since the Mesa solution doesn't work without RTTI. - Add support for some extensions required by OpenCL 1.1 and for some optional extensions. - Fix more conformance bugs. Bug: angleproject:6015 Change-Id: I41b1c45d95059a9994f5dc78bf9b74476cc6f2d4 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2956349 Commit-Queue: John Plate <jplate@google.com> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>

  • src/libANGLE/renderer/CLExtensions.cpp
  • //
    // 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