mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 18:18:06 +02:00
compiler/spirv: fix image sample queries
this was only implemented for textures (I assume because drivers which implement the corresponding intrinsic don't support multisampled images), but it's also used for shader images Fixes:22fdb2f855("nir/spirv: Update to the latest revision") Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9682> (cherry picked from commit50881d59e6)
This commit is contained in:
parent
a9536794c3
commit
2e7f59ef87
2 changed files with 6 additions and 2 deletions
|
|
@ -40,7 +40,7 @@
|
|||
"description": "compiler/spirv: fix image sample queries",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"master_sha": null,
|
||||
"because_sha": "22fdb2f8551330fea308ce9cfe151ec00201e2b1"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -3141,6 +3141,7 @@ vtn_handle_image(struct vtn_builder *b, SpvOp opcode,
|
|||
break;
|
||||
|
||||
case SpvOpImageQuerySize:
|
||||
case SpvOpImageQuerySamples:
|
||||
res_val = vtn_untyped_value(b, w[3]);
|
||||
image.image = vtn_get_image(b, w[3], &access);
|
||||
image.coord = NULL;
|
||||
|
|
@ -3272,6 +3273,7 @@ vtn_handle_image(struct vtn_builder *b, SpvOp opcode,
|
|||
OP(AtomicFAddEXT, atomic_fadd)
|
||||
OP(ImageQueryFormat, format)
|
||||
OP(ImageQueryOrder, order)
|
||||
OP(ImageQuerySamples, samples)
|
||||
#undef OP
|
||||
default:
|
||||
vtn_fail_with_opcode("Invalid image opcode", opcode);
|
||||
|
|
@ -3282,6 +3284,7 @@ vtn_handle_image(struct vtn_builder *b, SpvOp opcode,
|
|||
intrin->src[0] = nir_src_for_ssa(&image.image->dest.ssa);
|
||||
|
||||
switch (opcode) {
|
||||
case SpvOpImageQuerySamples:
|
||||
case SpvOpImageQuerySize:
|
||||
case SpvOpImageQuerySizeLod:
|
||||
case SpvOpImageQueryFormat:
|
||||
|
|
@ -3313,6 +3316,7 @@ vtn_handle_image(struct vtn_builder *b, SpvOp opcode,
|
|||
nir_intrinsic_set_access(intrin, access);
|
||||
|
||||
switch (opcode) {
|
||||
case SpvOpImageQuerySamples:
|
||||
case SpvOpImageQueryFormat:
|
||||
case SpvOpImageQueryOrder:
|
||||
/* No additional sources */
|
||||
|
|
@ -5310,7 +5314,6 @@ vtn_handle_body_instruction(struct vtn_builder *b, SpvOp opcode,
|
|||
case SpvOpImageSparseDrefGather:
|
||||
case SpvOpImageQueryLod:
|
||||
case SpvOpImageQueryLevels:
|
||||
case SpvOpImageQuerySamples:
|
||||
vtn_handle_texture(b, opcode, w, count);
|
||||
break;
|
||||
|
||||
|
|
@ -5323,6 +5326,7 @@ vtn_handle_body_instruction(struct vtn_builder *b, SpvOp opcode,
|
|||
vtn_handle_image(b, opcode, w, count);
|
||||
break;
|
||||
|
||||
case SpvOpImageQuerySamples:
|
||||
case SpvOpImageQuerySizeLod:
|
||||
case SpvOpImageQuerySize: {
|
||||
struct vtn_type *image_type = vtn_get_value_type(b, w[3]);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue