svga: clean up the compile_vs/gs/fs() functions
authorBrian Paul <brianp@vmware.com>
Thu, 10 Sep 2015 14:55:01 +0000 (08:55 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 10 Sep 2015 18:23:46 +0000 (12:23 -0600)
Sipmlify structure and remove gotos.

Reviewed-by: Charmaine Lee <charmainel@vmware.com>
src/gallium/drivers/svga/svga_state_fs.c
src/gallium/drivers/svga/svga_state_gs.c
src/gallium/drivers/svga/svga_state_vs.c

index 5d39100f63a8fff8e4022ef99d433ad125becf89..c244d5352d9c2c90d78621c1d591dfdbf14fd6d8 100644 (file)
@@ -136,13 +136,8 @@ compile_fs(struct svga_context *svga,
       debug_printf("Failed to compile fragment shader,"
                    " using dummy shader instead.\n");
       variant = get_compiled_dummy_shader(svga, fs, key);
-      if (!variant) {
-         ret = PIPE_ERROR;
-         goto fail;
-      }
    }
-
-   if (svga_shader_too_large(svga, variant)) {
+   else if (svga_shader_too_large(svga, variant)) {
       /* too big, use dummy shader */
       debug_printf("Shader too large (%u bytes),"
                    " using dummy shader instead.\n",
@@ -152,29 +147,25 @@ compile_fs(struct svga_context *svga,
       svga_destroy_shader_variant(svga, SVGA3D_SHADERTYPE_PS, variant);
       /* Use simple pass-through shader instead */
       variant = get_compiled_dummy_shader(svga, fs, key);
-      if (!variant) {
-         ret = PIPE_ERROR;
-         goto fail;
-      }
+   }
+
+   if (!variant) {
+      return PIPE_ERROR;
    }
 
    ret = svga_define_shader(svga, SVGA3D_SHADERTYPE_PS, variant);
-   if (ret != PIPE_OK)
-      goto fail;
+   if (ret != PIPE_OK) {
+      svga_destroy_shader_variant(svga, SVGA3D_SHADERTYPE_PS, variant);
+      return ret;
+   }
 
    *out_variant = variant;
 
-   /* insert variants at head of linked list */
+   /* insert variant at head of linked list */
    variant->next = fs->base.variants;
    fs->base.variants = variant;
 
    return PIPE_OK;
-
-fail:
-   if (variant) {
-      svga_destroy_shader_variant(svga, SVGA3D_SHADERTYPE_PS, variant);
-   }
-   return ret;
 }
 
 
index 9f6885b95a26e5f831704fd1584a51e8a984acf5..7f75410fb57d3eff7d7b9b218e49653806370367 100644 (file)
@@ -80,34 +80,29 @@ compile_gs(struct svga_context *svga,
       /* some problem during translation, try the dummy shader */
       const struct tgsi_token *dummy = get_dummy_geometry_shader();
       if (!dummy) {
-         ret = PIPE_ERROR_OUT_OF_MEMORY;
-         goto fail;
+         return PIPE_ERROR_OUT_OF_MEMORY;
       }
       debug_printf("Failed to compile geometry shader, using dummy shader instead.\n");
       FREE((void *) gs->base.tokens);
       gs->base.tokens = dummy;
       variant = translate_geometry_program(svga, gs, key);
       if (variant == NULL) {
-         ret = PIPE_ERROR;
-         goto fail;
+         return PIPE_ERROR;
       }
    }
 
    ret = svga_define_shader(svga, SVGA3D_SHADERTYPE_GS, variant);
-   if (ret != PIPE_OK)
-      goto fail;
+   if (ret != PIPE_OK) {
+      svga_destroy_shader_variant(svga, SVGA3D_SHADERTYPE_GS, variant);
+      return ret;
+   }
 
    *out_variant = variant;
 
    return PIPE_OK;
-
-fail:
-   if (variant) {
-      svga_destroy_shader_variant(svga, SVGA3D_SHADERTYPE_GS, variant);
-   }
-   return ret;
 }
 
+
 static void
 make_gs_key(struct svga_context *svga, struct svga_compile_key *key)
 {
index de41519593c2f4fb43b7be8b5b08e07d7637e688..a846b779e70fa804110c995e3a47043ebec780a7 100644 (file)
@@ -127,13 +127,8 @@ compile_vs(struct svga_context *svga,
       debug_printf("Failed to compile vertex shader,"
                    " using dummy shader instead.\n");
       variant = get_compiled_dummy_vertex_shader(svga, vs, key);
-      if (!variant) {
-         ret = PIPE_ERROR;
-         goto fail;
-      }
    }
-
-   if (svga_shader_too_large(svga, variant)) {
+   else if (svga_shader_too_large(svga, variant)) {
       /* too big, use dummy shader */
       debug_printf("Shader too large (%u bytes),"
                    " using dummy shader instead.\n",
@@ -143,27 +138,24 @@ compile_vs(struct svga_context *svga,
       svga_destroy_shader_variant(svga, SVGA3D_SHADERTYPE_VS, variant);
       /* Use simple pass-through shader instead */
       variant = get_compiled_dummy_vertex_shader(svga, vs, key);
-      if (!variant) {
-         ret = PIPE_ERROR;
-         goto fail;
-      }
+   }
+
+   if (!variant) {
+      return PIPE_ERROR;
    }
 
    ret = svga_define_shader(svga, SVGA3D_SHADERTYPE_VS, variant);
-   if (ret != PIPE_OK)
-      goto fail;
+   if (ret != PIPE_OK) {
+      svga_destroy_shader_variant(svga, SVGA3D_SHADERTYPE_VS, variant);
+      return ret;
+   }
 
    *out_variant = variant;
 
    return PIPE_OK;
-
-fail:
-   if (variant) {
-      svga_destroy_shader_variant(svga, SVGA3D_SHADERTYPE_VS, variant);
-   }
-   return ret;
 }
 
+
 /* SVGA_NEW_PRESCALE, SVGA_NEW_RAST, SVGA_NEW_FS
  */
 static void