summaryrefslogtreecommitdiff
path: root/src/broadcom
diff options
context:
space:
mode:
authorIago Toral Quiroga <itoral@igalia.com>2020-08-04 11:21:14 +0200
committerMarge Bot <eric+marge@anholt.net>2020-10-13 21:21:32 +0000
commit644a15e69e662fb0ea74b29813e32218a6fb3033 (patch)
treeddbffab0458c6db3425fcf3fd87f55fed28937f5 /src/broadcom
parent6ee88f0acde103758c02bbb423cb281fe3ecc5d0 (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/broadcom')
-rw-r--r--src/broadcom/compiler/nir_to_vir.c5
-rw-r--r--src/broadcom/compiler/v3d_compiler.h1
-rw-r--r--src/broadcom/vulkan/v3dv_uniforms.c4
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,