mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-30 05:40:13 +01:00
clover: add support for versioned device extensions
Reviewed-by: Karol Herbst <kherbst@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7520>
This commit is contained in:
parent
3a9fa5b36d
commit
940e479d7d
3 changed files with 39 additions and 11 deletions
|
|
@ -417,6 +417,10 @@ clGetDeviceInfo(cl_device_id d_dev, cl_device_info param,
|
|||
buf.as_vector<cl_name_version>() = dev.opencl_c_all_versions();
|
||||
break;
|
||||
|
||||
case CL_DEVICE_EXTENSIONS_WITH_VERSION:
|
||||
buf.as_vector<cl_name_version>() = dev.supported_extensions();
|
||||
break;
|
||||
|
||||
default:
|
||||
throw error(CL_INVALID_VALUE);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -341,19 +341,42 @@ device::supports_ir(enum pipe_shader_ir ir) const {
|
|||
PIPE_SHADER_CAP_SUPPORTED_IRS) & (1 << ir);
|
||||
}
|
||||
|
||||
std::vector<cl_name_version>
|
||||
device::supported_extensions() const {
|
||||
std::vector<cl_name_version> vec;
|
||||
|
||||
vec.push_back( (cl_name_version){ CL_MAKE_VERSION(1, 0, 0), "cl_khr_byte_addressable_store" } );
|
||||
vec.push_back( (cl_name_version){ CL_MAKE_VERSION(1, 0, 0), "cl_khr_global_int32_base_atomics" } );
|
||||
vec.push_back( (cl_name_version){ CL_MAKE_VERSION(1, 0, 0), "cl_khr_global_int32_extended_atomics" } );
|
||||
vec.push_back( (cl_name_version){ CL_MAKE_VERSION(1, 0, 0), "cl_khr_local_int32_base_atomics" } );
|
||||
vec.push_back( (cl_name_version){ CL_MAKE_VERSION(1, 0, 0), "cl_khr_local_int32_extended_atomics" } );
|
||||
if (has_int64_atomics()) {
|
||||
vec.push_back( (cl_name_version){ CL_MAKE_VERSION(1, 0, 0), "cl_khr_int64_base_atomics" } );
|
||||
vec.push_back( (cl_name_version){ CL_MAKE_VERSION(1, 0, 0), "cl_khr_int64_extended_atomics" } );
|
||||
}
|
||||
if (has_doubles())
|
||||
vec.push_back( (cl_name_version){ CL_MAKE_VERSION(1, 0, 0), "cl_khr_fp64" } );
|
||||
if (has_halves())
|
||||
vec.push_back( (cl_name_version){ CL_MAKE_VERSION(1, 0, 0), "cl_khr_fp16" } );
|
||||
if (svm_support())
|
||||
vec.push_back( (cl_name_version){ CL_MAKE_VERSION(1, 0, 0), "cl_arm_shared_virtual_memory" } );
|
||||
return vec;
|
||||
}
|
||||
|
||||
std::string
|
||||
device::supported_extensions_as_string() const {
|
||||
return
|
||||
"cl_khr_byte_addressable_store"
|
||||
" cl_khr_global_int32_base_atomics"
|
||||
" cl_khr_global_int32_extended_atomics"
|
||||
" cl_khr_local_int32_base_atomics"
|
||||
" cl_khr_local_int32_extended_atomics"
|
||||
+ std::string(has_int64_atomics() ? " cl_khr_int64_base_atomics" : "")
|
||||
+ std::string(has_int64_atomics() ? " cl_khr_int64_extended_atomics" : "")
|
||||
+ std::string(has_doubles() ? " cl_khr_fp64" : "")
|
||||
+ std::string(has_halves() ? " cl_khr_fp16" : "")
|
||||
+ std::string(svm_support() ? " cl_arm_shared_virtual_memory" : "");
|
||||
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;
|
||||
}
|
||||
|
||||
const void *
|
||||
|
|
|
|||
|
|
@ -94,6 +94,7 @@ namespace clover {
|
|||
cl_version device_version() const;
|
||||
cl_version device_clc_version() const;
|
||||
std::vector<cl_name_version> opencl_c_all_versions() const;
|
||||
std::vector<cl_name_version> supported_extensions() const;
|
||||
|
||||
friend class command_queue;
|
||||
friend class root_resource;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue