[Mesa-dev] [PATCH] clover: Use a non-NULL value to represent the platform_id v3
Tom Stellard
tom at stellard.net
Fri Apr 5 14:16:50 PDT 2013
From: Tom Stellard <thomas.stellard at amd.com>
Using a NULL value for the platform_id is legal according to the spec,
however, passing a NULL value as the platform parameter to
clGetPlatformInfo() results in implementation defined behavior.
In order to avoid implementation defined behavior some apps require that
the platfrom_id is non-NULL. To statisfy this requirement, we just need
to hard-code clover's platform_id to something other than NULL.
v2:
- Handle platform check in clGetDeviceIDs()
- Use a macro for MESA_PLATFORM_ID
v3:
- Use MESA_PLATFORM_ID when calling clGetDeviceIDs() from
clCreateContextFromType()
---
src/gallium/state_trackers/clover/api/context.cpp | 2 +-
src/gallium/state_trackers/clover/api/device.cpp | 2 +-
src/gallium/state_trackers/clover/api/platform.cpp | 4 ++--
src/gallium/state_trackers/clover/api/util.hpp | 2 ++
4 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/src/gallium/state_trackers/clover/api/context.cpp b/src/gallium/state_trackers/clover/api/context.cpp
index 80afb6b..d509619 100644
--- a/src/gallium/state_trackers/clover/api/context.cpp
+++ b/src/gallium/state_trackers/clover/api/context.cpp
@@ -65,7 +65,7 @@ clCreateContextFromType(const cl_context_properties *props,
cl_device_id dev;
cl_int ret;
- ret = clGetDeviceIDs(0, type, 1, &dev, 0);
+ ret = clGetDeviceIDs(MESA_PLATFORM_ID, type, 1, &dev, 0);
if (ret) {
ret_error(errcode_ret, ret);
return NULL;
diff --git a/src/gallium/state_trackers/clover/api/device.cpp b/src/gallium/state_trackers/clover/api/device.cpp
index cf68d0f..d9b0223 100644
--- a/src/gallium/state_trackers/clover/api/device.cpp
+++ b/src/gallium/state_trackers/clover/api/device.cpp
@@ -33,7 +33,7 @@ clGetDeviceIDs(cl_platform_id platform, cl_device_type device_type,
cl_uint *num_devices) {
std::vector<cl_device_id> devs;
- if (platform != NULL)
+ if (platform != MESA_PLATFORM_ID)
return CL_INVALID_PLATFORM;
if ((!num_entries && devices) ||
diff --git a/src/gallium/state_trackers/clover/api/platform.cpp b/src/gallium/state_trackers/clover/api/platform.cpp
index f99b694..3a988a6 100644
--- a/src/gallium/state_trackers/clover/api/platform.cpp
+++ b/src/gallium/state_trackers/clover/api/platform.cpp
@@ -34,7 +34,7 @@ clGetPlatformIDs(cl_uint num_entries, cl_platform_id *platforms,
if (num_platforms)
*num_platforms = 1;
if (platforms)
- *platforms = NULL;
+ *platforms = MESA_PLATFORM_ID;
return CL_SUCCESS;
}
@@ -42,7 +42,7 @@ clGetPlatformIDs(cl_uint num_entries, cl_platform_id *platforms,
PUBLIC cl_int
clGetPlatformInfo(cl_platform_id platform, cl_platform_info param_name,
size_t size, void *buf, size_t *size_ret) {
- if (platform != NULL)
+ if (platform != MESA_PLATFORM_ID)
return CL_INVALID_PLATFORM;
switch (param_name) {
diff --git a/src/gallium/state_trackers/clover/api/util.hpp b/src/gallium/state_trackers/clover/api/util.hpp
index 2f9ec1f..0e80cda 100644
--- a/src/gallium/state_trackers/clover/api/util.hpp
+++ b/src/gallium/state_trackers/clover/api/util.hpp
@@ -31,6 +31,8 @@
#include "core/base.hpp"
#include "pipe/p_compiler.h"
+#define MESA_PLATFORM_ID ((cl_platform_id)0xc1c1c1c1)
+
namespace clover {
///
/// Return a matrix (a container of containers) in \a buf with
--
1.7.11.4
More information about the mesa-dev
mailing list