diff --git a/src/gallium/frontends/clover/api/platform.cpp b/src/gallium/frontends/clover/api/platform.cpp index f5d1ca576ac..24706e8eaa5 100644 --- a/src/gallium/frontends/clover/api/platform.cpp +++ b/src/gallium/frontends/clover/api/platform.cpp @@ -86,6 +86,10 @@ clover::GetPlatformInfo(cl_platform_id d_platform, cl_platform_info param, break; } + case CL_PLATFORM_EXTENSIONS_WITH_VERSION: + buf.as_vector() = platform.supported_extensions(); + break; + default: throw error(CL_INVALID_VALUE); } diff --git a/src/gallium/frontends/clover/core/platform.cpp b/src/gallium/frontends/clover/core/platform.cpp index 27899e38a1b..342d098730c 100644 --- a/src/gallium/frontends/clover/core/platform.cpp +++ b/src/gallium/frontends/clover/core/platform.cpp @@ -45,9 +45,28 @@ platform::platform() : adaptor_range(evals(), devs) { } } +std::vector +platform::supported_extensions() const { + std::vector vec; + + vec.push_back( (cl_name_version){ CL_MAKE_VERSION(1, 0, 0), "cl_khr_icd" } ); + return vec; +} + std::string platform::supported_extensions_as_string() const { - return "cl_khr_icd"; + static std::string extensions_string; + + if (!extensions_string.empty()) + return extensions_string; + + const auto extension_list = supported_extensions(); + for (const auto &extension : extension_list) { + if (!extensions_string.empty()) + extensions_string += " "; + extensions_string += extension.name; + } + return extensions_string; } std::string diff --git a/src/gallium/frontends/clover/core/platform.hpp b/src/gallium/frontends/clover/core/platform.hpp index 1da7ea07df2..ba4fccc3e3d 100644 --- a/src/gallium/frontends/clover/core/platform.hpp +++ b/src/gallium/frontends/clover/core/platform.hpp @@ -41,6 +41,7 @@ namespace clover { operator=(const platform &platform) = delete; std::string supported_extensions_as_string() const; + std::vector supported_extensions() const; std::string platform_version_as_string() const; cl_version platform_version() const;