svga: use shader sampler view declarations
[mesa.git] / src / gallium / drivers / svga / svga_state_gs.c
index 9f6885b95a26e5f831704fd1584a51e8a984acf5..618bec248dd887303bdc316951e93022d37a4556 100644 (file)
@@ -53,13 +53,9 @@ translate_geometry_program(struct svga_context *svga,
                            const struct svga_geometry_shader *gs,
                            const struct svga_compile_key *key)
 {
-   if (svga_have_vgpu10(svga)) {
-      return svga_tgsi_vgpu10_translate(svga, &gs->base, key,
-                                        PIPE_SHADER_GEOMETRY);
-   }
-   else {
-      return svga_tgsi_vgpu9_translate(&gs->base, key, PIPE_SHADER_GEOMETRY);
-   }
+   assert(svga_have_vgpu10(svga));
+   return svga_tgsi_vgpu10_translate(svga, &gs->base, key,
+                                     PIPE_SHADER_GEOMETRY);
 }
 
 
@@ -76,38 +72,33 @@ compile_gs(struct svga_context *svga,
    enum pipe_error ret = PIPE_ERROR;
 
    variant = translate_geometry_program(svga, gs, key);
-   if (variant == NULL) {
+   if (!variant) {
       /* 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;
+      if (!variant) {
+         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)
 {
@@ -190,7 +181,7 @@ emit_hw_gs(struct svga_context *svga, unsigned dirty)
    if (svga->curr.user_gs)
       assert(svga->curr.gs);
 
-   if (gs == NULL) {
+   if (!gs) {
       if (svga->state.hw_draw.gs != NULL) {
 
          /** The previous geometry shader is made inactive.