mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-19 06:09:01 +00:00
* Fix Issue #35 - ask for capability size. Too small size could cause errors * Fix Issue #35 - Review fixes * Fix Issue #35 - Review fixes - build issues fixed
This commit is contained in:
committed by
Kévin Petit
parent
8dc3ae30d0
commit
171c35429a
@@ -75,7 +75,7 @@ typedef union
|
||||
size_t sizet;
|
||||
size_t sizet_arr[3];
|
||||
cl_ulong ull;
|
||||
char string[1024];
|
||||
char * string;
|
||||
cl_device_svm_capabilities svmCapabilities;
|
||||
} config_data;
|
||||
|
||||
@@ -324,6 +324,7 @@ int getConfigInfo(cl_device_id device, config_info* info)
|
||||
{
|
||||
int err = CL_SUCCESS;
|
||||
int size_err = 0;
|
||||
size_t config_size_set;
|
||||
size_t config_size_ret;
|
||||
switch(info->config_type)
|
||||
{
|
||||
@@ -376,7 +377,13 @@ int getConfigInfo(cl_device_id device, config_info* info)
|
||||
size_err = config_size_ret != sizeof(info->config.ull);
|
||||
break;
|
||||
case type_string:
|
||||
err = clGetDeviceInfo(device, info->opcode, sizeof(info->config.string), &info->config.string, &config_size_ret);
|
||||
err = clGetDeviceInfo(device, info->opcode, 0, NULL, &config_size_set);
|
||||
info->config.string = NULL;
|
||||
if (err == CL_SUCCESS && config_size_set > 0) {
|
||||
info->config.string = (char*)malloc(config_size_set);
|
||||
err = clGetDeviceInfo(device, info->opcode, config_size_set, info->config.string, &config_size_ret);
|
||||
size_err = config_size_set != config_size_ret;
|
||||
}
|
||||
break;
|
||||
case type_cl_device_svm_capabilities:
|
||||
err = clGetDeviceInfo(device, info->opcode, sizeof(info->config.svmCapabilities), &info->config.svmCapabilities, &config_size_ret);
|
||||
@@ -524,7 +531,7 @@ void dumpConfigInfo(cl_device_id device, config_info* info)
|
||||
log_info("\t%s == %lld\n", info->opcode_name, info->config.ull);
|
||||
break;
|
||||
case type_string:
|
||||
log_info("\t%s == \"%s\"\n", info->opcode_name, info->config.string);
|
||||
log_info("\t%s == \"%s\"\n", info->opcode_name, info->config.string ? info->config.string : "");
|
||||
break;
|
||||
case type_cl_device_svm_capabilities:
|
||||
log_info("\t%s == %s|%s|%s|%s\n", info->opcode_name,
|
||||
@@ -679,15 +686,20 @@ int getConfigInfos( cl_device_id device )
|
||||
err = parseVersion( info.config.string, & version );
|
||||
if ( err ) {
|
||||
total_errors++;
|
||||
free(info.config.string);
|
||||
break;
|
||||
}
|
||||
} else if ( info.opcode == CL_DEVICE_EXTENSIONS ) {
|
||||
err = parseExtensions( info.config.string, & extensions );
|
||||
if ( err ) {
|
||||
total_errors++;
|
||||
free(info.config.string);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (info.config_type == type_string) {
|
||||
free(info.config.string);
|
||||
}
|
||||
} else {
|
||||
total_errors++;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user