From e63fec29a1bde71a707ee6ac89763896e33e3c0c Mon Sep 17 00:00:00 2001 From: Serge Martin Date: Sun, 6 Dec 2015 15:32:15 +0100 Subject: [PATCH] freedreno: fix bind_sampler_states when hwcso is NULL src/gallium/tests/trivial/compute.c expects samplers to be cleaned when the samplers list is NULL. Like in radeon, the function behave like when the number of samplers parameter is set to 0. [small s/hwsco/hwcso/ typo fix] Signed-off-by: Rob Clark --- src/gallium/drivers/freedreno/a2xx/fd2_texture.c | 3 +++ src/gallium/drivers/freedreno/a3xx/fd3_texture.c | 3 +++ src/gallium/drivers/freedreno/a4xx/fd4_texture.c | 3 +++ 3 files changed, 9 insertions(+) diff --git a/src/gallium/drivers/freedreno/a2xx/fd2_texture.c b/src/gallium/drivers/freedreno/a2xx/fd2_texture.c index 90013e260ce..6e4b5a5e72c 100644 --- a/src/gallium/drivers/freedreno/a2xx/fd2_texture.c +++ b/src/gallium/drivers/freedreno/a2xx/fd2_texture.c @@ -106,6 +106,9 @@ fd2_sampler_states_bind(struct pipe_context *pctx, unsigned shader, unsigned start, unsigned nr, void **hwcso) { + if (!hwcso) + nr = 0; + if (shader == PIPE_SHADER_FRAGMENT) { struct fd_context *ctx = fd_context(pctx); diff --git a/src/gallium/drivers/freedreno/a3xx/fd3_texture.c b/src/gallium/drivers/freedreno/a3xx/fd3_texture.c index 99ae99ea0c1..9d54d41e1ad 100644 --- a/src/gallium/drivers/freedreno/a3xx/fd3_texture.c +++ b/src/gallium/drivers/freedreno/a3xx/fd3_texture.c @@ -149,6 +149,9 @@ fd3_sampler_states_bind(struct pipe_context *pctx, uint16_t saturate_s = 0, saturate_t = 0, saturate_r = 0; unsigned i; + if (!hwcso) + nr = 0; + for (i = 0; i < nr; i++) { if (hwcso[i]) { struct fd3_sampler_stateobj *sampler = diff --git a/src/gallium/drivers/freedreno/a4xx/fd4_texture.c b/src/gallium/drivers/freedreno/a4xx/fd4_texture.c index 0eba75577b0..38348580e21 100644 --- a/src/gallium/drivers/freedreno/a4xx/fd4_texture.c +++ b/src/gallium/drivers/freedreno/a4xx/fd4_texture.c @@ -150,6 +150,9 @@ fd4_sampler_states_bind(struct pipe_context *pctx, uint16_t saturate_s = 0, saturate_t = 0, saturate_r = 0; unsigned i; + if (!hwcso) + nr = 0; + for (i = 0; i < nr; i++) { if (hwcso[i]) { struct fd4_sampler_stateobj *sampler = -- 2.30.2