From: Brian Paul Date: Mon, 31 Jul 2017 12:40:12 +0000 (-0600) Subject: svga: encode sample count in resource declarations X-Git-Tag: upstream/19.0.0~2751 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e334e104d0fe8a9704a51ad897cdae34006273da;p=platform%2Fupstream%2Fmesa.git svga: encode sample count in resource declarations No regressions before the corresponding host-side change. Reviewed-by: Neha Bhende --- diff --git a/src/gallium/drivers/svga/include/VGPU10ShaderTokens.h b/src/gallium/drivers/svga/include/VGPU10ShaderTokens.h index 4440235..1f9746e 100644 --- a/src/gallium/drivers/svga/include/VGPU10ShaderTokens.h +++ b/src/gallium/drivers/svga/include/VGPU10ShaderTokens.h @@ -267,6 +267,7 @@ typedef union { struct { unsigned int : 11; unsigned int resourceDimension : 5; /* VGPU10_RESOURCE_DIMENSION */ + unsigned int sampleCount : 7; }; struct { unsigned int : 11; diff --git a/src/gallium/drivers/svga/svga_shader.c b/src/gallium/drivers/svga/svga_shader.c index c9cc0f7..e16842f 100644 --- a/src/gallium/drivers/svga/svga_shader.c +++ b/src/gallium/drivers/svga/svga_shader.c @@ -223,6 +223,9 @@ svga_init_shader_key_common(const struct svga_context *svga, } } + assert(view->texture->nr_samples < (1 << 5)); /* 5-bit field */ + key->tex[i].num_samples = view->texture->nr_samples; + /* If we have a non-alpha view into an svga3d surface with an * alpha channel, then explicitly set the alpha channel to 1 * when sampling. Note that we need to check the diff --git a/src/gallium/drivers/svga/svga_shader.h b/src/gallium/drivers/svga/svga_shader.h index b703e04..b80cf18 100644 --- a/src/gallium/drivers/svga/svga_shader.h +++ b/src/gallium/drivers/svga/svga_shader.h @@ -105,6 +105,7 @@ struct svga_compile_key unsigned swizzle_g:3; unsigned swizzle_b:3; unsigned swizzle_a:3; + unsigned num_samples:5; /**< Up to 16 samples */ } tex[PIPE_MAX_SAMPLERS]; /* Note: svga_compile_keys_equal() depends on the variable-size * tex[] array being at the end of this structure. diff --git a/src/gallium/drivers/svga/svga_tgsi_vgpu10.c b/src/gallium/drivers/svga/svga_tgsi_vgpu10.c index 4292894..e7a636f 100644 --- a/src/gallium/drivers/svga/svga_tgsi_vgpu10.c +++ b/src/gallium/drivers/svga/svga_tgsi_vgpu10.c @@ -3067,6 +3067,7 @@ emit_resource_declarations(struct svga_shader_emitter_v10 *emit) opcode0.resourceDimension = tgsi_texture_to_resource_dimension(emit->sampler_target[i], emit->key.tex[i].is_array); + opcode0.sampleCount = emit->key.tex[i].num_samples; operand0.value = 0; operand0.numComponents = VGPU10_OPERAND_0_COMPONENT; operand0.operandType = VGPU10_OPERAND_TYPE_RESOURCE;