the specs say that clCreateContext reutrns error "if platform value specified in properties is not a valid platform"
The orignal approach fials if invalid valu other than NULL pointer is provided. Fixes piglit cl-api-create-context. Signed-off-by: Jan Vesely <jan.ves...@rutgers.edu> --- src/gallium/state_trackers/clover/api/context.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/gallium/state_trackers/clover/api/context.cpp b/src/gallium/state_trackers/clover/api/context.cpp index 7b020a6..67adf8f 100644 --- a/src/gallium/state_trackers/clover/api/context.cpp +++ b/src/gallium/state_trackers/clover/api/context.cpp @@ -34,14 +34,19 @@ clCreateContext(const cl_context_properties *d_props, cl_uint num_devs, void *user_data, cl_int *r_errcode) try { auto props = obj<property_list_tag>(d_props); auto devs = objs(d_devs, num_devs); + cl_platform_id platform; + cl_uint num_platforms; if (!pfn_notify && user_data) throw error(CL_INVALID_VALUE); + + int ret = clGetPlatformIDs(1, &platform, &num_platforms); + if (ret || !num_platforms) + throw error(CL_INVALID_PLATFORM); for (auto &prop : props) { - if (prop.first == CL_CONTEXT_PLATFORM) - obj(prop.second.as<cl_platform_id>()); - else + if (prop.first != CL_CONTEXT_PLATFORM || + prop.second.as<cl_platform_id>() != platform) throw error(CL_INVALID_PROPERTY); } -- 1.8.3.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev