st/egl: Remove.
[mesa.git] / src / gallium / state_trackers / vega / shaders_cache.c
index 023996ce2d8c848ea84dc265b6e5ec5826ec2776..c1082ca3673c5469020627ea32b3dc748a4c97b3 100644 (file)
@@ -182,7 +182,7 @@ combine_shaders(const struct shader_asm_info *shaders[SHADER_STAGES], int num_sh
    out = ureg_DECL_output(ureg, TGSI_SEMANTIC_COLOR, 0);
 
    if (num_consts >= 1) {
-      constant = (struct ureg_src *) malloc(sizeof(struct ureg_src) * end_const);
+      constant = malloc(sizeof(struct ureg_src) * end_const);
       for (i = start_const; i < end_const; i++) {
          constant[i] = ureg_DECL_constant(ureg, i);
       }
@@ -190,14 +190,14 @@ combine_shaders(const struct shader_asm_info *shaders[SHADER_STAGES], int num_sh
    }
 
    if (num_temps >= 1) {
-      temp = (struct ureg_dst *) malloc(sizeof(struct ureg_dst) * end_temp);
+      temp = malloc(sizeof(struct ureg_dst) * end_temp);
       for (i = start_temp; i < end_temp; i++) {
          temp[i] = ureg_DECL_temporary(ureg);
       }
    }
 
    if (num_samplers >= 1) {
-      sampler = (struct ureg_src *) malloc(sizeof(struct ureg_src) * end_sampler);
+      sampler = malloc(sizeof(struct ureg_src) * end_sampler);
       for (i = start_sampler; i < end_sampler; i++) {
          sampler[i] = ureg_DECL_sampler(ureg, i);
       }
@@ -225,11 +225,12 @@ combine_shaders(const struct shader_asm_info *shaders[SHADER_STAGES], int num_sh
    ureg_END(ureg);
 
    shader->tokens = ureg_finalize(ureg);
-   if(!shader->tokens)
+   if (!shader->tokens) {
+      ureg_destroy(ureg);
       return NULL;
+   }
 
    p = pipe->create_fs_state(pipe, shader);
-   ureg_destroy(ureg);
 
    if (num_temps >= 1) {
       for (i = start_temp; i < end_temp; i++) {
@@ -237,12 +238,11 @@ combine_shaders(const struct shader_asm_info *shaders[SHADER_STAGES], int num_sh
       }
    }
 
-   if (temp)
-      free(temp);
-   if (constant)
-      free(constant);
-   if (sampler)
-      free(sampler);
+   ureg_destroy(ureg);
+
+   free(temp);
+   free(constant);
+   free(sampler);
 
    return p;
 }
@@ -440,6 +440,7 @@ struct vg_shader * shader_create_from_text(struct pipe_context *pipe,
                 type == PIPE_SHADER_FRAGMENT);
 
    state.tokens = tokens;
+   memset(&state.stream_output, 0, sizeof(state.stream_output));
    shader->type = type;
    shader->tokens = tokens;