[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