Skip to content

Commit 1ae14b9

Browse files
committed
thread access qualifier tyvar through to codegen
1 parent 96ccdce commit 1ae14b9

File tree

2 files changed

+22
-2
lines changed
  • crates

2 files changed

+22
-2
lines changed

crates/rustc_codegen_spirv/src/abi.rs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
use crate::attr::{AggregatedSpirvAttributes, IntrinsicType};
55
use crate::codegen_cx::CodegenCx;
66
use crate::spirv_type::SpirvType;
7-
use rspirv::spirv::{StorageClass, Word};
7+
use rspirv::spirv::{AccessQualifier, StorageClass, Word};
88
use rustc_data_structures::fx::FxHashMap;
99
use rustc_errors::ErrorGuaranteed;
1010
use rustc_index::Idx;
@@ -883,7 +883,26 @@ fn trans_intrinsic_type<'tcx>(
883883
let multisampled = const_int_value(cx, args.const_at(4))?;
884884
let sampled = const_int_value(cx, args.const_at(5))?;
885885
let image_format = const_int_value(cx, args.const_at(6))?;
886-
let access_qualifier = const_int_value(cx, args.const_at(7)).ok();
886+
887+
let access_qualifier_ty = args.type_at(8);
888+
let access_qualifier: Option<AccessQualifier> = if let TyKind::Adt(def, _) =
889+
access_qualifier_ty.kind()
890+
{
891+
match cx.tcx.def_path_str(def.did()).as_str() {
892+
"spirv_std::image::ImageAccessReadOnly" => Some(AccessQualifier::ReadOnly),
893+
"spirv_std::image::ImageAccessWriteOnly" => Some(AccessQualifier::WriteOnly),
894+
"spirv_std::image::ImageAccessReadWrite" => Some(AccessQualifier::ReadWrite),
895+
"spirv_std::image::ImageAccessUnknown" => None,
896+
s => {
897+
return Err(cx
898+
.tcx
899+
.dcx()
900+
.err(format!("Invalid image access qualifier: '{s}'")));
901+
}
902+
}
903+
} else {
904+
return Err(cx.tcx.dcx().err("Invalid image access qualifier"));
905+
};
887906

888907
let ty = SpirvType::Image {
889908
sampled_type,

crates/spirv-std/macros/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ use std::fmt::Write;
9494
/// [multisampled[=<true|false>],]
9595
/// [arrayed[=<true|false>],]
9696
/// [depth[=<true|false>],]
97+
/// [access[=<readonly|writeonly|readwrite>],]
9798
/// )
9899
/// ```
99100
///

0 commit comments

Comments
 (0)