mirror of
https://github.com/KhronosGroup/OpenCL-CTS.git
synced 2026-03-24 07:59:01 +00:00
* Fix Issue #35 - ask for capability size. Too small size could cause errors * Fix Issue #35 - fix windows compilation failure * Fix Issue #35 - Review fixes * Fix Issue #35 - Review fixes - build issues fixed
This commit is contained in:
committed by
Kévin Petit
parent
0fce6d5d62
commit
51db6e87cf
@@ -74,7 +74,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;
|
||||
|
||||
@@ -319,6 +319,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)
|
||||
{
|
||||
@@ -371,7 +372,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);
|
||||
@@ -519,7 +526,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,
|
||||
@@ -670,15 +677,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