radeonsi: move si_set_sampler_views to si_descriptors.c
authorMarek Olšák <marek.olsak@amd.com>
Wed, 18 Jun 2014 01:08:01 +0000 (03:08 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Thu, 17 Jul 2014 23:58:59 +0000 (01:58 +0200)
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
src/gallium/drivers/radeonsi/si_descriptors.c
src/gallium/drivers/radeonsi/si_state.c
src/gallium/drivers/radeonsi/si_state.h

index 01fcec3e13dceff2175c97d779234567eb7fda64..aefe9bce2bd57c8c5f660ad6c0c0a4617dec0820 100644 (file)
@@ -333,9 +333,9 @@ static void si_sampler_views_begin_new_cs(struct si_context *sctx,
        si_emit_shader_pointer(sctx, &views->desc);
 }
 
-void si_set_sampler_view(struct si_context *sctx, unsigned shader,
-                        unsigned slot, struct pipe_sampler_view *view,
-                        unsigned *view_desc)
+static void si_set_sampler_view(struct si_context *sctx, unsigned shader,
+                               unsigned slot, struct pipe_sampler_view *view,
+                               unsigned *view_desc)
 {
        struct si_sampler_views *views = &sctx->samplers[shader].views;
 
@@ -360,7 +360,70 @@ void si_set_sampler_view(struct si_context *sctx, unsigned shader,
        }
 
        views->desc.dirty_mask |= 1 << slot;
-       si_update_descriptors(sctx, &views->desc);
+}
+
+static void si_set_sampler_views(struct pipe_context *ctx,
+                                unsigned shader, unsigned start,
+                                 unsigned count,
+                                struct pipe_sampler_view **views)
+{
+       struct si_context *sctx = (struct si_context *)ctx;
+       struct si_textures_info *samplers = &sctx->samplers[shader];
+       struct si_pipe_sampler_view **rviews = (struct si_pipe_sampler_view **)views;
+       int i;
+
+       if (shader >= SI_NUM_SHADERS)
+               return;
+
+       assert(start == 0);
+
+       for (i = 0; i < count; i++) {
+               if (!views[i]) {
+                       samplers->depth_texture_mask &= ~(1 << i);
+                       samplers->compressed_colortex_mask &= ~(1 << i);
+                       si_set_sampler_view(sctx, shader, i, NULL, NULL);
+                       si_set_sampler_view(sctx, shader, SI_FMASK_TEX_OFFSET + i,
+                                           NULL, NULL);
+                       continue;
+               }
+
+               si_set_sampler_view(sctx, shader, i, views[i], rviews[i]->state);
+
+               if (views[i]->texture->target != PIPE_BUFFER) {
+                       struct r600_texture *rtex =
+                               (struct r600_texture*)views[i]->texture;
+
+                       if (rtex->is_depth && !rtex->is_flushing_texture) {
+                               samplers->depth_texture_mask |= 1 << i;
+                       } else {
+                               samplers->depth_texture_mask &= ~(1 << i);
+                       }
+                       if (rtex->cmask.size || rtex->fmask.size) {
+                               samplers->compressed_colortex_mask |= 1 << i;
+                       } else {
+                               samplers->compressed_colortex_mask &= ~(1 << i);
+                       }
+
+                       if (rtex->fmask.size) {
+                               si_set_sampler_view(sctx, shader, SI_FMASK_TEX_OFFSET + i,
+                                                   views[i], rviews[i]->fmask_state);
+                       } else {
+                               si_set_sampler_view(sctx, shader, SI_FMASK_TEX_OFFSET + i,
+                                                   NULL, NULL);
+                       }
+               }
+       }
+       for (; i < samplers->n_views; i++) {
+               samplers->depth_texture_mask &= ~(1 << i);
+               samplers->compressed_colortex_mask &= ~(1 << i);
+               si_set_sampler_view(sctx, shader, i, NULL, NULL);
+               si_set_sampler_view(sctx, shader, SI_FMASK_TEX_OFFSET + i,
+                                   NULL, NULL);
+       }
+
+       samplers->n_views = count;
+       sctx->b.flags |= R600_CONTEXT_INV_TEX_CACHE;
+       si_update_descriptors(sctx, &samplers->views.desc);
 }
 
 /* SAMPLER STATES */
@@ -1044,6 +1107,7 @@ void si_init_all_descriptors(struct si_context *sctx)
 
        /* Set pipe_context functions. */
        sctx->b.b.set_constant_buffer = si_set_constant_buffer;
+       sctx->b.b.set_sampler_views = si_set_sampler_views;
        sctx->b.b.set_stream_output_targets = si_set_streamout_targets;
        sctx->b.clear_buffer = si_clear_buffer;
        sctx->b.invalidate_buffer = si_invalidate_buffer;
index 44c1af844fc71a1d6a99ff66010994819e5928ae..604f8d3456e33c5e793c80dfeac549b91f7d4e61 100644 (file)
@@ -2673,71 +2673,6 @@ static void *si_create_sampler_state(struct pipe_context *ctx,
        return rstate;
 }
 
-/* XXX consider moving this function to si_descriptors.c for gcc to inline
- *     the si_set_sampler_view calls. LTO might help too. */
-static void si_set_sampler_views(struct pipe_context *ctx,
-                                unsigned shader, unsigned start,
-                                 unsigned count,
-                                struct pipe_sampler_view **views)
-{
-       struct si_context *sctx = (struct si_context *)ctx;
-       struct si_textures_info *samplers = &sctx->samplers[shader];
-       struct si_pipe_sampler_view **rviews = (struct si_pipe_sampler_view **)views;
-       int i;
-
-       if (shader >= SI_NUM_SHADERS)
-               return;
-
-       assert(start == 0);
-
-       for (i = 0; i < count; i++) {
-               if (!views[i]) {
-                       samplers->depth_texture_mask &= ~(1 << i);
-                       samplers->compressed_colortex_mask &= ~(1 << i);
-                       si_set_sampler_view(sctx, shader, i, NULL, NULL);
-                       si_set_sampler_view(sctx, shader, SI_FMASK_TEX_OFFSET + i,
-                                           NULL, NULL);
-                       continue;
-               }
-
-               si_set_sampler_view(sctx, shader, i, views[i], rviews[i]->state);
-
-               if (views[i]->texture->target != PIPE_BUFFER) {
-                       struct r600_texture *rtex =
-                               (struct r600_texture*)views[i]->texture;
-
-                       if (rtex->is_depth && !rtex->is_flushing_texture) {
-                               samplers->depth_texture_mask |= 1 << i;
-                       } else {
-                               samplers->depth_texture_mask &= ~(1 << i);
-                       }
-                       if (rtex->cmask.size || rtex->fmask.size) {
-                               samplers->compressed_colortex_mask |= 1 << i;
-                       } else {
-                               samplers->compressed_colortex_mask &= ~(1 << i);
-                       }
-
-                       if (rtex->fmask.size) {
-                               si_set_sampler_view(sctx, shader, SI_FMASK_TEX_OFFSET + i,
-                                                   views[i], rviews[i]->fmask_state);
-                       } else {
-                               si_set_sampler_view(sctx, shader, SI_FMASK_TEX_OFFSET + i,
-                                                   NULL, NULL);
-                       }
-               }
-       }
-       for (; i < samplers->n_views; i++) {
-               samplers->depth_texture_mask &= ~(1 << i);
-               samplers->compressed_colortex_mask &= ~(1 << i);
-               si_set_sampler_view(sctx, shader, i, NULL, NULL);
-               si_set_sampler_view(sctx, shader, SI_FMASK_TEX_OFFSET + i,
-                                   NULL, NULL);
-       }
-
-       samplers->n_views = count;
-       sctx->b.flags |= R600_CONTEXT_INV_TEX_CACHE;
-}
-
 /* Upload border colors and update the pointers in resource descriptors.
  * There can only be 4096 border colors per context.
  *
@@ -3001,7 +2936,6 @@ void si_init_state_functions(struct si_context *sctx)
        sctx->b.b.delete_sampler_state = si_delete_sampler_state;
 
        sctx->b.b.create_sampler_view = si_create_sampler_view;
-       sctx->b.b.set_sampler_views = si_set_sampler_views;
        sctx->b.b.sampler_view_destroy = si_sampler_view_destroy;
 
        sctx->b.b.set_sample_mask = si_set_sample_mask;
index 7a0433c1b9d93a0b08a4bc652b0338a4746dd945..a765e243ce626c4a3631fbe2dceef11527765b1c 100644 (file)
@@ -219,9 +219,6 @@ struct si_buffer_resources {
        } while(0)
 
 /* si_descriptors.c */
-void si_set_sampler_view(struct si_context *sctx, unsigned shader,
-                        unsigned slot, struct pipe_sampler_view *view,
-                        unsigned *view_desc);
 void si_set_sampler_descriptors(struct si_context *sctx, unsigned shader,
                                unsigned start, unsigned count, void **states);
 void si_set_ring_buffer(struct pipe_context *ctx, uint shader, uint slot,