r600: fix sampler indexing with texture buffers sampling

This fixes the new piglit test.
While here also fix up the logic for early exit of setting up driver consts.

Tested-by: Konstantin Kharlamov <hi-angel@yandex.ru>
Reviewed-by: Reviewed-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Roland Scheidegger
2018-01-02 23:03:44 +01:00
parent 6c8d6ce982
commit 762ccf483a
2 changed files with 4 additions and 2 deletions
+2
View File
@@ -6856,6 +6856,7 @@ static int do_vtx_fetch_inst(struct r600_shader_ctx *ctx, boolean src_requires_l
struct tgsi_full_instruction *inst = &ctx->parse.FullToken.FullInstruction;
int src_gpr, r, i;
int id = tgsi_tex_get_src_gpr(ctx, 1);
int sampler_index_mode = inst->Src[1].Indirect.Index == 2 ? 2 : 0; // CF_INDEX_1 : CF_INDEX_NONE
src_gpr = tgsi_tex_get_src_gpr(ctx, 0);
if (src_requires_loading) {
@@ -6887,6 +6888,7 @@ static int do_vtx_fetch_inst(struct r600_shader_ctx *ctx, boolean src_requires_l
vtx.dst_sel_z = (inst->Dst[0].Register.WriteMask & 4) ? 2 : 7; /* SEL_Z */
vtx.dst_sel_w = (inst->Dst[0].Register.WriteMask & 8) ? 3 : 7; /* SEL_W */
vtx.use_const_fields = 1;
vtx.buffer_index_mode = sampler_index_mode;
if ((r = r600_bytecode_add_vtx(ctx->bc, &vtx)))
return r;
+2 -2
View File
@@ -1380,8 +1380,8 @@ void eg_setup_buffer_constants(struct r600_context *rctx, int shader_type)
}
if (!samplers->views.dirty_buffer_constants &&
(images && !images->dirty_buffer_constants) &&
(buffers && !buffers->dirty_buffer_constants))
!(images && images->dirty_buffer_constants) &&
!(buffers && buffers->dirty_buffer_constants))
return;
if (images)