radeonsi: set sampler state and view functions for compute-only contexts
authorMarek Olšák <marek.olsak@amd.com>
Fri, 12 Apr 2019 20:03:02 +0000 (16:03 -0400)
committerMarek Olšák <marek.olsak@amd.com>
Thu, 2 May 2019 01:16:13 +0000 (21:16 -0400)
src/gallium/drivers/radeonsi/si_pipe.c
src/gallium/drivers/radeonsi/si_state.c
src/gallium/drivers/radeonsi/si_state.h

index aaf5138..b0e0ca7 100644 (file)
@@ -503,7 +503,6 @@ static struct pipe_context *si_create_context(struct pipe_screen *screen,
        sctx->b.set_context_param = si_set_context_param;
        sctx->b.get_device_reset_status = si_get_reset_status;
        sctx->b.set_device_reset_callback = si_set_device_reset_callback;
-       sctx->b.memory_barrier = si_memory_barrier;
 
        si_init_all_descriptors(sctx);
        si_init_buffer_functions(sctx);
@@ -513,6 +512,7 @@ static struct pipe_context *si_create_context(struct pipe_screen *screen,
        si_init_compute_blit_functions(sctx);
        si_init_debug_functions(sctx);
        si_init_fence_functions(sctx);
+       si_init_state_compute_functions(sctx);
 
        if (sscreen->debug_flags & DBG(FORCE_DMA))
                sctx->b.resource_copy_region = sctx->dma_copy;
index 2266b0a..876a993 100644 (file)
@@ -4720,7 +4720,7 @@ static void si_texture_barrier(struct pipe_context *ctx, unsigned flags)
 }
 
 /* This only ensures coherency for shader image/buffer stores. */
-void si_memory_barrier(struct pipe_context *ctx, unsigned flags)
+static void si_memory_barrier(struct pipe_context *ctx, unsigned flags)
 {
        struct si_context *sctx = (struct si_context *)ctx;
 
@@ -4785,6 +4785,15 @@ static void *si_create_blend_custom(struct si_context *sctx, unsigned mode)
 
 static void si_init_config(struct si_context *sctx);
 
+void si_init_state_compute_functions(struct si_context *sctx)
+{
+       sctx->b.create_sampler_state = si_create_sampler_state;
+       sctx->b.delete_sampler_state = si_delete_sampler_state;
+       sctx->b.create_sampler_view = si_create_sampler_view;
+       sctx->b.sampler_view_destroy = si_sampler_view_destroy;
+       sctx->b.memory_barrier = si_memory_barrier;
+}
+
 void si_init_state_functions(struct si_context *sctx)
 {
        sctx->atoms.s.framebuffer.emit = si_emit_framebuffer_state;
@@ -4823,12 +4832,6 @@ void si_init_state_functions(struct si_context *sctx)
 
        sctx->b.set_framebuffer_state = si_set_framebuffer_state;
 
-       sctx->b.create_sampler_state = si_create_sampler_state;
-       sctx->b.delete_sampler_state = si_delete_sampler_state;
-
-       sctx->b.create_sampler_view = si_create_sampler_view;
-       sctx->b.sampler_view_destroy = si_sampler_view_destroy;
-
        sctx->b.set_sample_mask = si_set_sample_mask;
 
        sctx->b.create_vertex_elements_state = si_create_vertex_elements;
index c15ce5c..6df24f9 100644 (file)
@@ -490,7 +490,7 @@ void si_bindless_descriptor_slab_free(void *priv, struct pb_slab *pslab);
 void si_rebind_buffer(struct si_context *sctx, struct pipe_resource *buf,
                      uint64_t old_va);
 /* si_state.c */
-void si_memory_barrier(struct pipe_context *ctx, unsigned flags);
+void si_init_state_compute_functions(struct si_context *sctx);
 void si_init_state_functions(struct si_context *sctx);
 void si_init_screen_state_functions(struct si_screen *sscreen);
 void