mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 12:30:09 +01: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>
This commit is contained in:
parent
a6c3d0f92b
commit
2de85eb97a
1 changed files with 10 additions and 2 deletions
|
|
@ -3371,17 +3371,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