[Mesa-dev] [PATCH] clover: Fix clBuildProgram piglit regression

Tom Stellard thomas.stellard at amd.com
Mon Nov 3 06:25:48 PST 2014


Should trigger CL_INVALID_VALUE if device_list is NULL and num_devices
is greater than zero.

Introduced by e5468dfa523be2a7a0d04bb9efcf8ae780957563

Reported by: EdB
---

Hi Francisco,

I understand what you are saying now about why we don't need to pass the
vector of devices.  It's because the device vector from the context
doesn't need to be validated so passing the list of device_ids is fine.

Here is an updated patch to fix the regression, which is more in line
with what you suggested before.

-Tom

 src/gallium/state_trackers/clover/api/program.cpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/gallium/state_trackers/clover/api/program.cpp b/src/gallium/state_trackers/clover/api/program.cpp
index 64c4a43..3a6c054 100644
--- a/src/gallium/state_trackers/clover/api/program.cpp
+++ b/src/gallium/state_trackers/clover/api/program.cpp
@@ -27,7 +27,7 @@ using namespace clover;
 
 namespace {
    void validate_build_program_common(const program &prog, cl_uint num_devs,
-                                      const ref_vector<device> &devs,
+                                      const cl_device_id *d_devs,
                                       void (*pfn_notify)(cl_program, void *),
                                       void *user_data) {
 
@@ -39,7 +39,7 @@ namespace {
 
       if (any_of([&](const device &dev) {
                return !count(dev, prog.context().devices());
-            }, devs))
+            }, objs<allow_empty_tag>(d_devs, num_devs)))
          throw error(CL_INVALID_DEVICE);
    }
 }
@@ -177,7 +177,7 @@ clBuildProgram(cl_program d_prog, cl_uint num_devs,
                 ref_vector<device>(prog.context().devices()));
    auto opts = (p_opts ? p_opts : "");
 
-   validate_build_program_common(prog, num_devs, devs, pfn_notify, user_data);
+   validate_build_program_common(prog, num_devs, d_devs, pfn_notify, user_data);
 
    prog.build(devs, opts);
    return CL_SUCCESS;
@@ -200,7 +200,7 @@ clCompileProgram(cl_program d_prog, cl_uint num_devs,
    auto opts = (p_opts ? p_opts : "");
    header_map headers;
 
-   validate_build_program_common(prog, num_devs, devs, pfn_notify, user_data);
+   validate_build_program_common(prog, num_devs, d_devs, pfn_notify, user_data);
 
    if (bool(num_headers) != bool(header_names))
       throw error(CL_INVALID_VALUE);
-- 
1.8.5.5



More information about the mesa-dev mailing list