diff options
author | Zack Rusin <zack@tungstengraphics.com> | 2008-12-16 09:59:12 -0500 |
---|---|---|
committer | Zack Rusin <zack@tungstengraphics.com> | 2008-12-16 09:59:33 -0500 |
commit | 4be89372100418453447d7d58fee4ea29b9b23f1 (patch) | |
tree | 162596953022168083e29ce5d484c952e81baafc | |
parent | 45271ef0958b258dbdec4783096fb95f09a692e3 (diff) |
small changes
-rw-r--r-- | examples/trivial/basic.c | 6 | ||||
-rw-r--r-- | src/device.cpp | 71 | ||||
-rw-r--r-- | src/device.h | 2 | ||||
-rw-r--r-- | src/deviceinfo.h | 67 |
4 files changed, 139 insertions, 7 deletions
diff --git a/examples/trivial/basic.c b/examples/trivial/basic.c index 911b69e..0d9473d 100644 --- a/examples/trivial/basic.c +++ b/examples/trivial/basic.c @@ -5,9 +5,9 @@ int main() { cl_device_id device; int err; - char deviceName[256], - deviceVendor[256], - deviceVersion[256]; + char deviceName[128], + deviceVendor[128], + deviceVersion[128]; err = clGetDeviceIDs(CL_DEVICE_TYPE_DEFAULT, 1, &device, NULL); diff --git a/src/device.cpp b/src/device.cpp index 31b318c..458bd46 100644 --- a/src/device.cpp +++ b/src/device.cpp @@ -38,6 +38,15 @@ Device * Device::create(cl_uint type) return 0; } +static void stringToParam(const std::string &str, + void * paramValue, + size_t * paramValueSizeRet) +{ + strcpy((char*)paramValue, str.c_str()); + if (paramValueSizeRet) + *paramValueSizeRet = str.size(); +} + cl_int Device::info(cl_device_info opcode, size_t paramValueSize, void * paramValue, @@ -132,8 +141,10 @@ cl_int Device::info(cl_device_info opcode, case CL_DEVICE_QUEUE_PROPERTIES: break; case CL_DEVICE_NAME: + stringToParam(m_info.name, paramValue, paramValueSizeRet); break; case CL_DEVICE_VENDOR: + stringToParam(m_info.name, paramValue, paramValueSizeRet); break; case CL_DRIVER_VERSION: break; @@ -156,10 +167,64 @@ Device::Device(cl_uint type, struct pipe_winsys *ws, struct pipe_screen *screen) : m_winsys(ws), m_screen(screen) { - m_info.type = type; - fillInfo(); + fillInfo(type); } -void Device::fillInfo() +void Device::fillInfo(cl_uint type) { + m_info.type = type; + m_info.vendorId = 0;//should be a PCIe ID + m_info.maxComputeUnits = 1;//min + m_info.maxWorkItemDimensions = 3;//min +#if 0 + m_info.maxWorkGroupSize = ; + m_info.maxWorkItemSizes = ; + m_info.preferredVectorWidthChar = ; + m_info.preferredVectorWidthShort = ; + m_info.preferredVectorWidthInt = ; + m_info.preferredVectorWidthLong = ; + m_info.preferredVectorWidthFloat = ; + m_info.preferredVectorWidthDouble = ; + + m_info.maxClockFrequency = ; + m_info.addressBits = ; + m_info.maxReadImageArgs = ; + m_info.maxWriteImageArgs = ; + m_info.maxMemAllocSize = ; + + m_info.image2dMaxWidth = ; + m_info.image2dMaxHeight = ; + m_info.image3dMaxWidth = ; + m_info.image3dMaxHeight = ; + m_info.image3dMaxDepth = ; + m_info.imageSupport = ; + + m_info.maxParameterSize = ; + m_info.maxSamplers = ; + m_info.memBaseAddrAlign = ; + m_info.minDataTypeAlignSize = ; + m_info.singleFpConfig = ; + m_info.globalMemCacheType = ; + m_info.globalMemCachelineSize = ; + m_info.globalMemCacheSize = ; + m_info.globalMemSize = ; + m_info.maxConstantBufferSize = ; + m_info.maxConstantArgs = ; + m_info.localMemType = ; + m_info.localMemSize = ; + m_info.errorCorrectionSupport = ; + m_info.profilingTimerResolution = ; + m_info.entianLittle = ; + m_info.available = ; + m_info.compilerAvailable = ; + m_info.executionCapabilities = ; + m_info.queueProperties = ; + +#endif + m_info.name = m_screen->get_name(m_screen); + m_info.vendor = m_screen->get_vendor(m_screen); + //m_info.driverVersion = ; + m_info.profile = "FULL_PROFILE"; + //m_info.version = ; + //m_info.extensions = ; } diff --git a/src/device.h b/src/device.h index fa83bf2..74a360e 100644 --- a/src/device.h +++ b/src/device.h @@ -26,7 +26,7 @@ public: private: Device(cl_uint type, struct pipe_winsys *ws, struct pipe_screen *screen); - void fillInfo(); + void fillInfo(cl_uint type); private: DeviceInfo m_info; diff --git a/src/deviceinfo.h b/src/deviceinfo.h new file mode 100644 index 0000000..afbad19 --- /dev/null +++ b/src/deviceinfo.h @@ -0,0 +1,67 @@ +#ifndef DEVICEINFO_H +#define DEVICEINFO_H + +#include "OpenCL/cl.h" + +#include <vector> +#include <string> + +struct DeviceInfo +{ + cl_uint type; //CL_DEVICE_TYPE + + cl_uint vendorId; //CL_DEVICE_VENDOR_ID + cl_uint maxComputeUnits; //CL_DEVICE_MAX_COMPUTE_UNITS + cl_uint maxWorkItemDimensions; //CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS + std::vector<size_t> maxWorkItemSizes; //CL_DEVICE_MAX_WORK_ITEM_SIZES + size_t maxWorkGroupSize; //CL_DEVICE_MAX_WORK_GROUP_SIZE + cl_uint preferredVectorWidthChar; //CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR + cl_uint preferredVectorWidthShort; //CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT + cl_uint preferredVectorWidthInt; //CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT + cl_uint preferredVectorWidthLong; //CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG + cl_uint preferredVectorWidthFloat; //CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT + cl_uint preferredVectorWidthDouble; //CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE + + cl_uint maxClockFrequency; //CL_DEVICE_MAX_CLOCK_FREQUENCY + cl_bitfield addressBits; //CL_DEVICE_ADDRESS_BITS + cl_uint maxReadImageArgs; //CL_DEVICE_MAX_READ_IMAGE_ARGS + cl_uint maxWriteImageArgs; //CL_DEVICE_MAX_WRITE_IMAGE_ARGS + cl_ulong maxMemAllocSize; //CL_DEVICE_MAX_MEM_ALLOC_SIZE + + size_t image2dMaxWidth; //CL_DEVICE_IMAGE2D_MAX_WIDTH + size_t image2dMaxHeight; //CL_DEVICE_IMAGE2D_MAX_HEIGHT + size_t image3dMaxWidth; //CL_DEVICE_IMAGE3D_MAX_WIDTH + size_t image3dMaxHeight; //CL_DEVICE_IMAGE3D_MAX_HEIGHT + size_t image3dMaxDepth; //CL_DEVICE_IMAGE3D_MAX_DEPTH + cl_bool imageSupport; //CL_DEVICE_IMAGE_SUPPORT + + size_t maxParameterSize; //CL_DEVICE_MAX_PARAMETER_SIZE + cl_uint maxSamplers; //CL_DEVICE_MAX_SAMPLERS + cl_uint memBaseAddrAlign; //CL_DEVICE_MEM_BASE_ADDR_ALIGN + cl_uint minDataTypeAlignSize; //CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE + cl_device_fp_config singleFpConfig; //CL_DEVICE_SINGLE_FP_CONFIG + cl_device_mem_cache_type globalMemCacheType; //CL_DEVICE_GLOBAL_MEM_CACHE_TYPE + cl_uint globalMemCachelineSize; //CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE + cl_ulong globalMemCacheSize; //CL_DEVICE_GLOBAL_MEM_CACHE_SIZE + cl_ulong globalMemSize; //CL_DEVICE_GLOBAL_MEM_SIZE + cl_ulong maxConstantBufferSize; //CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE + cl_uint maxConstantArgs; //CL_DEVICE_MAX_CONSTANT_ARGS + cl_device_local_mem_type localMemType; //CL_DEVICE_LOCAL_MEM_TYPE + cl_ulong localMemSize; //CL_DEVICE_LOCAL_MEM_SIZE + cl_bool errorCorrectionSupport; //CL_DEVICE_ERROR_CORRECTION_SUPPORT + size_t profilingTimerResolution; //CL_DEVICE_PROFILING_TIMER_RESOLUTION + cl_bool entianLittle; //CL_DEVICE_ENDIAN_LITTLE + cl_bool available; //CL_DEVICE_AVAILABLE + cl_bool compilerAvailable; //CL_DEVICE_COMPILER_AVAILABLE + cl_device_exec_capabilities executionCapabilities; //CL_DEVICE_EXECUTION_CAPABILITIES + cl_command_queue_properties queueProperties; //CL_DEVICE_QUEUE_PROPERTIES + + std::string name; //CL_DEVICE_NAME + std::string vendor; //CL_DEVICE_VENDOR + std::string driverVersion; //CL_DRIVER_VERSION + std::string profile; //CL_DEVICE_PROFILE + std::string version; //CL_DEVICE_VERSION + std::string extensions; //CL_DEVICE_EXTENSIONS +}; + +#endif |