r600g: inline r600_pipe_shader function
authorMarek Olšák <maraeo@gmail.com>
Fri, 1 Mar 2013 17:42:52 +0000 (18:42 +0100)
committerMarek Olšák <maraeo@gmail.com>
Mon, 11 Mar 2013 12:43:36 +0000 (13:43 +0100)
also change names of other functions, so that they make sense

Reviewed-by: Jerome Glisse <jglisse@redhat.com>
src/gallium/drivers/r600/evergreen_state.c
src/gallium/drivers/r600/r600_pipe.h
src/gallium/drivers/r600/r600_shader.c
src/gallium/drivers/r600/r600_state.c
src/gallium/drivers/r600/r600_state_common.c

index 97f91df..5c7cd40 100644 (file)
@@ -3311,7 +3311,7 @@ void evergreen_init_atom_start_cs(struct r600_context *rctx)
        eg_store_loop_const(cb, R_03A200_SQ_LOOP_CONST_0 + (32 * 4), 0x01000FFF);
 }
 
-void evergreen_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shader *shader)
+void evergreen_update_ps_state(struct pipe_context *ctx, struct r600_pipe_shader *shader)
 {
        struct r600_context *rctx = (struct r600_context *)ctx;
        struct r600_pipe_state *rstate = &shader->rstate;
@@ -3460,7 +3460,7 @@ void evergreen_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shader
                shader->flatshade = rctx->rasterizer->flatshade;
 }
 
-void evergreen_pipe_shader_vs(struct pipe_context *ctx, struct r600_pipe_shader *shader)
+void evergreen_update_vs_state(struct pipe_context *ctx, struct r600_pipe_shader *shader)
 {
        struct r600_context *rctx = (struct r600_context *)ctx;
        struct r600_pipe_state *rstate = &shader->rstate;
index 3eb2968..28c7de3 100644 (file)
@@ -626,8 +626,8 @@ void cayman_init_common_regs(struct r600_command_buffer *cb,
 
 void evergreen_init_state_functions(struct r600_context *rctx);
 void evergreen_init_atom_start_cs(struct r600_context *rctx);
-void evergreen_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shader *shader);
-void evergreen_pipe_shader_vs(struct pipe_context *ctx, struct r600_pipe_shader *shader);
+void evergreen_update_ps_state(struct pipe_context *ctx, struct r600_pipe_shader *shader);
+void evergreen_update_vs_state(struct pipe_context *ctx, struct r600_pipe_shader *shader);
 void *evergreen_create_db_flush_dsa(struct r600_context *rctx);
 void *evergreen_create_resolve_blend(struct r600_context *rctx);
 void *evergreen_create_decompress_blend(struct r600_context *rctx);
@@ -701,8 +701,8 @@ r600_create_sampler_view_custom(struct pipe_context *ctx,
                                unsigned width_first_level, unsigned height_first_level);
 void r600_init_state_functions(struct r600_context *rctx);
 void r600_init_atom_start_cs(struct r600_context *rctx);
-void r600_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shader *shader);
-void r600_pipe_shader_vs(struct pipe_context *ctx, struct r600_pipe_shader *shader);
+void r600_update_ps_state(struct pipe_context *ctx, struct r600_pipe_shader *shader);
+void r600_update_vs_state(struct pipe_context *ctx, struct r600_pipe_shader *shader);
 void *r600_create_db_flush_dsa(struct r600_context *rctx);
 void *r600_create_resolve_blend(struct r600_context *rctx);
 void *r700_create_resolve_blend(struct r600_context *rctx);
index 949191a..7ecab7b 100644 (file)
@@ -58,52 +58,6 @@ issued in the w slot as well.
 The compiler must issue the source argument to slots z, y, and x
 */
 
-static int r600_pipe_shader(struct pipe_context *ctx, struct r600_pipe_shader *shader)
-{
-       struct r600_context *rctx = (struct r600_context *)ctx;
-       struct r600_shader *rshader = &shader->shader;
-       uint32_t *ptr;
-       int     i;
-
-       /* copy new shader */
-       if (shader->bo == NULL) {
-               shader->bo = (struct r600_resource*)
-                       pipe_buffer_create(ctx->screen, PIPE_BIND_CUSTOM, PIPE_USAGE_IMMUTABLE, rshader->bc.ndw * 4);
-               if (shader->bo == NULL) {
-                       return -ENOMEM;
-               }
-               ptr = r600_buffer_mmap_sync_with_rings(rctx, shader->bo, PIPE_TRANSFER_WRITE);
-               if (R600_BIG_ENDIAN) {
-                       for (i = 0; i < rshader->bc.ndw; ++i) {
-                               ptr[i] = bswap_32(rshader->bc.bytecode[i]);
-                       }
-               } else {
-                       memcpy(ptr, rshader->bc.bytecode, rshader->bc.ndw * sizeof(*ptr));
-               }
-               rctx->ws->buffer_unmap(shader->bo->cs_buf);
-       }
-       /* build state */
-       switch (rshader->processor_type) {
-       case TGSI_PROCESSOR_VERTEX:
-               if (rctx->chip_class >= EVERGREEN) {
-                       evergreen_pipe_shader_vs(ctx, shader);
-               } else {
-                       r600_pipe_shader_vs(ctx, shader);
-               }
-               break;
-       case TGSI_PROCESSOR_FRAGMENT:
-               if (rctx->chip_class >= EVERGREEN) {
-                       evergreen_pipe_shader_ps(ctx, shader);
-               } else {
-                       r600_pipe_shader_ps(ctx, shader);
-               }
-               break;
-       default:
-               return -EINVAL;
-       }
-       return 0;
-}
-
 static int r600_shader_from_tgsi(struct r600_screen *rscreen,
                                 struct r600_pipe_shader *pipeshader,
                                 struct r600_shader_key key);
@@ -161,7 +115,8 @@ int r600_pipe_shader_create(struct pipe_context *ctx,
 {
        struct r600_context *rctx = (struct r600_context *)ctx;
        struct r600_pipe_shader_selector *sel = shader->selector;
-       int r;
+       int r, i;
+       uint32_t *ptr;
        bool dump = r600_can_dump_shader(rctx->screen, tgsi_get_processor_type(sel->tokens));
 
        shader->shader.bc.isa = rctx->isa;
@@ -190,7 +145,45 @@ int r600_pipe_shader_create(struct pipe_context *ctx,
                fprintf(stderr, "______________________________________________________________\n");
        }
 
-       return r600_pipe_shader(ctx, shader);
+
+       /* Store the shader in a buffer. */
+       if (shader->bo == NULL) {
+               shader->bo = (struct r600_resource*)
+                       pipe_buffer_create(ctx->screen, PIPE_BIND_CUSTOM, PIPE_USAGE_IMMUTABLE, shader->shader.bc.ndw * 4);
+               if (shader->bo == NULL) {
+                       return -ENOMEM;
+               }
+               ptr = r600_buffer_mmap_sync_with_rings(rctx, shader->bo, PIPE_TRANSFER_WRITE);
+               if (R600_BIG_ENDIAN) {
+                       for (i = 0; i < shader->shader.bc.ndw; ++i) {
+                               ptr[i] = bswap_32(shader->shader.bc.bytecode[i]);
+                       }
+               } else {
+                       memcpy(ptr, shader->shader.bc.bytecode, shader->shader.bc.ndw * sizeof(*ptr));
+               }
+               rctx->ws->buffer_unmap(shader->bo->cs_buf);
+       }
+
+       /* Build state. */
+       switch (shader->shader.processor_type) {
+       case TGSI_PROCESSOR_VERTEX:
+               if (rctx->chip_class >= EVERGREEN) {
+                       evergreen_update_vs_state(ctx, shader);
+               } else {
+                       r600_update_vs_state(ctx, shader);
+               }
+               break;
+       case TGSI_PROCESSOR_FRAGMENT:
+               if (rctx->chip_class >= EVERGREEN) {
+                       evergreen_update_ps_state(ctx, shader);
+               } else {
+                       r600_update_ps_state(ctx, shader);
+               }
+               break;
+       default:
+               return -EINVAL;
+       }
+       return 0;
 }
 
 void r600_pipe_shader_destroy(struct pipe_context *ctx, struct r600_pipe_shader *shader)
index 1e62afc..2ddd567 100644 (file)
@@ -2754,7 +2754,7 @@ void r600_init_atom_start_cs(struct r600_context *rctx)
        r600_store_loop_const(cb, R_03E200_SQ_LOOP_CONST_0 + (32 * 4), 0x1000FFF);
 }
 
-void r600_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shader *shader)
+void r600_update_ps_state(struct pipe_context *ctx, struct r600_pipe_shader *shader)
 {
        struct r600_context *rctx = (struct r600_context *)ctx;
        struct r600_pipe_state *rstate = &shader->rstate;
@@ -2874,7 +2874,7 @@ void r600_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shader *shad
                shader->flatshade = rctx->rasterizer->flatshade;
 }
 
-void r600_pipe_shader_vs(struct pipe_context *ctx, struct r600_pipe_shader *shader)
+void r600_update_vs_state(struct pipe_context *ctx, struct r600_pipe_shader *shader)
 {
        struct r600_context *rctx = (struct r600_context *)ctx;
        struct r600_pipe_state *rstate = &shader->rstate;
index 22ac846..4566fc7 100644 (file)
@@ -1222,9 +1222,9 @@ static bool r600_update_derived_state(struct r600_context *rctx)
             (rctx->rasterizer->flatshade != rctx->ps_shader->current->flatshade))) {
 
                if (rctx->chip_class >= EVERGREEN)
-                       evergreen_pipe_shader_ps(ctx, rctx->ps_shader->current);
+                       evergreen_update_ps_state(ctx, rctx->ps_shader->current);
                else
-                       r600_pipe_shader_ps(ctx, rctx->ps_shader->current);
+                       r600_update_ps_state(ctx, rctx->ps_shader->current);
 
                ps_dirty = 1;
        }