Hash :
21905014
Author :
Date :
2024-08-08T16:55:52
CL: Fix entrypoint validation for ICDs For some OpenCL ICD implementations, the clGetPlatformIDs API is left as nullptr in the ICD dispatch table. This is because the OpenCL ICD Loader instead uses the clIcdGetPlatformIDsKHR call instead. Updating the passthrough code to only require checking the clGetPlatformIDs API if the platform is not an ICD. Bug: angleproject:42266872 Change-Id: Ic723adbf3ad0f6c79389ef629dd24ae8a82ca9ba Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5789651 Commit-Queue: Austin Annestrand <a.annestrand@samsung.com> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
//
// 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.
//
// CLPlatformCL.h: Defines the class interface for CLPlatformCL, implementing CLPlatformImpl.
#ifndef LIBANGLE_RENDERER_CL_CLPLATFORMCL_H_
#define LIBANGLE_RENDERER_CL_CLPLATFORMCL_H_
#include "libANGLE/renderer/CLPlatformImpl.h"
namespace rx
{
class CLPlatformCL : public CLPlatformImpl
{
public:
~CLPlatformCL() override;
cl_platform_id getNative() const;
Info createInfo() const override;
CLDeviceImpl::CreateDatas createDevices() const override;
angle::Result createContext(cl::Context &context,
const cl::DevicePtrs &devices,
bool userSync,
CLContextImpl::Ptr *contextOut) override;
angle::Result createContextFromType(cl::Context &context,
cl::DeviceType deviceType,
bool userSync,
CLContextImpl::Ptr *contextOut) override;
angle::Result unloadCompiler() override;
static void Initialize(CreateFuncs &createFuncs, bool isIcd);
private:
CLPlatformCL(const cl::Platform &platform, cl_platform_id native, bool isIcd);
const cl_platform_id mNative;
const bool mIsIcd;
friend class CLContextCL;
};
inline cl_platform_id CLPlatformCL::getNative() const
{
return mNative;
}
} // namespace rx
#endif // LIBANGLE_RENDERER_CL_CLPLATFORMCL_H_