[Mesa-dev] [PATCH 04/18] mesa/cs: Add compute support to update_program().

Kristian Høgsberg krh at bitplanet.net
Mon Apr 13 17:26:04 PDT 2015


On Sat, Mar 14, 2015 at 9:54 PM, Jordan Justen
<jordan.l.justen at intel.com> wrote:
> From: Paul Berry <stereotype441 at gmail.com>
>
> Reviewed-by: Jordan Justen <jordan.l.justen at intel.com>

Reviewed-by: Kristian Høgsberg <krh at bitplanet.net>

> ---
>  src/mesa/main/state.c | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
>
> diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c
> index dadfb3c..5d5e94d 100644
> --- a/src/mesa/main/state.c
> +++ b/src/mesa/main/state.c
> @@ -101,9 +101,12 @@ update_program(struct gl_context *ctx)
>        ctx->_Shader->CurrentProgram[MESA_SHADER_GEOMETRY];
>     struct gl_shader_program *fsProg =
>        ctx->_Shader->CurrentProgram[MESA_SHADER_FRAGMENT];
> +   const struct gl_shader_program *csProg =
> +      ctx->_Shader->CurrentProgram[MESA_SHADER_COMPUTE];
>     const struct gl_vertex_program *prevVP = ctx->VertexProgram._Current;
>     const struct gl_fragment_program *prevFP = ctx->FragmentProgram._Current;
>     const struct gl_geometry_program *prevGP = ctx->GeometryProgram._Current;
> +   const struct gl_compute_program *prevCP = ctx->ComputeProgram._Current;
>     GLbitfield new_state = 0x0;
>
>     /*
> @@ -199,6 +202,16 @@ update_program(struct gl_context *ctx)
>        _mesa_reference_vertprog(ctx, &ctx->VertexProgram._Current, NULL);
>     }
>
> +   if (csProg && csProg->LinkStatus
> +       && csProg->_LinkedShaders[MESA_SHADER_COMPUTE]) {
> +      /* Use GLSL compute shader */
> +      _mesa_reference_compprog(ctx, &ctx->ComputeProgram._Current,
> +                               gl_compute_program(csProg->_LinkedShaders[MESA_SHADER_COMPUTE]->Program));
> +   } else {
> +      /* no compute program */
> +      _mesa_reference_compprog(ctx, &ctx->ComputeProgram._Current, NULL);
> +   }
> +
>     /* Let the driver know what's happening:
>      */
>     if (ctx->FragmentProgram._Current != prevFP) {
> @@ -225,6 +238,14 @@ update_program(struct gl_context *ctx)
>        }
>     }
>
> +   if (ctx->ComputeProgram._Current != prevCP) {
> +      new_state |= _NEW_PROGRAM;
> +      if (ctx->Driver.BindProgram) {
> +         ctx->Driver.BindProgram(ctx, GL_COMPUTE_PROGRAM_NV,
> +                                 (struct gl_program *) ctx->ComputeProgram._Current);
> +      }
> +   }
> +
>     return new_state;
>  }
>
> --
> 2.1.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list