Allow creation and binding of compute image resources to be able to test the
currently working pieces of OpenCL image support.
---
 src/gallium/drivers/r600/evergreen_compute.c  | 2 +-
 src/gallium/drivers/r600/evergreen_state.c    | 4 ++++
 src/gallium/drivers/r600/r600_state_common.c  | 1 +
 src/gallium/drivers/radeon/r600_pipe_common.c | 2 +-
 4 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/r600/evergreen_compute.c 
b/src/gallium/drivers/r600/evergreen_compute.c
index 4c3c34c..ecad25c 100644
--- a/src/gallium/drivers/r600/evergreen_compute.c
+++ b/src/gallium/drivers/r600/evergreen_compute.c
@@ -666,7 +666,7 @@ void evergreen_set_cs_sampler_view(struct pipe_context 
*ctx_,
                if (resource[i]) {
                        assert(i+1 < 12);
                        /* XXX: Implement */
-                       assert(!"Compute samplers not implemented.");
+                       //assert(!"Compute samplers not implemented.");
                        ///FETCH0 = VTX0 (param buffer),
                        //FETCH1 = VTX1 (global buffer pool), FETCH2... = TEX
                }
diff --git a/src/gallium/drivers/r600/evergreen_state.c 
b/src/gallium/drivers/r600/evergreen_state.c
index 4ddbc0b..5dba577 100644
--- a/src/gallium/drivers/r600/evergreen_state.c
+++ b/src/gallium/drivers/r600/evergreen_state.c
@@ -299,6 +299,10 @@ boolean evergreen_is_format_supported(struct pipe_screen 
*screen,
        if (usage & PIPE_BIND_TRANSFER_WRITE)
                retval |= PIPE_BIND_TRANSFER_WRITE;
 
+       // XXX: review if something is not supported as a compute resource
+       if (usage & PIPE_BIND_COMPUTE_RESOURCE)
+               retval |= PIPE_BIND_COMPUTE_RESOURCE;
+
        return retval == usage;
 }
 
diff --git a/src/gallium/drivers/r600/r600_state_common.c 
b/src/gallium/drivers/r600/r600_state_common.c
index 13dc9ee..0566d00 100644
--- a/src/gallium/drivers/r600/r600_state_common.c
+++ b/src/gallium/drivers/r600/r600_state_common.c
@@ -594,6 +594,7 @@ static void r600_set_sampler_views(struct pipe_context 
*pipe, unsigned shader,
        assert(start == 0); /* XXX fix below */
 
        if (shader == PIPE_SHADER_COMPUTE) {
+               /*XXX*/ if (!views) return;
                evergreen_set_cs_sampler_view(pipe, start, count, views);
                return;
        }
diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c 
b/src/gallium/drivers/radeon/r600_pipe_common.c
index 3def444..d14791e 100644
--- a/src/gallium/drivers/radeon/r600_pipe_common.c
+++ b/src/gallium/drivers/radeon/r600_pipe_common.c
@@ -631,7 +631,7 @@ static int r600_get_compute_param(struct pipe_screen 
*screen,
        case PIPE_COMPUTE_CAP_IMAGES_SUPPORTED:
                if (ret) {
                        uint32_t *images_supported = ret;
-                       *images_supported = 0;
+                       *images_supported = 1;
                }
                return sizeof(uint32_t);
        case PIPE_COMPUTE_CAP_MAX_PRIVATE_SIZE:
-- 
2.4.2

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to