@ -74,7 +74,7 @@ Id StorageAtomicU64(EmitContext& ctx, const IR::Value& binding, const IR::Value&
const auto [ scope , semantics ] { AtomicArgs ( ctx ) } ;
const auto [ scope , semantics ] { AtomicArgs ( ctx ) } ;
return ( ctx . * atomic_func ) ( ctx . U64 , pointer , scope , semantics , value ) ;
return ( ctx . * atomic_func ) ( ctx . U64 , pointer , scope , semantics , value ) ;
}
}
LOG_ ERROR ( Shader_SPIRV , " Int64 atomics not supported, fallback to non-atomic " ) ;
LOG_ WARNING ( Shader_SPIRV , " Int64 atomics not supported, fallback to non-atomic " ) ;
const Id pointer { StoragePointer ( ctx , ctx . storage_types . U32x2 , & StorageDefinitions : : U32x2 ,
const Id pointer { StoragePointer ( ctx , ctx . storage_types . U32x2 , & StorageDefinitions : : U32x2 ,
binding , offset , sizeof ( u32 [ 2 ] ) ) } ;
binding , offset , sizeof ( u32 [ 2 ] ) ) } ;
const Id original_value { ctx . OpBitcast ( ctx . U64 , ctx . OpLoad ( ctx . U32 [ 2 ] , pointer ) ) } ;
const Id original_value { ctx . OpBitcast ( ctx . U64 , ctx . OpLoad ( ctx . U32 [ 2 ] , pointer ) ) } ;
@ -267,7 +267,7 @@ Id EmitStorageAtomicExchange64(EmitContext& ctx, const IR::Value& binding, const
const auto [ scope , semantics ] { AtomicArgs ( ctx ) } ;
const auto [ scope , semantics ] { AtomicArgs ( ctx ) } ;
return ctx . OpAtomicExchange ( ctx . U64 , pointer , scope , semantics , value ) ;
return ctx . OpAtomicExchange ( ctx . U64 , pointer , scope , semantics , value ) ;
}
}
LOG_ ERROR ( Shader_SPIRV , " Int64 atomics not supported, fallback to non-atomic " ) ;
LOG_ WARNING ( Shader_SPIRV , " Int64 atomics not supported, fallback to non-atomic " ) ;
const Id pointer { StoragePointer ( ctx , ctx . storage_types . U32x2 , & StorageDefinitions : : U32x2 ,
const Id pointer { StoragePointer ( ctx , ctx . storage_types . U32x2 , & StorageDefinitions : : U32x2 ,
binding , offset , sizeof ( u32 [ 2 ] ) ) } ;
binding , offset , sizeof ( u32 [ 2 ] ) ) } ;
const Id original { ctx . OpBitcast ( ctx . U64 , ctx . OpLoad ( ctx . U32 [ 2 ] , pointer ) ) } ;
const Id original { ctx . OpBitcast ( ctx . U64 , ctx . OpLoad ( ctx . U32 [ 2 ] , pointer ) ) } ;