summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZack Rusin <zack@tungstengraphics.com>2008-12-16 09:59:12 -0500
committerZack Rusin <zack@tungstengraphics.com>2008-12-16 09:59:33 -0500
commit4be89372100418453447d7d58fee4ea29b9b23f1 (patch)
tree162596953022168083e29ce5d484c952e81baafc
parent45271ef0958b258dbdec4783096fb95f09a692e3 (diff)
small changes
-rw-r--r--examples/trivial/basic.c6
-rw-r--r--src/device.cpp71
-rw-r--r--src/device.h2
-rw-r--r--src/deviceinfo.h67
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