From 644a15e69e662fb0ea74b29813e32218a6fb3033 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Tue, 4 Aug 2020 11:21:14 +0200 Subject: [PATCH] v3dv: implement nir_texop_texture_samples MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: dEQP-VK.glsl.texture_functions.query.texturesamples.* Reviewed-by: Alejandro PiƱeiro Reviewed-by: Eric Anholt Part-of: --- src/broadcom/compiler/nir_to_vir.c | 5 ++++- src/broadcom/compiler/v3d_compiler.h | 1 + src/broadcom/vulkan/v3dv_uniforms.c | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c index a89dac44c90..1e7c3b7371c 100644 --- a/src/broadcom/compiler/nir_to_vir.c +++ b/src/broadcom/compiler/nir_to_vir.c @@ -609,6 +609,10 @@ ntq_emit_tex(struct v3d_compile *c, nir_tex_instr *instr) ntq_store_dest(c, &instr->dest, 0, vir_uniform(c, QUNIFORM_TEXTURE_LEVELS, unit)); return; + case nir_texop_texture_samples: + ntq_store_dest(c, &instr->dest, 0, + vir_uniform(c, QUNIFORM_TEXTURE_SAMPLES, unit)); + return; case nir_texop_txs: ntq_emit_txs(c, instr); return; @@ -3022,7 +3026,6 @@ vir_check_payload_w(struct v3d_compile *c) } } } - } void diff --git a/src/broadcom/compiler/v3d_compiler.h b/src/broadcom/compiler/v3d_compiler.h index 2aef79213aa..b76aaff499b 100644 --- a/src/broadcom/compiler/v3d_compiler.h +++ b/src/broadcom/compiler/v3d_compiler.h @@ -241,6 +241,7 @@ enum quniform_contents { QUNIFORM_TEXTURE_DEPTH, QUNIFORM_TEXTURE_ARRAY_SIZE, QUNIFORM_TEXTURE_LEVELS, + QUNIFORM_TEXTURE_SAMPLES, QUNIFORM_UBO_ADDR, diff --git a/src/broadcom/vulkan/v3dv_uniforms.c b/src/broadcom/vulkan/v3dv_uniforms.c index b162e2c6366..1978568546f 100644 --- a/src/broadcom/vulkan/v3dv_uniforms.c +++ b/src/broadcom/vulkan/v3dv_uniforms.c @@ -254,6 +254,9 @@ get_texture_size_from_image_view(struct v3dv_image_view *image_view, } case QUNIFORM_TEXTURE_LEVELS: return image_view->max_level - image_view->base_level + 1; + case QUNIFORM_TEXTURE_SAMPLES: + assert(image_view->image); + return image_view->image->samples; default: unreachable("Bad texture size field"); } @@ -395,6 +398,7 @@ v3dv_write_uniforms_wg_offsets(struct v3dv_cmd_buffer *cmd_buffer, case QUNIFORM_TEXTURE_DEPTH: case QUNIFORM_TEXTURE_ARRAY_SIZE: case QUNIFORM_TEXTURE_LEVELS: + case QUNIFORM_TEXTURE_SAMPLES: cl_aligned_u32(&uniforms, get_texture_size(cmd_buffer, pipeline,