mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 00:38:48 +02:00
radv: fix texturesamples to handle single sample case
We can only read the valid samples if this is an MSAA
texture, which means the type field must be 0x14 or 0x15.
This fixes:
dEQP-VK.glsl.texture_functions.query.texturesamples.*
Cc: "13.0" <mesa-stable@lists.freedesktop.org>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Signed-off-by: Dave Airlie <airlied@redhat.com>
(cherry picked from commit 2de85eb97a)
This commit is contained in:
parent
953030bbb3
commit
6520a64c4d
1 changed files with 10 additions and 2 deletions
|
|
@ -3299,17 +3299,25 @@ static void visit_tex(struct nir_to_llvm_context *ctx, nir_tex_instr *instr)
|
|||
}
|
||||
|
||||
if (instr->op == nir_texop_texture_samples) {
|
||||
LLVMValueRef res, samples;
|
||||
LLVMValueRef res, samples, is_msaa;
|
||||
res = LLVMBuildBitCast(ctx->builder, res_ptr, ctx->v8i32, "");
|
||||
samples = LLVMBuildExtractElement(ctx->builder, res,
|
||||
LLVMConstInt(ctx->i32, 3, false), "");
|
||||
is_msaa = LLVMBuildLShr(ctx->builder, samples,
|
||||
LLVMConstInt(ctx->i32, 28, false), "");
|
||||
is_msaa = LLVMBuildAnd(ctx->builder, is_msaa,
|
||||
LLVMConstInt(ctx->i32, 0xe, false), "");
|
||||
is_msaa = LLVMBuildICmp(ctx->builder, LLVMIntEQ, is_msaa,
|
||||
LLVMConstInt(ctx->i32, 0xe, false), "");
|
||||
|
||||
samples = LLVMBuildLShr(ctx->builder, samples,
|
||||
LLVMConstInt(ctx->i32, 16, false), "");
|
||||
samples = LLVMBuildAnd(ctx->builder, samples,
|
||||
LLVMConstInt(ctx->i32, 0xf, false), "");
|
||||
samples = LLVMBuildShl(ctx->builder, ctx->i32one,
|
||||
samples, "");
|
||||
|
||||
samples = LLVMBuildSelect(ctx->builder, is_msaa, samples,
|
||||
ctx->i32one, "");
|
||||
result = samples;
|
||||
goto write_result;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue