[Mesa-dev] [PATCH] st/mesa: fix a segfault when prog->sh.data is NULL
Samuel Pitoiset
samuel.pitoiset at gmail.com
Thu Jan 5 14:08:16 UTC 2017
This fixes a bunch of arb_fragment_program piglit tests.
Thanks.
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
On 01/05/2017 01:48 PM, Marek Olšák wrote:
> From: Marek Olšák <marek.olsak at amd.com>
>
> Broken by:
> st/mesa: get Version from gl_program rather than gl_shader_program
> ---
> src/mesa/state_tracker/st_atom_texture.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/src/mesa/state_tracker/st_atom_texture.c b/src/mesa/state_tracker/st_atom_texture.c
> index 58e753d..76e512f 100644
> --- a/src/mesa/state_tracker/st_atom_texture.c
> +++ b/src/mesa/state_tracker/st_atom_texture.c
> @@ -116,25 +116,27 @@ update_textures(struct st_context *st,
> if (samplers_used == 0x0 && old_max == 0)
> return;
>
> *num_textures = 0;
>
> /* loop over sampler units (aka tex image units) */
> for (unit = 0; unit < max_units; unit++, samplers_used >>= 1) {
> struct pipe_sampler_view *sampler_view = NULL;
>
> if (samplers_used & 1) {
> + /* prog->sh.data is NULL if it's ARB_fragment_program */
> + unsigned glsl_version = prog->sh.data ? prog->sh.data->Version : 0;
> const GLuint texUnit = prog->SamplerUnits[unit];
> GLboolean retval;
>
> retval = update_single_texture(st, &sampler_view, texUnit,
> - prog->sh.data->Version);
> + glsl_version);
> if (retval == GL_FALSE)
> continue;
>
> *num_textures = unit + 1;
> }
> else if (samplers_used == 0 && unit >= old_max) {
> /* if we've reset all the old views and we have no more new ones */
> break;
> }
>
>
More information about the mesa-dev
mailing list