From: Dave Airlie Date: Wed, 9 Oct 2019 03:12:31 +0000 (+1000) Subject: llvmpipe: add support for tg4 component selection. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=05b008c961faf4de322bbf08a452893f01fb143d;p=mesa.git llvmpipe: add support for tg4 component selection. This is needed as part of GLES3.1 and helps for ARB_gpu_shader5. Fixes: KHR-GLES31.core.texture_gather.* cases Reviewed-by: Roland Scheidegger --- diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c index 1f42c4ef549..9bfe41b9062 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c @@ -2237,6 +2237,10 @@ emit_tex( struct lp_build_tgsi_soa_context *bld, lod_property = lp_build_lod_property(&bld->bld_base, inst, 0); } + if (sampler_op == LP_SAMPLER_OP_GATHER) { + uint32_t comp_val = inst->Src[sampler_reg].Register.SwizzleX; + sample_key |= (comp_val << LP_SAMPLER_GATHER_COMP_SHIFT); + } if (modifier == LP_BLD_TEX_MODIFIER_PROJECTED) { oow = lp_build_emit_fetch(&bld->bld_base, inst, 0, 3); oow = lp_build_rcp(&bld->bld_base.base, oow); diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c index 96c7623c461..63c1793620d 100644 --- a/src/gallium/drivers/llvmpipe/lp_screen.c +++ b/src/gallium/drivers/llvmpipe/lp_screen.c @@ -388,6 +388,7 @@ llvmpipe_get_param(struct pipe_screen *screen, enum pipe_cap param) case PIPE_CAP_MAX_SHADER_BUFFER_SIZE: return LP_MAX_TGSI_SHADER_BUFFER_SIZE; case PIPE_CAP_FRAMEBUFFER_NO_ATTACHMENT: + case PIPE_CAP_TGSI_TG4_COMPONENT_IN_SWIZZLE: return 1; default: return u_pipe_screen_get_param_defaults(screen, param);