[Mesa-dev] [PATCH] mesa: undo split out of create shader code

Ian Romanick idr at freedesktop.org
Mon Aug 17 15:03:28 PDT 2015


Easy enough.  I probably should have done this when I removed EXT_sso.

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

On 08/17/2015 02:42 PM, Timothy Arceri wrote:
> This code was split out into a separate function to be used also
> by GL_EXT_separate_shader_objects which has since been removed from
> Mesa, so move it back.
> ---
>  src/mesa/main/shaderapi.c | 109 +++++++++++++++++++++-------------------------
>  1 file changed, 50 insertions(+), 59 deletions(-)
> 
> diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c
> index 1622274..b227c17 100644
> --- a/src/mesa/main/shaderapi.c
> +++ b/src/mesa/main/shaderapi.c
> @@ -1995,64 +1995,6 @@ _mesa_use_shader_program(struct gl_context *ctx, GLenum type,
>  }
>  
>  
> -static GLuint
> -_mesa_create_shader_program(struct gl_context* ctx, GLboolean separate,
> -                            GLenum type, GLsizei count,
> -                            const GLchar* const *strings)
> -{
> -   const GLuint shader = create_shader(ctx, type);
> -   GLuint program = 0;
> -
> -   /*
> -    * According to OpenGL 4.5 and OpenGL ES 3.1 standards, section 7.3:
> -    * GL_INVALID_VALUE should be generated if count < 0
> -    */
> -   if (count < 0) {
> -      _mesa_error(ctx, GL_INVALID_VALUE, "glCreateShaderProgram (count < 0)");
> -      return program;
> -   }
> -
> -   if (shader) {
> -      _mesa_ShaderSource(shader, count, strings, NULL);
> -
> -      compile_shader(ctx, shader);
> -
> -      program = create_shader_program(ctx);
> -      if (program) {
> -	 struct gl_shader_program *shProg;
> -	 struct gl_shader *sh;
> -	 GLint compiled = GL_FALSE;
> -
> -	 shProg = _mesa_lookup_shader_program(ctx, program);
> -	 sh = _mesa_lookup_shader(ctx, shader);
> -
> -	 shProg->SeparateShader = separate;
> -
> -	 get_shaderiv(ctx, shader, GL_COMPILE_STATUS, &compiled);
> -	 if (compiled) {
> -	    attach_shader(ctx, program, shader);
> -	    link_program(ctx, program);
> -	    detach_shader(ctx, program, shader);
> -
> -#if 0
> -	    /* Possibly... */
> -	    if (active-user-defined-varyings-in-linked-program) {
> -	       append-error-to-info-log;
> -	       shProg->LinkStatus = GL_FALSE;
> -	    }
> -#endif
> -	 }
> -         if (sh->InfoLog)
> -            ralloc_strcat(&shProg->InfoLog, sh->InfoLog);
> -      }
> -
> -      delete_shader(ctx, shader);
> -   }
> -
> -   return program;
> -}
> -
> -
>  /**
>   * Copy program-specific data generated by linking from the gl_shader_program
>   * object to a specific gl_program object.
> @@ -2120,7 +2062,56 @@ _mesa_CreateShaderProgramv(GLenum type, GLsizei count,
>  {
>     GET_CURRENT_CONTEXT(ctx);
>  
> -   return _mesa_create_shader_program(ctx, GL_TRUE, type, count, strings);
> +   const GLuint shader = create_shader(ctx, type);
> +   GLuint program = 0;
> +
> +   /*
> +    * According to OpenGL 4.5 and OpenGL ES 3.1 standards, section 7.3:
> +    * GL_INVALID_VALUE should be generated if count < 0
> +    */
> +   if (count < 0) {
> +      _mesa_error(ctx, GL_INVALID_VALUE, "glCreateShaderProgram (count < 0)");
> +      return program;
> +   }
> +
> +   if (shader) {
> +      _mesa_ShaderSource(shader, count, strings, NULL);
> +
> +      compile_shader(ctx, shader);
> +
> +      program = create_shader_program(ctx);
> +      if (program) {
> +	 struct gl_shader_program *shProg;
> +	 struct gl_shader *sh;
> +	 GLint compiled = GL_FALSE;
> +
> +	 shProg = _mesa_lookup_shader_program(ctx, program);
> +	 sh = _mesa_lookup_shader(ctx, shader);
> +
> +	 shProg->SeparateShader = GL_TRUE;
> +
> +	 get_shaderiv(ctx, shader, GL_COMPILE_STATUS, &compiled);
> +	 if (compiled) {
> +	    attach_shader(ctx, program, shader);
> +	    link_program(ctx, program);
> +	    detach_shader(ctx, program, shader);
> +
> +#if 0
> +	    /* Possibly... */
> +	    if (active-user-defined-varyings-in-linked-program) {
> +	       append-error-to-info-log;
> +	       shProg->LinkStatus = GL_FALSE;
> +	    }
> +#endif
> +	 }
> +         if (sh->InfoLog)
> +            ralloc_strcat(&shProg->InfoLog, sh->InfoLog);
> +      }
> +
> +      delete_shader(ctx, shader);
> +   }
> +
> +   return program;
>  }
>  
>  
> 



More information about the mesa-dev mailing list