[Mesa-dev] [PATCH 1/6] svga: rename shader_result -> variant

Brian Paul brianp at vmware.com
Mon Jan 20 12:20:19 PST 2014


To be more consisten with other parts of gallium.  Plus, update/add
various comments.
---
 src/gallium/drivers/svga/svga_context.h         |   15 ++--
 src/gallium/drivers/svga/svga_pipe_fs.c         |   18 ++---
 src/gallium/drivers/svga/svga_pipe_vs.c         |   18 ++---
 src/gallium/drivers/svga/svga_state_constants.c |   24 +++----
 src/gallium/drivers/svga/svga_state_fs.c        |   83 ++++++++++++----------
 src/gallium/drivers/svga/svga_state_vs.c        |   86 ++++++++++++-----------
 src/gallium/drivers/svga/svga_tgsi.c            |   34 ++++-----
 src/gallium/drivers/svga/svga_tgsi.h            |   22 +++---
 8 files changed, 158 insertions(+), 142 deletions(-)

diff --git a/src/gallium/drivers/svga/svga_context.h b/src/gallium/drivers/svga/svga_context.h
index dee0cec..f75fac5 100644
--- a/src/gallium/drivers/svga/svga_context.h
+++ b/src/gallium/drivers/svga/svga_context.h
@@ -50,7 +50,7 @@
 
 struct draw_vertex_shader;
 struct draw_fragment_shader;
-struct svga_shader_result;
+struct svga_shader_variant;
 struct SVGACmdMemory;
 struct util_bitmask;
 
@@ -61,11 +61,13 @@ struct svga_shader
 
    struct tgsi_shader_info info;
 
-   struct svga_shader_result *results;
+   /** Head of linked list of variants */
+   struct svga_shader_variant *variants;
 
    unsigned id;  /**< for debugging only */
 };
 
+
 struct svga_fragment_shader
 {
    struct svga_shader base;
@@ -78,6 +80,7 @@ struct svga_fragment_shader
    int8_t generic_remap_table[MAX_GENERIC_VARYING];
 };
 
+
 struct svga_vertex_shader
 {
    struct svga_shader base;
@@ -282,8 +285,8 @@ struct svga_hw_draw_state
    unsigned ts[SVGA3D_PIXEL_SAMPLERREG_MAX][SVGA3D_TS_MAX];
    float cb[PIPE_SHADER_TYPES][SVGA3D_CONSTREG_MAX][4];
 
-   struct svga_shader_result *fs;
-   struct svga_shader_result *vs;
+   struct svga_shader_variant *fs;
+   struct svga_shader_variant *vs;
    struct svga_hw_view_state views[PIPE_MAX_SAMPLERS];
 
    unsigned num_views;
@@ -405,8 +408,8 @@ struct svga_context
 #define SVGA_NEW_NEED_PIPELINE       0x100000
 #define SVGA_NEW_NEED_SWVFETCH       0x200000
 #define SVGA_NEW_NEED_SWTNL          0x400000
-#define SVGA_NEW_FS_RESULT           0x800000
-#define SVGA_NEW_VS_RESULT           0x1000000
+#define SVGA_NEW_FS_VARIANT          0x800000
+#define SVGA_NEW_VS_VARIANT          0x1000000
 #define SVGA_NEW_TEXTURE_FLAGS       0x4000000
 #define SVGA_NEW_STENCIL_REF         0x8000000
 
diff --git a/src/gallium/drivers/svga/svga_pipe_fs.c b/src/gallium/drivers/svga/svga_pipe_fs.c
index 4c04ea0..7bdcd8e 100644
--- a/src/gallium/drivers/svga/svga_pipe_fs.c
+++ b/src/gallium/drivers/svga/svga_pipe_fs.c
@@ -88,33 +88,33 @@ svga_delete_fs_state(struct pipe_context *pipe, void *shader)
 {
    struct svga_context *svga = svga_context(pipe);
    struct svga_fragment_shader *fs = (struct svga_fragment_shader *) shader;
-   struct svga_shader_result *result, *tmp;
+   struct svga_shader_variant *variant, *tmp;
    enum pipe_error ret;
 
    svga_hwtnl_flush_retry(svga);
 
    draw_delete_fragment_shader(svga->swtnl.draw, fs->draw_shader);
 
-   for (result = fs->base.results; result; result = tmp) {
-      tmp = result->next;
+   for (variant = fs->base.variants; variant; variant = tmp) {
+      tmp = variant->next;
 
-      ret = SVGA3D_DestroyShader(svga->swc, result->id, SVGA3D_SHADERTYPE_PS);
+      ret = SVGA3D_DestroyShader(svga->swc, variant->id, SVGA3D_SHADERTYPE_PS);
       if (ret != PIPE_OK) {
          svga_context_flush(svga, NULL);
-         ret = SVGA3D_DestroyShader(svga->swc, result->id,
+         ret = SVGA3D_DestroyShader(svga->swc, variant->id,
                                     SVGA3D_SHADERTYPE_PS);
          assert(ret == PIPE_OK);
       }
 
-      util_bitmask_clear(svga->fs_bm, result->id);
+      util_bitmask_clear(svga->fs_bm, variant->id);
 
-      svga_destroy_shader_result(result);
+      svga_destroy_shader_variant(variant);
 
       /*
-       * Remove stale references to this result to ensure a new result on the
+       * Remove stale references to this variant to ensure a new variant on the
        * same address will be detected as a change.
        */
-      if (result == svga->state.hw_draw.fs)
+      if (variant == svga->state.hw_draw.fs)
          svga->state.hw_draw.fs = NULL;
    }
 
diff --git a/src/gallium/drivers/svga/svga_pipe_vs.c b/src/gallium/drivers/svga/svga_pipe_vs.c
index 72e2fc1..fd132eb 100644
--- a/src/gallium/drivers/svga/svga_pipe_vs.c
+++ b/src/gallium/drivers/svga/svga_pipe_vs.c
@@ -148,33 +148,33 @@ svga_delete_vs_state(struct pipe_context *pipe, void *shader)
 {
    struct svga_context *svga = svga_context(pipe);
    struct svga_vertex_shader *vs = (struct svga_vertex_shader *)shader;
-   struct svga_shader_result *result, *tmp;
+   struct svga_shader_variant *variant, *tmp;
    enum pipe_error ret;
 
    svga_hwtnl_flush_retry(svga);
 
    draw_delete_vertex_shader(svga->swtnl.draw, vs->draw_shader);
 
-   for (result = vs->base.results; result; result = tmp) {
-      tmp = result->next;
+   for (variant = vs->base.variants; variant; variant = tmp) {
+      tmp = variant->next;
 
-      ret = SVGA3D_DestroyShader(svga->swc, result->id, SVGA3D_SHADERTYPE_VS);
+      ret = SVGA3D_DestroyShader(svga->swc, variant->id, SVGA3D_SHADERTYPE_VS);
       if (ret != PIPE_OK) {
          svga_context_flush(svga, NULL);
-         ret = SVGA3D_DestroyShader(svga->swc, result->id,
+         ret = SVGA3D_DestroyShader(svga->swc, variant->id,
                                     SVGA3D_SHADERTYPE_VS);
          assert(ret == PIPE_OK);
       }
 
-      util_bitmask_clear(svga->vs_bm, result->id);
+      util_bitmask_clear(svga->vs_bm, variant->id);
 
-      svga_destroy_shader_result(result);
+      svga_destroy_shader_variant(variant);
 
       /*
-       * Remove stale references to this result to ensure a new result on the
+       * Remove stale references to this variant to ensure a new variant on the
        * same address will be detected as a change.
        */
-      if (result == svga->state.hw_draw.vs)
+      if (variant == svga->state.hw_draw.vs)
          svga->state.hw_draw.vs = NULL;
    }
 
diff --git a/src/gallium/drivers/svga/svga_state_constants.c b/src/gallium/drivers/svga/svga_state_constants.c
index 1c0edb4..d468298 100644
--- a/src/gallium/drivers/svga/svga_state_constants.c
+++ b/src/gallium/drivers/svga/svga_state_constants.c
@@ -266,7 +266,7 @@ done:
 static enum pipe_error
 emit_fs_consts(struct svga_context *svga, unsigned dirty)
 {
-   const struct svga_shader_result *result = svga->state.hw_draw.fs;
+   const struct svga_shader_variant *variant = svga->state.hw_draw.fs;
    enum pipe_error ret = PIPE_OK;
 
    ret = emit_consts( svga, PIPE_SHADER_FRAGMENT );
@@ -274,14 +274,14 @@ emit_fs_consts(struct svga_context *svga, unsigned dirty)
       return ret;
 
    /* The internally generated fragment shader for xor blending
-    * doesn't have a 'result' struct.  It should be fixed to avoid
+    * doesn't have a 'variant' struct.  It should be fixed to avoid
     * this special case, but work around it with a NULL check:
     */
-   if (result) {
-      const struct svga_fs_compile_key *key = &result->key.fkey;
+   if (variant) {
+      const struct svga_fs_compile_key *key = &variant->key.fkey;
       if (key->num_unnormalized_coords) {
          const unsigned offset =
-            result->shader->info.file_max[TGSI_FILE_CONSTANT] + 1;
+            variant->shader->info.file_max[TGSI_FILE_CONSTANT] + 1;
          unsigned i;
 
          for (i = 0; i < key->num_textures; i++) {
@@ -314,7 +314,7 @@ struct svga_tracked_state svga_hw_fs_constants =
 {
    "hw fs params",
    (SVGA_NEW_FS_CONST_BUFFER |
-    SVGA_NEW_FS_RESULT |
+    SVGA_NEW_FS_VARIANT |
     SVGA_NEW_TEXTURE_BINDING),
    emit_fs_consts
 };
@@ -324,17 +324,17 @@ struct svga_tracked_state svga_hw_fs_constants =
 static enum pipe_error
 emit_vs_consts(struct svga_context *svga, unsigned dirty)
 {
-   const struct svga_shader_result *result = svga->state.hw_draw.vs;
+   const struct svga_shader_variant *variant = svga->state.hw_draw.vs;
    const struct svga_vs_compile_key *key;
    enum pipe_error ret = PIPE_OK;
    unsigned offset;
 
-   /* SVGA_NEW_VS_RESULT
+   /* SVGA_NEW_VS_VARIANT
     */
-   if (result == NULL)
+   if (variant == NULL)
       return PIPE_OK;
 
-   key = &result->key.vkey;
+   key = &variant->key.vkey;
 
    /* SVGA_NEW_VS_CONST_BUFFER
     */
@@ -343,7 +343,7 @@ emit_vs_consts(struct svga_context *svga, unsigned dirty)
       return ret;
 
    /* offset = number of constants in the VS const buffer */
-   offset = result->shader->info.file_max[TGSI_FILE_CONSTANT] + 1;
+   offset = variant->shader->info.file_max[TGSI_FILE_CONSTANT] + 1;
 
    /* SVGA_NEW_VS_PRESCALE
     * Put the viewport pre-scale/translate values into the const buffer.
@@ -369,6 +369,6 @@ struct svga_tracked_state svga_hw_vs_constants =
    "hw vs params",
    (SVGA_NEW_PRESCALE |
     SVGA_NEW_VS_CONST_BUFFER |
-    SVGA_NEW_VS_RESULT),
+    SVGA_NEW_VS_VARIANT),
    emit_vs_consts
 };
diff --git a/src/gallium/drivers/svga/svga_state_fs.c b/src/gallium/drivers/svga/svga_state_fs.c
index 1e9fb43..36f2cd5 100644
--- a/src/gallium/drivers/svga/svga_state_fs.c
+++ b/src/gallium/drivers/svga/svga_state_fs.c
@@ -40,8 +40,9 @@
 
 
 
-static INLINE int compare_fs_keys( const struct svga_fs_compile_key *a,
-                                   const struct svga_fs_compile_key *b )
+static INLINE int
+compare_fs_keys(const struct svga_fs_compile_key *a,
+                const struct svga_fs_compile_key *b)
 {
    unsigned keysize_a = svga_fs_key_size( a );
    unsigned keysize_b = svga_fs_key_size( b );
@@ -53,16 +54,18 @@ static INLINE int compare_fs_keys( const struct svga_fs_compile_key *a,
 }
 
 
-static struct svga_shader_result *search_fs_key( struct svga_fragment_shader *fs,
-                                                 const struct svga_fs_compile_key *key )
+/** Search for a fragment shader variant */
+static struct svga_shader_variant *
+search_fs_key(const struct svga_fragment_shader *fs,
+              const struct svga_fs_compile_key *key)
 {
-   struct svga_shader_result *result = fs->base.results;
+   struct svga_shader_variant *variant = fs->base.variants;
 
    assert(key);
 
-   for ( ; result; result = result->next) {
-      if (compare_fs_keys( key, &result->key.fkey ) == 0)
-         return result;
+   for ( ; variant; variant = variant->next) {
+      if (compare_fs_keys( key, &variant->key.fkey ) == 0)
+         return variant;
    }
    
    return NULL;
@@ -101,16 +104,20 @@ get_dummy_fragment_shader(void)
 }
 
 
-static enum pipe_error compile_fs( struct svga_context *svga,
-                                   struct svga_fragment_shader *fs,
-                                   const struct svga_fs_compile_key *key,
-                                   struct svga_shader_result **out_result )
+/**
+ * Translate TGSI shader into an svga shader variant.
+ */
+static enum pipe_error
+compile_fs(struct svga_context *svga,
+           struct svga_fragment_shader *fs,
+           const struct svga_fs_compile_key *key,
+           struct svga_shader_variant **out_variant)
 {
-   struct svga_shader_result *result;
+   struct svga_shader_variant *variant;
    enum pipe_error ret = PIPE_ERROR;
 
-   result = svga_translate_fragment_program( fs, key );
-   if (result == NULL) {
+   variant = svga_translate_fragment_program( fs, key );
+   if (variant == NULL) {
       /* some problem during translation, try the dummy shader */
       const struct tgsi_token *dummy = get_dummy_fragment_shader();
       if (!dummy) {
@@ -120,37 +127,37 @@ static enum pipe_error compile_fs( struct svga_context *svga,
       debug_printf("Failed to compile fragment shader, using dummy shader instead.\n");
       FREE((void *) fs->base.tokens);
       fs->base.tokens = dummy;
-      result = svga_translate_fragment_program(fs, key);
-      if (result == NULL) {
+      variant = svga_translate_fragment_program(fs, key);
+      if (variant == NULL) {
          ret = PIPE_ERROR;
          goto fail;
       }
    }
 
-   result->id = util_bitmask_add(svga->fs_bm);
-   if(result->id == UTIL_BITMASK_INVALID_INDEX) {
+   variant->id = util_bitmask_add(svga->fs_bm);
+   if(variant->id == UTIL_BITMASK_INVALID_INDEX) {
       ret = PIPE_ERROR_OUT_OF_MEMORY;
       goto fail;
    }
 
    ret = SVGA3D_DefineShader(svga->swc, 
-                             result->id,
+                             variant->id,
                              SVGA3D_SHADERTYPE_PS,
-                             result->tokens, 
-                             result->nr_tokens * sizeof result->tokens[0]);
+                             variant->tokens, 
+                             variant->nr_tokens * sizeof variant->tokens[0]);
    if (ret != PIPE_OK)
       goto fail;
 
-   *out_result = result;
-   result->next = fs->base.results;
-   fs->base.results = result;
+   *out_variant = variant;
+   variant->next = fs->base.variants;
+   fs->base.variants = variant;
    return PIPE_OK;
 
 fail:
-   if (result) {
-      if (result->id != UTIL_BITMASK_INVALID_INDEX)
-         util_bitmask_clear( svga->fs_bm, result->id );
-      svga_destroy_shader_result( result );
+   if (variant) {
+      if (variant->id != UTIL_BITMASK_INVALID_INDEX)
+         util_bitmask_clear( svga->fs_bm, variant->id );
+      svga_destroy_shader_variant( variant );
    }
    return ret;
 }
@@ -290,7 +297,7 @@ make_fs_key(const struct svga_context *svga,
 static enum pipe_error
 emit_hw_fs(struct svga_context *svga, unsigned dirty)
 {
-   struct svga_shader_result *result = NULL;
+   struct svga_shader_variant *variant = NULL;
    unsigned id = SVGA3D_INVALID_ID;
    enum pipe_error ret = PIPE_OK;
 
@@ -308,27 +315,27 @@ emit_hw_fs(struct svga_context *svga, unsigned dirty)
    if (ret != PIPE_OK)
       return ret;
 
-   result = search_fs_key( fs, &key );
-   if (!result) {
-      ret = compile_fs( svga, fs, &key, &result );
+   variant = search_fs_key( fs, &key );
+   if (!variant) {
+      ret = compile_fs( svga, fs, &key, &variant );
       if (ret != PIPE_OK)
          return ret;
    }
 
-   assert (result);
-   id = result->id;
+   assert (variant);
+   id = variant->id;
 
    assert(id != SVGA3D_INVALID_ID);
 
-   if (result != svga->state.hw_draw.fs) {
+   if (variant != svga->state.hw_draw.fs) {
       ret = SVGA3D_SetShader(svga->swc,
                              SVGA3D_SHADERTYPE_PS,
                              id );
       if (ret != PIPE_OK)
          return ret;
 
-      svga->dirty |= SVGA_NEW_FS_RESULT;
-      svga->state.hw_draw.fs = result;      
+      svga->dirty |= SVGA_NEW_FS_VARIANT;
+      svga->state.hw_draw.fs = variant;      
    }
 
    return PIPE_OK;
diff --git a/src/gallium/drivers/svga/svga_state_vs.c b/src/gallium/drivers/svga/svga_state_vs.c
index efa7c15..208bdd3 100644
--- a/src/gallium/drivers/svga/svga_state_vs.c
+++ b/src/gallium/drivers/svga/svga_state_vs.c
@@ -39,28 +39,28 @@
 
 #include "svga_hw_reg.h"
 
-/***********************************************************************
- */
-
 
-static INLINE int compare_vs_keys( const struct svga_vs_compile_key *a,
-                                   const struct svga_vs_compile_key *b )
+static INLINE int
+compare_vs_keys(const struct svga_vs_compile_key *a,
+                const struct svga_vs_compile_key *b)
 {
    unsigned keysize = svga_vs_key_size( a );
    return memcmp( a, b, keysize );
 }
 
 
-static struct svga_shader_result *search_vs_key( struct svga_vertex_shader *vs,
-                                                 const struct svga_vs_compile_key *key )
+/** Search for a vertex shader variant */
+static struct svga_shader_variant *
+search_vs_key(const struct svga_vertex_shader *vs,
+              const struct svga_vs_compile_key *key)
 {
-   struct svga_shader_result *result = vs->base.results;
+   struct svga_shader_variant *variant = vs->base.variants;
 
    assert(key);
 
-   for ( ; result; result = result->next) {
-      if (compare_vs_keys( key, &result->key.vkey ) == 0)
-         return result;
+   for ( ; variant; variant = variant->next) {
+      if (compare_vs_keys( key, &variant->key.vkey ) == 0)
+         return variant;
    }
    
    return NULL;
@@ -98,16 +98,20 @@ get_dummy_vertex_shader(void)
 }
 
 
-static enum pipe_error compile_vs( struct svga_context *svga,
-                                   struct svga_vertex_shader *vs,
-                                   const struct svga_vs_compile_key *key,
-                                   struct svga_shader_result **out_result )
+/**
+ * Translate TGSI shader into an svga shader variant.
+ */
+static enum pipe_error
+compile_vs(struct svga_context *svga,
+           struct svga_vertex_shader *vs,
+           const struct svga_vs_compile_key *key,
+           struct svga_shader_variant **out_variant)
 {
-   struct svga_shader_result *result;
+   struct svga_shader_variant *variant;
    enum pipe_error ret = PIPE_ERROR;
 
-   result = svga_translate_vertex_program( vs, key );
-   if (result == NULL) {
+   variant = svga_translate_vertex_program( vs, key );
+   if (variant == NULL) {
       /* some problem during translation, try the dummy shader */
       const struct tgsi_token *dummy = get_dummy_vertex_shader();
       if (!dummy) {
@@ -117,37 +121,37 @@ static enum pipe_error compile_vs( struct svga_context *svga,
       debug_printf("Failed to compile vertex shader, using dummy shader instead.\n");
       FREE((void *) vs->base.tokens);
       vs->base.tokens = dummy;
-      result = svga_translate_vertex_program(vs, key);
-      if (result == NULL) {
+      variant = svga_translate_vertex_program(vs, key);
+      if (variant == NULL) {
          ret = PIPE_ERROR;
          goto fail;
       }
    }
 
-   result->id = util_bitmask_add(svga->vs_bm);
-   if(result->id == UTIL_BITMASK_INVALID_INDEX) {
+   variant->id = util_bitmask_add(svga->vs_bm);
+   if(variant->id == UTIL_BITMASK_INVALID_INDEX) {
       ret = PIPE_ERROR_OUT_OF_MEMORY;
       goto fail;
    }
 
    ret = SVGA3D_DefineShader(svga->swc, 
-                             result->id,
+                             variant->id,
                              SVGA3D_SHADERTYPE_VS,
-                             result->tokens, 
-                             result->nr_tokens * sizeof result->tokens[0]);
+                             variant->tokens, 
+                             variant->nr_tokens * sizeof variant->tokens[0]);
    if (ret != PIPE_OK)
       goto fail;
 
-   *out_result = result;
-   result->next = vs->base.results;
-   vs->base.results = result;
+   *out_variant = variant;
+   variant->next = vs->base.variants;
+   vs->base.variants = variant;
    return PIPE_OK;
 
 fail:
-   if (result) {
-      if (result->id != UTIL_BITMASK_INVALID_INDEX)
-         util_bitmask_clear( svga->vs_bm, result->id );
-      svga_destroy_shader_result( result );
+   if (variant) {
+      if (variant->id != UTIL_BITMASK_INVALID_INDEX)
+         util_bitmask_clear( svga->vs_bm, variant->id );
+      svga_destroy_shader_variant( variant );
    }
    return ret;
 }
@@ -170,7 +174,7 @@ make_vs_key(struct svga_context *svga, struct svga_vs_compile_key *key)
 static enum pipe_error
 emit_hw_vs(struct svga_context *svga, unsigned dirty)
 {
-   struct svga_shader_result *result = NULL;
+   struct svga_shader_variant *variant = NULL;
    unsigned id = SVGA3D_INVALID_ID;
    enum pipe_error ret = PIPE_OK;
 
@@ -181,26 +185,26 @@ emit_hw_vs(struct svga_context *svga, unsigned dirty)
 
       make_vs_key( svga, &key );
 
-      result = search_vs_key( vs, &key );
-      if (!result) {
-         ret = compile_vs( svga, vs, &key, &result );
+      variant = search_vs_key( vs, &key );
+      if (!variant) {
+         ret = compile_vs( svga, vs, &key, &variant );
          if (ret != PIPE_OK)
             return ret;
       }
 
-      assert (result);
-      id = result->id;
+      assert (variant);
+      id = variant->id;
    }
 
-   if (result != svga->state.hw_draw.vs) {
+   if (variant != svga->state.hw_draw.vs) {
       ret = SVGA3D_SetShader(svga->swc,
                              SVGA3D_SHADERTYPE_VS,
                              id );
       if (ret != PIPE_OK)
          return ret;
 
-      svga->dirty |= SVGA_NEW_VS_RESULT;
-      svga->state.hw_draw.vs = result;      
+      svga->dirty |= SVGA_NEW_VS_VARIANT;
+      svga->state.hw_draw.vs = variant;      
    }
 
    return PIPE_OK;
diff --git a/src/gallium/drivers/svga/svga_tgsi.c b/src/gallium/drivers/svga/svga_tgsi.c
index 29fbe84..368f131 100644
--- a/src/gallium/drivers/svga/svga_tgsi.c
+++ b/src/gallium/drivers/svga/svga_tgsi.c
@@ -264,11 +264,11 @@ svga_remap_generic_index(int8_t remap_table[MAX_GENERIC_VARYING],
  * can be dynamically grown.  Once we've finished and know how large
  * it is, it will be copied to a hardware buffer for upload.
  */
-static struct svga_shader_result *
+static struct svga_shader_variant *
 svga_tgsi_translate(const struct svga_shader *shader,
                     const struct svga_compile_key *key, unsigned unit)
 {
-   struct svga_shader_result *result = NULL;
+   struct svga_shader_variant *variant = NULL;
    struct svga_shader_emitter emit;
 
    memset(&emit, 0, sizeof(emit));
@@ -317,15 +317,15 @@ svga_tgsi_translate(const struct svga_shader *shader,
       goto fail;
    }
 
-   result = CALLOC_STRUCT(svga_shader_result);
-   if (result == NULL)
+   variant = CALLOC_STRUCT(svga_shader_variant);
+   if (variant == NULL)
       goto fail;
 
-   result->shader = shader;
-   result->tokens = (const unsigned *) emit.buf;
-   result->nr_tokens = (emit.ptr - emit.buf) / sizeof(unsigned);
-   memcpy(&result->key, key, sizeof(*key));
-   result->id = UTIL_BITMASK_INVALID_INDEX;
+   variant->shader = shader;
+   variant->tokens = (const unsigned *) emit.buf;
+   variant->nr_tokens = (emit.ptr - emit.buf) / sizeof(unsigned);
+   memcpy(&variant->key, key, sizeof(*key));
+   variant->id = UTIL_BITMASK_INVALID_INDEX;
 
    if (SVGA_DEBUG & DEBUG_TGSI) {
       debug_printf("#####################################\n");
@@ -333,21 +333,21 @@ svga_tgsi_translate(const struct svga_shader *shader,
       tgsi_dump(shader->tokens, 0);
       if (SVGA_DEBUG & DEBUG_TGSI) {
          debug_printf("Shader %u compiled below\n", shader->id);
-         svga_shader_dump(result->tokens, result->nr_tokens, FALSE);
+         svga_shader_dump(variant->tokens, variant->nr_tokens, FALSE);
       }
       debug_printf("#####################################\n");
    }
 
-   return result;
+   return variant;
 
  fail:
-   FREE(result);
+   FREE(variant);
    FREE(emit.buf);
    return NULL;
 }
 
 
-struct svga_shader_result *
+struct svga_shader_variant *
 svga_translate_fragment_program(const struct svga_fragment_shader *fs,
                                 const struct svga_fs_compile_key *fkey)
 {
@@ -364,7 +364,7 @@ svga_translate_fragment_program(const struct svga_fragment_shader *fs,
 }
 
 
-struct svga_shader_result *
+struct svga_shader_variant *
 svga_translate_vertex_program(const struct svga_vertex_shader *vs,
                               const struct svga_vs_compile_key *vkey)
 {
@@ -384,8 +384,8 @@ svga_translate_vertex_program(const struct svga_vertex_shader *vs,
 
 
 void
-svga_destroy_shader_result(struct svga_shader_result *result)
+svga_destroy_shader_variant(struct svga_shader_variant *variant)
 {
-   FREE((unsigned *) result->tokens);
-   FREE(result);
+   FREE((unsigned *) variant->tokens);
+   FREE(variant);
 }
diff --git a/src/gallium/drivers/svga/svga_tgsi.h b/src/gallium/drivers/svga/svga_tgsi.h
index 591dd6a..b32b708 100644
--- a/src/gallium/drivers/svga/svga_tgsi.h
+++ b/src/gallium/drivers/svga/svga_tgsi.h
@@ -74,6 +74,9 @@ struct svga_fs_compile_key
    } tex[PIPE_MAX_SAMPLERS];
 };
 
+/**
+ * Key/index for identifying shader variants.
+ */
 struct svga_compile_key {
    struct svga_vs_compile_key vkey;
    struct svga_fs_compile_key fkey;
@@ -84,14 +87,13 @@ struct svga_compile_key {
 /**
  * A single TGSI shader may be compiled into different variants of
  * SVGA3D shaders depending on the compile key.  Each user shader
- * will have a linked list of these results.
+ * will have a linked list of these variants.
  */
-struct svga_shader_result
+struct svga_shader_variant
 {
    const struct svga_shader *shader;
 
-   /* Parameters used to generate this compilation result:
-    */
+   /** Parameters used to generate this variant */
    struct svga_compile_key key;
 
    /* Compiled shader tokens:
@@ -104,9 +106,8 @@ struct svga_shader_result
     */
    unsigned id;
    
-   /* Next compilation result:
-    */
-   struct svga_shader_result *next;
+   /** Next variant */
+   struct svga_shader_variant *next;
 };
 
 
@@ -144,16 +145,17 @@ static INLINE unsigned svga_fs_key_size( const struct svga_fs_compile_key *key )
    return (const char *)&key->tex[key->num_textures] - (const char *)key;
 }
 
-struct svga_shader_result *
+struct svga_shader_variant *
 svga_translate_fragment_program( const struct svga_fragment_shader *fs,
                                  const struct svga_fs_compile_key *fkey );
 
-struct svga_shader_result *
+struct svga_shader_variant *
 svga_translate_vertex_program( const struct svga_vertex_shader *fs,
                                const struct svga_vs_compile_key *vkey );
 
 
-void svga_destroy_shader_result( struct svga_shader_result *result );
+void
+svga_destroy_shader_variant(struct svga_shader_variant *variant);
 
 unsigned
 svga_get_generic_inputs_mask(const struct tgsi_shader_info *info);
-- 
1.7.10.4



More information about the mesa-dev mailing list