diff options
author | Iago Toral Quiroga <itoral@igalia.com> | 2020-08-04 11:21:14 +0200 |
---|---|---|
committer | Marge Bot <eric+marge@anholt.net> | 2020-10-13 21:21:32 +0000 |
commit | 644a15e69e662fb0ea74b29813e32218a6fb3033 (patch) | |
tree | ddbffab0458c6db3425fcf3fd87f55fed28937f5 /src | |
parent | 6ee88f0acde103758c02bbb423cb281fe3ecc5d0 (diff) |
v3dv: implement nir_texop_texture_samples
Fixes:
dEQP-VK.glsl.texture_functions.query.texturesamples.*
Reviewed-by: Alejandro PiƱeiro <apinheiro@igalia.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766>
Diffstat (limited to 'src')
-rw-r--r-- | src/broadcom/compiler/nir_to_vir.c | 5 | ||||
-rw-r--r-- | src/broadcom/compiler/v3d_compiler.h | 1 | ||||
-rw-r--r-- | src/broadcom/vulkan/v3dv_uniforms.c | 4 |
3 files changed, 9 insertions, 1 deletions
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, |