gallium/radeon: remove unused code - radeon_llvm_util.*
[mesa.git] / src / gallium / drivers / r600 / evergreen_compute.c
index 6f171487f92f8740cde9332c5b623d38c7104ab2..6dd6e748a1bb7f77e54689c4bff991a3de8cf7fb 100644 (file)
@@ -46,9 +46,6 @@
 #include "evergreen_compute_internal.h"
 #include "compute_memory_pool.h"
 #include "sb/sb_public.h"
-#ifdef HAVE_OPENCL
-#include "radeon/radeon_llvm_util.h"
-#endif
 #include "radeon/radeon_elf_util.h"
 #include <inttypes.h>
 
@@ -242,7 +239,7 @@ static void r600_destroy_shader(struct r600_bytecode *bc)
 }
 
 static void *evergreen_create_compute_state(struct pipe_context *ctx,
-                                           const const struct pipe_compute_state *cso)
+                                           const struct pipe_compute_state *cso)
 {
        struct r600_context *rctx = (struct r600_context *)ctx;
        struct r600_pipe_compute *shader = CALLOC_STRUCT(r600_pipe_compute);
@@ -259,9 +256,11 @@ static void *evergreen_create_compute_state(struct pipe_context *ctx,
        radeon_elf_read(code, header->num_bytes, &shader->binary);
        r600_create_shader(&shader->bc, &shader->binary, &use_kill);
 
+       /* Upload code + ROdata */
        shader->code_bo = r600_compute_buffer_alloc_vram(rctx->screen,
                                                        shader->bc.ndw * 4);
        p = r600_buffer_map_sync_with_rings(&rctx->b, shader->code_bo, PIPE_TRANSFER_WRITE);
+       //TODO: use util_memcpy_cpu_to_le32 ?
        memcpy(p, shader->bc.bytecode, shader->bc.ndw * 4);
        rctx->b.ws->buffer_unmap(shader->code_bo->buf);
 #endif
@@ -450,7 +449,7 @@ static void compute_emit_cs(struct r600_context *rctx,
        unsigned i;
 
        /* make sure that the gfx ring is only one active */
-       if (rctx->b.dma.cs && rctx->b.dma.cs->cdw) {
+       if (radeon_emitted(rctx->b.dma.cs, 0)) {
                rctx->b.dma.flush(rctx, RADEON_FLUSH_ASYNC, NULL);
        }
 
@@ -616,9 +615,9 @@ static void evergreen_set_compute_resources(struct pipe_context *ctx,
                        start, count);
 
        for (unsigned i = 0; i < count; i++) {
-               /* The First two vertex buffers are reserved for parameters and
+               /* The First three vertex buffers are reserved for parameters and
                 * global buffers. */
-               unsigned vtx_id = 2 + i;
+               unsigned vtx_id = 3 + i;
                if (resources[i]) {
                        struct r600_resource_global *buffer =
                                (struct r600_resource_global*)
@@ -685,9 +684,15 @@ static void evergreen_set_global_binding(struct pipe_context *ctx,
                *(handles[i]) = util_cpu_to_le32(handle);
        }
 
+       /* globals for writing */
        evergreen_set_rat(rctx->cs_shader_state.shader, 0, pool->bo, 0, pool->size_in_dw * 4);
+       /* globals for reading */
        evergreen_cs_set_vertex_buffer(rctx, 1, 0,
                                (struct pipe_resource*)pool->bo);
+
+       /* constants for reading, LLVM puts them in text segment */
+       evergreen_cs_set_vertex_buffer(rctx, 2, 0,
+                               (struct pipe_resource*)rctx->cs_shader_state.shader->code_bo);
 }
 
 /**