123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996 |
- // Copyright (C) Microsoft Corporation. All rights reserved.
- // This file is distributed under the University of Illinois Open Source License. See LICENSE.TXT for details.
- //
- // See hctdb.py for the implementation of intrinsic file processing.
- //
- // Intrinsic declarations are grouped into namespaces that
- // turn into qualifiers for the generated names. This lets
- // intrinsics be grouped into sets such as base function-style
- // intrinsics, Texture1D intrinsics, etc.
- //
- // Intrinsic declarations are a line of the form:
- //
- // <type> \[\[[attr]\]\] <name>([<qual> <type> <name> [, ... ]]) [ : <op>]
- //
- // <name> is a C++ identifier for the intrinsic or argument name.
- //
- // <op> is the D3DIOP_* (or D3DMOP_* if the namespace has "Method"
- // in the name) enumerant. By default it's the same as the intrinsic
- // name, but <op> can be given to set it arbitrarily.
- //
- // <qual> is one of "in", "out" or "inout" plus optional qualifiers
- // "col_major", "row_major".
- // variadic functions assume <qual> of "in" for any arguments that are not
- // explicitly specified.
- //
- // <type> is where most of the work goes. <type> lets you
- // specify particular types and layouts for arguments and
- // also lets you indicate which types must share characteristics
- // with other types. <type> can be a simple scalar like "bool"
- // or it can require an N-vector with "bool<N>" or an N-by-M
- // matrix with "bool<N, M>". You can refer to input columns
- // and rows with r, c, r2 and c2, so "float<r, r>" means a
- // float matrix with the same number of rows and columns and
- // the size comes from the parse input. "<>" means any kind
- // of layout is acceptable.
- //
- // Basic types are bool, int, uint, u64, float, sampler1d, sampler2d,
- // sampler3d, sampler_cube, sampler_cmp, sampler, wave and void.
- // There are meta-types too: any_int, uint_only, numeric and any.
- //
- // Along with a type and layout you can also give relations
- // between types in an intrinsic. The types of an intrinsic
- // are indexed start with 0 at the return type and increasing
- // left to right (first argument is 1, second is 2, etc.).
- // $match<X, Y> says that the template type (layout) of
- // a particular type must match the template type of the X'th
- // type and that the component type (base type) of a particular
- // type must match the component type of the Y'th type.
- // For example, in "float<> acos(in $match<0, 0> float<> x)" the
- // $match<0, 0> means that both the template and component type
- // of the argument must match that of the return type (index 0).
- // The float<> means that any layout (scalar/vector/matrix) of
- // floats is acceptable, and then the parameter and return
- // type must match.
- //
- // A value of -1 for X in $match is a special marker for
- // object method intrinsics meaning that the type is taken
- // from the object's template type.
- //
- // A value of -1 for Y in $match is a special marker for
- // object method intrinsics meaning that the component type
- // of the type is taken from the first subelement of the
- // object's template type.
- //
- // Certain $match situations are aliased for readability
- // and conciseness.
- //
- // $classT - This equates to $match<-1, 0> void and is
- // used for method return types that are set from
- // the object template type.
- //
- // $funcT - This equates to $match<-3, 0> void and is
- // used for method return types that are set from
- // the function template type.
- //
- // $typeN - This equates to $match<N, N> <argtypeN> and is
- // shorthand for a direct match of another type.
- // For example, in "$type1 abs(in numeric<> x)" the
- // $type means that the return type is a direct match
- // of the argument type ($type cannot be used on the
- // first argument since there's nothing to match at
- // that point and can't refer to the return type as
- // it is matched after the inputs).
- //
- namespace Intrinsics {
- int<4> [[rn]] D3DCOLORtoUBYTE4(in $match<0, 1> float<4> x) : d3dcolortoubyte4;
- uint [[rn]] GetRenderTargetSampleCount() : rtsampleinfo;
- float<2> [[rn]] GetRenderTargetSamplePosition(in int s) : rtsamplepos;
- void [[]] abort();
- $type1 [[rn,unsigned_op=uabs]] abs(in numeric<> x);
- $type1 [[rn]] acos(in float_like<> x);
- bool [[rn]] all(in any<> x);
- void [[]] AllMemoryBarrier() : syncallmemory_ug;
- void [[]] AllMemoryBarrierWithGroupSync() : syncgroupandallmemory_ug;
- bool [[rn]] any(in any<> x);
- double<> [[rn]] asdouble(in $match<0, 1> uint_only<> x, in $match<0, 2> uint_only<> y) : reinterpret_fuse_double;
- float<> [[rn]] asfloat(in $match<0, 1> numeric32_only<> x) : reinterpret_float;
- float16_t<> [[rn]] asfloat16(in $match<0,1> numeric16_only<> x) : reinterpret_float16;
- int16_t<> [[rn]] asint16(in $match<0,1> numeric16_only<> x) : reinterpret_int16;
- $type1 [[rn]] asin(in float_like<> x);
- int<> [[rn]] asint(in $match<0, 1> numeric32_only<> x) : reinterpret_int;
- void [[]] asuint(in double<> d, out $match<1, 2> uint<> x, out $match<1, 3> uint<> y) : reinterpret_split_double_uint;
- uint<> [[rn]] asuint(in $match<0, 1> numeric32_only<> x) : reinterpret_uint;
- uint16_t<> [[rn]] asuint16(in $match<0,1> numeric16_only<> x) : reinterpret_uint16;
- $type1 [[rn]] atan(in float_like<> x);
- $type1 [[rn]] atan2(in float_like<> x, in $type1 y);
- $type1 [[rn]] ceil(in float_like<> x);
- $type1 [[rn,unsigned_op=uclamp]] clamp(in numeric<> x, in $type1 min, in $type1 max);
- void [[]] clip(in float<> x);
- $type1 [[rn]] cos(in float_like<> x);
- $type1 [[rn]] cosh(in float_like<> x);
- $match<1, 0> uint<> [[rn]] countbits(in any_int<> x);
- $type1 [[rn]] cross(in float_like<3> a, in $type1 b);
- $type1 [[rn]] ddx(in float_like<> x);
- $type1 [[rn]] ddx_coarse(in float_like<> x);
- $type1 [[rn]] ddx_fine(in float_like<> x);
- $type1 [[rn]] ddy(in float_like<> x);
- $type1 [[rn]] ddy_coarse(in float_like<> x);
- $type1 [[rn]] ddy_fine(in float_like<> x);
- $type1 [[rn]] degrees(in float_like<> x);
- $match<0, 1> float_like [[rn]] determinant(in float_like<r, r> x);
- void [[]] DeviceMemoryBarrier() : syncdevicememory_ug;
- void [[]] DeviceMemoryBarrierWithGroupSync() : syncgroupanddevicememory_ug;
- $match<0, 1> float_like [[rn]] distance(in float_like<c> a, in $type1 b);
- $match<0, 1> numeric [[rn]] dot(in numeric<c> a, in $type1 b);
- $type1 [[rn]] dst(in numeric<4> a, in $type1 b);
- // void errorf(in string Format, ...);
- $type1 [[rn]] EvaluateAttributeAtSample(in numeric<> value, in uint index);
- $type1 [[rn]] EvaluateAttributeCentroid(in numeric<> value);
- $type1 [[rn]] EvaluateAttributeSnapped(in numeric<> value, in int<2> offset);
- $type1 [[rn]] GetAttributeAtVertex(in numeric<> value, in uint VertexID);
- $type1 [[rn]] exp(in float_like<> x);
- $type1 [[rn]] exp2(in float_like<> x);
- float<> [[rn]] f16tof32(in uint<> x);
- // Use float for DXIL don't support f16 on f32tof16.
- uint<> [[rn]] f32tof16(in float<> x);
- $type1 [[rn]] faceforward(in float_like<c> N, in $type1 I, in $type1 Ng);
- $match<1, 0> uint<> [[rn,unsigned_op=ufirstbithigh,overload=0]] firstbithigh(in any_int<> x);
- $match<1, 0> uint<> [[rn]] firstbitlow(in any_int<> x);
- $type1 [[rn]] floor(in float_like<> x);
- $type1 [[rn]] fma(in double_only<> a, in $type1 b, in $type1 c);
- $type1 [[rn]] fmod(in float_like<> a, in $type1 b);
- $type1 [[rn]] frac(in float_like<> x);
- $type1 [[]] frexp(in float<> x, out $type1 exp);
- $type1 [[rn]] fwidth(in float_like<> x);
- void [[]] GroupMemoryBarrier() : syncsharedmemory;
- void [[]] GroupMemoryBarrierWithGroupSync() : syncgroupandsharedmemory;
- // 64-bit integers interlocks
- void [[]] InterlockedAdd(in int64_only result, in u64 value);
- void [[]] InterlockedAdd(in int64_only result, in u64 value, out any_int64 original) : interlockedadd_immediate;
- void [[unsigned_op=InterlockedUMin,overload=0]] InterlockedMin(in int64_only result, in any_int64 value) : interlockedmin;
- void [[unsigned_op=InterlockedUMin,overload=0]] InterlockedMin(in int64_only result, in any_int64 value, out any_int64 original) : interlockedmin_immediate;
- void [[unsigned_op=InterlockedUMax,overload=0]] InterlockedMax(in int64_only result, in any_int64 value) : interlockedmax;
- void [[unsigned_op=InterlockedUMax,overload=0]] InterlockedMax(in int64_only result, in any_int64 value, out any_int64 original) : interlockedmax_immediate;
- void [[]] InterlockedAnd(in int64_only result, in u64 value);
- void [[]] InterlockedAnd(in int64_only result, in u64 value, out any_int64 original) : interlockedand_immediate;
- void [[]] InterlockedOr(in int64_only result, in u64 value);
- void [[]] InterlockedOr(in int64_only result, in u64 value, out any_int64 original) : interlockedor_immediate;
- void [[]] InterlockedXor(in int64_only result, in u64 value);
- void [[]] InterlockedXor(in int64_only result, in u64 value, out any_int64 original) : interlockedxor_immediate;
- void [[]] InterlockedCompareStore(in int64_only result, in u64 compare, in u64 value);
- void [[]] InterlockedExchange(in int64_only result, in any_int64 value, out any_int64 original);
- void [[]] InterlockedCompareExchange(in int64_only result, in u64 compare, in u64 value, out any_int64 original);
- // floating point interlocks
- void [[]] InterlockedExchange(in float32_only result, in float value, out float original);
- void [[]] InterlockedCompareStoreFloatBitwise(in float32_only result, in float compare, in float value);
- void [[]] InterlockedCompareExchangeFloatBitwise(in float32_only result, in float compare, in float value, out float original);
- // 32-bit integer interlocks
- void [[]] InterlockedAdd(in int32_only result, in uint value);
- void [[]] InterlockedAdd(in int32_only result, in uint value, out any_int32 original) : interlockedadd_immediate;
- void [[unsigned_op=InterlockedUMin,overload=0]] InterlockedMin(in int32_only result, in any_int32 value) : interlockedmin;
- void [[unsigned_op=InterlockedUMin,overload=0]] InterlockedMin(in int32_only result, in any_int32 value, out any_int32 original) : interlockedmin_immediate;
- void [[unsigned_op=InterlockedUMax,overload=0]] InterlockedMax(in int32_only result, in any_int32 value) : interlockedmax;
- void [[unsigned_op=InterlockedUMax,overload=0]] InterlockedMax(in int32_only result, in any_int32 value, out any_int32 original) : interlockedmax_immediate;
- void [[]] InterlockedAnd(in int32_only result, in uint value);
- void [[]] InterlockedAnd(in int32_only result, in uint value, out any_int32 original) : interlockedand_immediate;
- void [[]] InterlockedOr(in int32_only result, in uint value);
- void [[]] InterlockedOr(in int32_only result, in uint value, out any_int32 original) : interlockedor_immediate;
- void [[]] InterlockedXor(in int32_only result, in uint value);
- void [[]] InterlockedXor(in int32_only result, in uint value, out any_int32 original) : interlockedxor_immediate;
- void [[]] InterlockedCompareStore(in int32_only result, in uint compare, in uint value);
- void [[]] InterlockedExchange(in int32_only result, in uint value, out any_int32 original);
- void [[]] InterlockedCompareExchange(in int32_only result, in uint compare, in uint value, out any_int32 original);
- $match<1, 0> bool<> [[rn]] isfinite(in float<> x);
- $match<1, 0> bool<> [[rn]] isinf(in float<> x);
- $match<1, 0> bool<> [[rn]] isnan(in float<> x);
- $type1 [[rn]] ldexp(in float_like<> x, in $type1 exp);
- $match<0, 1> float_like [[rn]] length(in float_like<c> x);
- $type1 [[rn]] lerp(in float_like<> a, in $type1 b, in $type1 s);
- $match<0, 1> float_like<4> [[rn]] lit(in float_like l, in $match<2, 1> float_like h, in $match<3, 1> float_like m);
- $type1 [[rn]] log(in float_like<> x);
- $type1 [[rn]] log10(in float_like<> x);
- $type1 [[rn]] log2(in float_like<> x);
- $type1 [[rn,unsigned_op=umad]] mad(in numeric<> a, in $type1 b, in $type1 c);
- $type1 [[rn,unsigned_op=umax]] max(in numeric<> a, in $type1 b);
- $type1 [[rn,unsigned_op=umin]] min(in numeric<> a, in $type1 b);
- $type1 [[]] modf(in float_like<> x, out $type1 ip);
- uint<4> [[rn]] msad4(in uint reference, in uint<2> source, in uint<4> accum);
- numeric [[rn]] mul(in $match<1, 0> numeric a, in $match<2, 0> numeric b) : mul_ss;
- numeric<c2> [[rn]] mul(in $match<1, 0> numeric a, in $match<2, 0> numeric<c2> b) : mul_sv;
- numeric<r2, c2> [[rn]] mul(in $match<1, 0> numeric a, in $match<2, 0> numeric<r2, c2> b) : mul_sm;
- numeric<c> [[rn]] mul(in $match<1, 0> numeric<c> a, in $match<2, 0> numeric b) : mul_vs;
- numeric [[rn]] mul(in $match<1, 0> numeric<c> a, in $match<2, 0> numeric<c> b) : mul_vv;
- numeric<c2> [[rn,unsigned_op=umul]] mul(in $match<1, 0> numeric<c> a, in col_major $match<2, 0> numeric<c, c2> b) : mul_vm;
- numeric<r, c> [[rn]] mul(in $match<1, 0> numeric<r, c> a, in $match<2, 0> numeric b) : mul_ms;
- numeric<r> [[rn,unsigned_op=umul]] mul(in row_major $match<1, 0> numeric<r, c> a, in $match<2, 0> numeric<c> b) : mul_mv;
- numeric<r, c2> [[rn,unsigned_op=umul]] mul(in row_major $match<1, 0> numeric<r, c> a, in col_major $match<2, 0> numeric<c, c2> b) : mul_mm;
- $type1 [[rn]] normalize(in float_like<c> x);
- $type1 [[rn]] pow(in float_like<> x, in $type1 y);
- void [[]] printf(in string Format, ...);
- void [[]] Process2DQuadTessFactorsAvg(in float<4> RawEdgeFactors, in float<2> InsideScale, out float<4> RoundedEdgeFactors, out float<2> RoundedInsideFactors, out float<2> UnroundedInsideFactors) : ptf_2dqavg;
- void [[]] Process2DQuadTessFactorsMax(in float<4> RawEdgeFactors, in float<2> InsideScale, out float<4> RoundedEdgeFactors, out float<2> RoundedInsideFactors, out float<2> UnroundedInsideFactors) : ptf_2dqmax;
- void [[]] Process2DQuadTessFactorsMin(in float<4> RawEdgeFactors, in float<2> InsideScale, out float<4> RoundedEdgeFactors, out float<2> RoundedInsideFactors, out float<2> UnroundedInsideFactors) : ptf_2dqmin;
- void [[]] ProcessIsolineTessFactors(in float<1> RawDetailFactor, in float<1> RawDensityFactor, out float<1> RoundedDetailFactorr, out float<1> RoundedDensityFactor) : ptf_i;
- void [[]] ProcessQuadTessFactorsAvg(in float<4> RawEdgeFactors, in float<1> InsideScale, out float<4> RoundedEdgeFactors, out float<2> RoundedInsideFactors, out float<2> UnroundedInsideFactors) : ptf_qavg;
- void [[]] ProcessQuadTessFactorsMax(in float<4> RawEdgeFactors, in float<1> InsideScale, out float<4> RoundedEdgeFactors, out float<2> RoundedInsideFactors, out float<2> UnroundedInsideFactors) : ptf_qmax;
- void [[]] ProcessQuadTessFactorsMin(in float<4> RawEdgeFactors, in float<1> InsideScale, out float<4> RoundedEdgeFactors, out float<2> RoundedInsideFactors, out float<2> UnroundedInsideFactors) : ptf_qmin;
- void [[]] ProcessTriTessFactorsAvg(in float<3> RawEdgeFactors, in float<1> InsideScale, out float<3> RoundedEdgeFactors, out float<1> RoundedInsideFactor, out float<1> UnroundedInsideFactor) : ptf_tmin;
- void [[]] ProcessTriTessFactorsMax(in float<3> RawEdgeFactors, in float<1> InsideScale, out float<3> RoundedEdgeFactors, out float<1> RoundedInsideFactor, out float<1> UnroundedInsideFactor) : ptf_tmax;
- void [[]] ProcessTriTessFactorsMin(in float<3> RawEdgeFactors, in float<1> InsideScale, out float<3> RoundedEdgeFactors, out float<1> RoundedInsideFactor, out float<1> UnroundedInsideFactor) : ptf_tavg;
- $type1 [[rn]] radians(in float_like<> x);
- $type1 [[rn]] rcp(in any_float<> x) : rcp_approx;
- $type1 [[rn]] reflect(in float_like<c> i, in $type1 n);
- $type1 [[rn]] refract(in float_like<c> i, in $type1 n, in float_like ri);
- $type1 [[rn]] reversebits(in any_int<> x);
- $type1 [[rn]] round(in float_like<> x);
- $type1 [[rn]] rsqrt(in float_like<> x);
- $type1 [[rn]] saturate(in any_float<> x);
- $match<1, 0> int<> [[rn,unsigned_op=usign,overload=0]] sign(in numeric<> x);
- $type1 [[rn]] sin(in float_like<> x);
- void [[]] sincos(in float_like<> x, out $type1 s, out $type1 c);
- $type1 [[rn]] sinh(in float_like<> x);
- $type1 [[rn]] smoothstep(in float_like<> a, in $type1 b, in $type1 x);
- void [[]] source_mark();
- $type1 [[rn]] sqrt(in float_like<> x);
- $type1 [[rn]] step(in float_like<> a, in $type1 x);
- $type1 [[rn]] tan(in float_like<> x);
- $type1 [[rn]] tanh(in float_like<> x);
- float_like<4> [[ro]] tex1D(in sampler1d s, in float_like x) : tex1d;
- float_like<4> [[ro]] tex1D(in sampler1d s, in float_like<1> x, in $type2 ddx, in $type2 ddy) : tex1d_dd;
- float_like<4> [[ro]] tex1Dbias(in sampler1d s, in float_like<4> x) : tex1d_bias;
- float_like<4> [[ro]] tex1Dgrad(in sampler1d s, in float_like<1> x, in $type2 ddx, in $type2 ddy) : tex1d_dd;
- float_like<4> [[ro]] tex1Dlod(in sampler1d s, in float_like<4> x) : tex1d_lod;
- float_like<4> [[ro]] tex1Dproj(in sampler1d s, in float_like<4> x) : tex1d_proj;
- float_like<4> [[ro]] tex2D(in sampler2d s, in float_like<2> x) : tex2d;
- float_like<4> [[ro]] tex2D(in sampler2d s, in float_like<2> x, in $type2 ddx, in $type2 ddy) : tex2d_dd;
- float_like<4> [[ro]] tex2Dbias(in sampler2d s, in float_like<4> x) : tex2d_bias;
- float_like<4> [[ro]] tex2Dgrad(in sampler2d s, in float_like<2> x, in $type2 ddx, in $type2 ddy) : tex2d_dd;
- float_like<4> [[ro]] tex2Dlod(in sampler2d s, in float_like<4> x) : tex2d_lod;
- float_like<4> [[ro]] tex2Dproj(in sampler2d s, in float_like<4> x) : tex2d_proj;
- float_like<4> [[ro]] tex3D(in sampler3d s, in float_like<3> x) : tex3d;
- float_like<4> [[ro]] tex3D(in sampler3d s, in float_like<3> x, in $type2 ddx, in $type2 ddy) : tex3d_dd;
- float_like<4> [[ro]] tex3Dbias(in sampler3d s, in float_like<4> x) : tex3d_bias;
- float_like<4> [[ro]] tex3Dgrad(in sampler3d s, in float_like<3> x, in $type2 ddx, in $type2 ddy) : tex3d_dd;
- float_like<4> [[ro]] tex3Dlod(in sampler3d s, in float_like<4> x) : tex3d_lod;
- float_like<4> [[ro]] tex3Dproj(in sampler3d s, in float_like<4> x) : tex3d_proj;
- float_like<4> [[ro]] texCUBE(in sampler_cube s, in float_like<3> x) : texcube;
- float_like<4> [[ro]] texCUBE(in sampler_cube s, in float_like<3> x, in $type2 ddx, in $type2 ddy) : texcube_dd;
- float_like<4> [[ro]] texCUBEbias(in sampler_cube s, in float_like<4> x) : texcube_bias;
- float_like<4> [[ro]] texCUBEgrad(in sampler_cube s, in float_like<3> x, in $type2 ddx, in $type2 ddy) : texcube_dd;
- float_like<4> [[ro]] texCUBElod(in sampler_cube s, in float_like<4> x) : texcube_lod;
- float_like<4> [[ro]] texCUBEproj(in sampler_cube s, in float_like<4> x) : texcube_proj;
- $match<1, 1> any<c, r> [[rn]] transpose(in any<r, c> x);
- $type1 [[rn]] trunc(in float_like<> x);
- bool [[rn]] CheckAccessFullyMapped(in uint_only status) : check_access_fully_mapped;
- uint<c> [[rn]] AddUint64(in $match<1, 0> uint<c> a, in $match<2, 0> uint<c> b) : adduint64;
- $type1 [[rn]] NonUniformResourceIndex(in any<> index) : nonuniform_resource_index;
- // Wave intrinsics. Only those that depend on the exec mask are marked as wave-sensitive
- bool [[wv]] WaveIsFirstLane();
- uint [[rn]] WaveGetLaneIndex();
- uint [[rn]] WaveGetLaneCount();
- bool [[wv]] WaveActiveAnyTrue(in bool cond);
- bool [[wv]] WaveActiveAllTrue(in bool cond);
- $match<1, 0> bool<> [[wv]] WaveActiveAllEqual(in any<> value);
- uint<4> [[wv]] WaveActiveBallot(in bool cond);
- $type1 [[]] WaveReadLaneAt(in any<> value, in uint lane);
- $type1 [[wv]] WaveReadLaneFirst(in any<> value);
- uint [[wv]] WaveActiveCountBits(in bool value);
- $type1 [[unsigned_op=WaveActiveUSum,wv]] WaveActiveSum(in numeric<> value);
- $type1 [[unsigned_op=WaveActiveUProduct,wv]] WaveActiveProduct(in numeric<> value);
- $type1 [[wv]] WaveActiveBitAnd(in uint_only<> value);
- $type1 [[wv]] WaveActiveBitOr(in uint_only<> value);
- $type1 [[wv]] WaveActiveBitXor(in uint_only<> value);
- $type1 [[unsigned_op=WaveActiveUMin,wv]] WaveActiveMin(in numeric<> value);
- $type1 [[unsigned_op=WaveActiveUMax,wv]] WaveActiveMax(in numeric<> value);
- uint [[wv]] WavePrefixCountBits(in bool value);
- $type1 [[unsigned_op=WavePrefixUSum,wv]] WavePrefixSum(in numeric<> value);
- $type1 [[unsigned_op=WavePrefixUProduct,wv]] WavePrefixProduct(in numeric<> value);
- uint<4> [[wv]] WaveMatch(in numeric<> value);
- $type1 [[wv]] WaveMultiPrefixBitAnd(in any_int<> value, in uint<4> mask);
- $type1 [[wv]] WaveMultiPrefixBitOr(in any_int<> value, in uint<4> mask);
- $type1 [[wv]] WaveMultiPrefixBitXor(in any_int<> value, in uint<4> mask);
- uint [[wv]] WaveMultiPrefixCountBits(in bool value, in uint<4> mask);
- $type1 [[unsigned_op=WaveMultiPrefixUProduct,wv]] WaveMultiPrefixProduct(in numeric<> value, in uint<4> mask);
- $type1 [[unsigned_op=WaveMultiPrefixUSum,wv]] WaveMultiPrefixSum(in numeric<> value, in uint<4> mask);
- $type1 [[]] QuadReadLaneAt(in numeric<> value, in uint quadLane);
- $type1 [[]] QuadReadAcrossX(in numeric<> value);
- $type1 [[]] QuadReadAcrossY(in numeric<> value);
- $type1 [[]] QuadReadAcrossDiagonal(in numeric<> value);
- // Raytracing
- void [[]] TraceRay(in acceleration_struct AccelerationStructure, in uint RayFlags, in uint InstanceInclusionMask, in uint RayContributionToHitGroupIndex, in uint MultiplierForGeometryContributionToHitGroupIndex, in uint MissShaderIndex, in ray_desc Ray, inout udt Payload);
- bool [[]] ReportHit(in float THit, in uint HitKind, in udt Attributes);
- void [[]] CallShader(in uint ShaderIndex, inout udt Parameter);
- void [[]] IgnoreHit();
- void [[]] AcceptHitAndEndSearch();
- uint<3> [[rn]] DispatchRaysIndex();
- uint<3> [[rn]] DispatchRaysDimensions();
- // group: Ray Vectors
- float<3> [[rn]] WorldRayOrigin();
- float<3> [[rn]] WorldRayDirection();
- float<3> [[rn]] ObjectRayOrigin();
- float<3> [[rn]] ObjectRayDirection();
- // group: RayT
- float [[rn]] RayTMin();
- float [[rn]] RayTCurrent();
- // group: Raytracing uint System Values
- uint [[rn]] PrimitiveIndex();
- uint [[rn]] InstanceID();
- uint [[rn]] InstanceIndex();
- uint [[rn]] GeometryIndex();
- uint [[rn]] HitKind();
- uint [[rn]] RayFlags();
- // group: Ray Transforms
- float<3,4> [[rn]] ObjectToWorld();
- float<3,4> [[rn]] WorldToObject();
- float<3,4> [[rn]] ObjectToWorld3x4();
- float<3,4> [[rn]] WorldToObject3x4();
- float<4,3> [[rn]] ObjectToWorld4x3();
- float<4,3> [[rn]] WorldToObject4x3();
- // Packed dot products with accumulate:
- $type3 [[rn]] dot4add_u8packed(in uint a, in $type1 b, in uint b);
- $type3 [[rn]] dot4add_i8packed(in uint a, in $type1 b, in int b);
- $type3 [[rn]] dot2add(in float16_t<2> a, in $type1 b, in float b);
- // Unpacking intrinsics
- int16_t<4> [[rn]] unpack_s8s16(in p32i8 pk);
- uint16_t<4> [[rn]] unpack_u8u16(in p32u8 pk);
- int<4> [[rn]] unpack_s8s32(in p32i8 pk);
- uint<4> [[rn]] unpack_u8u32(in p32u8 pk);
- // Packing intrinsics
- p32i8 [[rn]] pack_s8(in any_int16or32<4> v);
- p32u8 [[rn]] pack_u8(in any_int16or32<4> v);
- p32i8 [[rn]] pack_clamp_s8(in sint16or32_only<4> v);
- p32u8 [[rn]] pack_clamp_u8(in sint16or32_only<4> v);
- // Mesh shader intrinsics:
- void [[]] SetMeshOutputCounts(in uint numVertices, in uint numPrimitives);
- // Amplification shader intrinsics:
- void [[]] DispatchMesh(in uint threadGroupCountX, in uint threadGroupCountY, in uint threadGroupCountZ, in udt meshPayload);
- // Return true if the current lane is a helper lane
- bool [[ro]] IsHelperLane();
- // HL Op for allocating ray query object that default constructor uses
- uint [[hidden]] AllocateRayQuery(in uint flags);
- resource [[hidden]] CreateResourceFromHeap(in uint index);
- } namespace
- // SPIRV Change Starts
- namespace VkIntrinsics {
- u64 [[]] ReadClock(in uint scope);
- } namespace
- // SPIRV Change Ends
- namespace StreamMethods {
- void [[]] Append(in $match<-1, 1> void x) : stream_append;
- void [[]] RestartStrip() : stream_restart;
- } namespace
- namespace Texture1DMethods {
- // Use float for DXIL don't support f16 on CalcLOD.
- float [[ro]] CalculateLevelOfDetail(in sampler1d s, in float<1> x) : tex1d_t_calc_lod;
- float [[ro]] CalculateLevelOfDetailUnclamped(in sampler s, in float<1> x) : tex1d_t_calc_lod_unclamped;
- void [[]] GetDimensions(in uint x, out uint_only width, out $type2 levels) : resinfo_uint;
- void [[]] GetDimensions(in uint x, out float_like width, out $type2 levels) : resinfo;
- void [[]] GetDimensions(out uint_only width) : resinfo_o;
- void [[]] GetDimensions(out float_like width) : resinfo_o;
- $classT [[ro]] Load(in int<2> x) : tex1d_t_load;
- $classT [[ro]] Load(in int<2> x, in int<1> o) : tex1d_t_load_o;
- $classT [[]] Load(in int<2> x, in int<1> o, out uint_only status) : tex1d_t_load_o_s;
- $classT [[ro]] Sample(in sampler s, in float<1> x) : tex1d_t;
- $classT [[ro]] Sample(in sampler s, in float<1> x, in int<1> o) : tex1d_t_o;
- $classT [[ro]] SampleBias(in sampler s, in float<1> x, in float bias) : tex1d_t_bias;
- $classT [[ro]] SampleBias(in sampler s, in float<1> x, in float bias, in int<1> o) : tex1d_t_bias_o;
- float_like [[ro]] SampleCmp(in sampler_cmp s, in float<1> x, in float compareValue) : tex1d_t_comp;
- float_like [[ro]] SampleCmp(in sampler_cmp s, in float<1> x, in float compareValue, in int<1> o) : tex1d_t_comp_o;
- float_like [[ro]] SampleCmpLevelZero(in sampler_cmp s, in float<1> x, in float compareValue) : tex1d_t_comp_lz;
- float_like [[ro]] SampleCmpLevelZero(in sampler_cmp s, in float<1> x, in float compareValue, in int<1> o) : tex1d_t_comp_lz_o;
- $classT [[ro]] SampleGrad(in sampler s, in float<1> x, in $type2 ddx, in $type2 ddy) : tex1d_t_dd;
- $classT [[ro]] SampleGrad(in sampler s, in float<1> x, in $type2 ddx, in $type2 ddy, in int<1> o) : tex1d_t_dd_o;
- $classT [[ro]] SampleLevel(in sampler s, in float<1> x, in float lod) : tex1d_t_lod;
- $classT [[ro]] SampleLevel(in sampler s, in float<1> x, in float lod, in int<1> o) : tex1d_t_lod_o;
- $classT [[ro]] Sample(in sampler s, in float<1> x, in int<1> o, in float clamp) : tex1d_t_o_cl;
- $classT [[]] Sample(in sampler s, in float<1> x, in int<1> o, in float clamp, out uint_only status) : tex1d_t_o_cl_s;
- float_like [[ro]] SampleCmp(in sampler_cmp s, in float<1> x, in float compareValue, in int<1> o, in float clamp) : tex1d_t_comp_o_cl;
- float_like [[]] SampleCmp(in sampler_cmp s, in float<1> x, in float compareValue, in int<1> o, in float clamp, out uint_only status) : tex1d_t_comp_o_cl_s;
- float_like [[]] SampleCmpLevelZero(in sampler_cmp s, in float<1> x, in float compareValue, in int<1> o, out uint_only status) : tex1d_t_comp_o_s;
- $classT [[]] SampleLevel(in sampler s, in float<1> x, in float lod, in int<1> o, out uint_only status) : tex1d_t_lod_o_s;
- $classT [[ro]] SampleBias(in sampler s, in float<1> x, in float bias, in int<1> o, in float clamp) : tex1d_t_bias_o_cl;
- $classT [[]] SampleBias(in sampler s, in float<1> x, in float bias, in int<1> o, in float clamp, out uint_only status) : tex1d_t_bias_o_cl_s;
- $classT [[]] SampleGrad(in sampler s, in float<1> x, in $type2 ddx, in $type2 ddy, in int<1> o, in float clamp) : tex1d_t_dd_o_cl;
- $classT [[]] SampleGrad(in sampler s, in float<1> x, in $type2 ddx, in $type2 ddy, in int<1> o, in float clamp, out uint_only status) : tex1d_t_dd_o_cl_s;
- } namespace
- namespace Texture1DArrayMethods {
- float [[ro]] CalculateLevelOfDetail(in sampler s, in float<1> x) : tex1d_t_calc_lod_array;
- float [[ro]] CalculateLevelOfDetailUnclamped(in sampler s, in float<1> x) : tex1d_t_calc_lod_unclamped_array;
- void [[]] GetDimensions(in uint x, out uint_only width, out $type2 elements, out $type2 levels) : resinfo_uint;
- void [[]] GetDimensions(in uint x, out float_like width, out $type2 elements, out $type2 levels) : resinfo;
- void [[]] GetDimensions(out uint_only width, out $type1 elements) : resinfo_uint_o;
- void [[]] GetDimensions(out float_like width, out $type1 elements) : resinfo_o;
- $classT [[ro]] Load(in int<3> x) : tex1d_t_load_array;
- $classT [[ro]] Load(in int<3> x, in int<1> o) : tex1d_t_load_array_o;
- $classT [[]] Load(in int<3> x, in int<1> o, out uint_only status) : tex1d_t_load_array_o_s;
- $classT [[ro]] Sample(in sampler s, in float<2> x) : tex1d_t_array;
- $classT [[ro]] Sample(in sampler s, in float<2> x, in int<1> o) : tex1d_t_array_o;
- $classT [[ro]] SampleBias(in sampler s, in float<2> x, in float bias) : tex1d_t_bias_array;
- $classT [[ro]] SampleBias(in sampler s, in float<2> x, in float bias, in int<1> o) : tex1d_t_bias_array_o;
- float_like [[ro]] SampleCmp(in sampler_cmp s, in float<2> x, in float compareValue) : tex1d_t_comp_array;
- float_like [[ro]] SampleCmp(in sampler_cmp s, in float<2> x, in float compareValue, in int<1> o) : tex1d_t_comp_array_o;
- float_like [[ro]] SampleCmpLevelZero(in sampler_cmp s, in float<2> x, in float compareValue) : tex1d_t_comp_lz_array;
- float_like [[ro]] SampleCmpLevelZero(in sampler_cmp s, in float<2> x, in float compareValue, in int<1> o) : tex1d_t_comp_lz_array_o;
- $classT [[ro]] SampleGrad(in sampler s, in float<2> x, in $match<2, 2> float<1> ddx, in $match<2, 2> float<1> ddy) : tex1d_t_dd_array;
- $classT [[ro]] SampleGrad(in sampler s, in float<2> x, in $match<2, 2> float<1> ddx, in $match<2, 2> float<1> ddy, in int<1> o) : tex1d_t_dd_array_o;
- $classT [[ro]] SampleLevel(in sampler s, in float<2> x, in float lod) : tex1d_t_lod_array;
- $classT [[ro]] SampleLevel(in sampler s, in float<2> x, in float lod, in int<1> o) : tex1d_t_lod_array_o;
- $classT [[ro]] Sample(in sampler s, in float<2> x, in int<1> o, in float clamp) : tex1d_t_array_o_cl;
- $classT [[]] Sample(in sampler s, in float<2> x, in int<1> o, in float clamp, out uint_only status) : tex1d_t_array_o_cl_s;
- float_like [[ro]] SampleCmp(in sampler_cmp s, in float<2> x, in float compareValue, in int<1> o, in float clamp) : tex1d_t_comp_array_o_cl;
- float_like [[]] SampleCmp(in sampler_cmp s, in float<2> x, in float compareValue, in int<1> o, in float clamp, out uint_only status) : tex1d_t_comp_array_o_cl_s;
- float_like [[]] SampleCmpLevelZero(in sampler_cmp s, in float<2> x, in float compareValue, in int<1> o, out uint_only status) : tex1d_t_comp_array_o_s;
- $classT [[]] SampleLevel(in sampler s, in float<2> x, in float lod, in int<1> o, out uint_only status) : tex1d_t_lod_array_o_s;
- $classT [[ro]] SampleBias(in sampler s, in float<2> x, in float bias, in int<1> o, in float clamp) : tex1d_t_bias_array_o_cl;
- $classT [[]] SampleBias(in sampler s, in float<2> x, in float bias, in int<1> o, in float clamp, out uint_only status) : tex1d_t_bias_array_o_cl_s;
- $classT [[ro]] SampleGrad(in sampler s, in float<2> x, in $match<2, 2> float<1> ddx, in $match<2, 2> float<1> ddy, in int<1> o, in float clamp) : tex1d_t_dd_array_o_cl;
- $classT [[]] SampleGrad(in sampler s, in float<2> x, in $match<2, 2> float<1> ddx, in $match<2, 2> float<1> ddy, in int<1> o, in float clamp, out uint_only status) : tex1d_t_dd_array_o_cl_s;
- } namespace
- namespace Texture2DMethods {
- float [[ro]] CalculateLevelOfDetail(in sampler s, in float<2> x) : tex2d_t_calc_lod;
- float [[ro]] CalculateLevelOfDetailUnclamped(in sampler s, in float<2> x) : tex2d_t_calc_lod_unclamped;
- $match<0, -1> void<4> [[ro]] Gather(in sampler s, in float<2> x) : tex2d_t_gather;
- $match<0, -1> void<4> [[ro]] Gather(in sampler s, in float<2> x, in int<2> o) : tex2d_t_gather_o;
- $match<0, -1> void<4> [[ro]] GatherAlpha(in sampler s, in float<2> x) : tex2d_t_gather_alpha;
- $match<0, -1> void<4> [[ro]] GatherAlpha(in sampler s, in float<2> x, in int<2> o) : tex2d_t_gather_alpha_o;
- $match<0, -1> void<4> [[ro]] GatherAlpha(in sampler s, in float<2> x, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4) : tex2d_t_gather_alpha_o4;
- $match<0, -1> void<4> [[ro]] GatherBlue(in sampler s, in float<2> x) : tex2d_t_gather_blue;
- $match<0, -1> void<4> [[ro]] GatherBlue(in sampler s, in float<2> x, in int<2> o) : tex2d_t_gather_blue_o;
- $match<0, -1> void<4> [[ro]] GatherBlue(in sampler s, in float<2> x, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4) : tex2d_t_gather_blue_o4;
- $match<0, -1> void<4> [[ro]] GatherCmp(in sampler_cmp s, in float<2> x, in float compareValue) : tex2d_t_gather_comp;
- $match<0, -1> void<4> [[ro]] GatherCmp(in sampler_cmp s, in float<2> x, in float compareValue, in int<2> o) : tex2d_t_gather_comp_o;
- $match<0, -1> void<4> [[ro]] GatherCmpAlpha(in sampler_cmp s, in float<2> x, in float compareValue) : tex2d_t_gather_comp_alpha;
- $match<0, -1> void<4> [[ro]] GatherCmpAlpha(in sampler_cmp s, in float<2> x, in float compareValue, in int<2> o) : tex2d_t_gather_comp_alpha_o;
- $match<0, -1> void<4> [[ro]] GatherCmpAlpha(in sampler_cmp s, in float<2> x, in float compareValue, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4) : tex2d_t_gather_comp_alpha_o4;
- $match<0, -1> void<4> [[ro]] GatherCmpBlue(in sampler_cmp s, in float<2> x, in float compareValue) : tex2d_t_gather_comp_blue;
- $match<0, -1> void<4> [[ro]] GatherCmpBlue(in sampler_cmp s, in float<2> x, in float compareValue, in int<2> o) : tex2d_t_gather_comp_blue_o;
- $match<0, -1> void<4> [[ro]] GatherCmpBlue(in sampler_cmp s, in float<2> x, in float compareValue, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4) : tex2d_t_gather_comp_blue_o4;
- $match<0, -1> void<4> [[ro]] GatherCmpGreen(in sampler_cmp s, in float<2> x, in float compareValue) : tex2d_t_gather_comp_green;
- $match<0, -1> void<4> [[ro]] GatherCmpGreen(in sampler_cmp s, in float<2> x, in float compareValue, in int<2> o) : tex2d_t_gather_comp_green_o;
- $match<0, -1> void<4> [[ro]] GatherCmpGreen(in sampler_cmp s, in float<2> x, in float compareValue, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4) : tex2d_t_gather_comp_green_o4;
- $match<0, -1> void<4> [[ro]] GatherCmpRed(in sampler_cmp s, in float<2> x, in float compareValue) : tex2d_t_gather_comp_red;
- $match<0, -1> void<4> [[ro]] GatherCmpRed(in sampler_cmp s, in float<2> x, in float compareValue, in int<2> o) : tex2d_t_gather_comp_red_o;
- $match<0, -1> void<4> [[ro]] GatherCmpRed(in sampler_cmp s, in float<2> x, in float compareValue, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4) : tex2d_t_gather_comp_red_o4;
- $match<0, -1> void<4> [[ro]] GatherGreen(in sampler s, in float<2> x) : tex2d_t_gather_green;
- $match<0, -1> void<4> [[ro]] GatherGreen(in sampler s, in float<2> x, in int<2> o) : tex2d_t_gather_green_o;
- $match<0, -1> void<4> [[ro]] GatherGreen(in sampler s, in float<2> x, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4) : tex2d_t_gather_green_o4;
- $match<0, -1> void<4> [[ro]] GatherRed(in sampler s, in float<2> x) : tex2d_t_gather_red;
- $match<0, -1> void<4> [[ro]] GatherRed(in sampler s, in float<2> x, in int<2> o) : tex2d_t_gather_red_o;
- $match<0, -1> void<4> [[ro]] GatherRed(in sampler s, in float<2> x, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4) : tex2d_t_gather_red_o4;
- void [[]] GetDimensions(in uint x, out uint_only width, out $type2 height, out $type2 levels) : resinfo_uint;
- void [[]] GetDimensions(in uint x, out float_like width, out $type2 height, out $type2 levels) : resinfo;
- void [[]] GetDimensions(out uint_only width, out $type1 height) : resinfo_uint_o;
- void [[]] GetDimensions(out float_like width, out $type1 height) : resinfo_o;
- $classT [[ro]] Load(in int<3> x) : tex2d_t_load;
- $classT [[ro]] Load(in int<3> x, in int<2> o) : tex2d_t_load_o;
- $classT [[]] Load(in int<3> x, in int<2> o, out uint_only status) : tex2d_t_load_o_s;
- $classT [[ro]] Sample(in sampler s, in float<2> x) : tex2d_t;
- $classT [[ro]] Sample(in sampler s, in float<2> x, in int<2> o) : tex2d_t_o;
- $classT [[ro]] SampleBias(in sampler s, in float<2> x, in float bias) : tex2d_t_bias;
- $classT [[ro]] SampleBias(in sampler s, in float<2> x, in float bias, in int<2> o) : tex2d_t_bias_o;
- float_like [[ro]] SampleCmp(in sampler_cmp s, in float<2> x, in float compareValue) : tex2d_t_comp;
- float_like [[ro]] SampleCmp(in sampler_cmp s, in float<2> x, in float compareValue, in int<2> o) : tex2d_t_comp_o;
- float_like [[ro]] SampleCmpLevelZero(in sampler_cmp s, in float<2> x, in float compareValue) : tex2d_t_comp_lz;
- float_like [[ro]] SampleCmpLevelZero(in sampler_cmp s, in float<2> x, in float compareValue, in int<2> o) : tex2d_t_comp_lz_o;
- $classT [[ro]] SampleGrad(in sampler s, in float<2> x, in $type2 ddx, in $type2 ddy) : tex2d_t_dd;
- $classT [[ro]] SampleGrad(in sampler s, in float<2> x, in $type2 ddx, in $type2 ddy, in int<2> o) : tex2d_t_dd_o;
- $classT [[ro]] SampleLevel(in sampler s, in float<2> x, in float lod) : tex2d_t_lod;
- $classT [[ro]] SampleLevel(in sampler s, in float<2> x, in float lod, in int<2> o) : tex2d_t_lod_o;
- $classT [[ro]] Sample(in sampler s, in float<2> x, in int<2> o, in float clamp) : tex2d_t_o_cl;
- $classT [[]] Sample(in sampler s, in float<2> x, in int<2> o, in float clamp, out uint_only status) : tex2d_t_o_cl_s;
- float_like [[ro]] SampleCmp(in sampler_cmp s, in float<2> x, in float compareValue, in int<2> o, in float clamp) : tex2d_t_comp_o_cl;
- float_like [[]] SampleCmp(in sampler_cmp s, in float<2> x, in float compareValue, in int<2> o, in float clamp, out uint_only status) : tex2d_t_comp_o_cl_s;
- float_like [[]] SampleCmpLevelZero(in sampler_cmp s, in float<2> x, in float compareValue, in int<2> o, out uint_only status) : tex2d_t_comp_o_s;
- $classT [[]] SampleLevel(in sampler s, in float<2> x, in float lod, in int<2> o, out uint_only status) : tex2d_t_lod_o_s;
- $classT [[ro]] SampleBias(in sampler s, in float<2> x, in float bias, in int<2> o, in float clamp) : tex2d_t_bias_o_cl;
- $classT [[]] SampleBias(in sampler s, in float<2> x, in float bias, in int<2> o, in float clamp, out uint_only status) : tex2d_t_bias_o_cl_s;
- $classT [[ro]] SampleGrad(in sampler s, in float<2> x, in $type2 ddx, in $type2 ddy, in int<2> o, in float clamp) : tex2d_t_dd_o_cl;
- $classT [[]] SampleGrad(in sampler s, in float<2> x, in $type2 ddx, in $type2 ddy, in int<2> o, in float clamp, out uint_only status) : tex2d_t_dd_o_cl_s;
- $match<0, -1> void<4> [[]] Gather(in sampler s, in float<2> x, in int<2> o, out uint_only status) : tex2d_t_gather_o_s;
- $match<0, -1> void<4> [[]] GatherRed(in sampler s, in float<2> x, in int<2> o, out uint_only status) : tex2d_t_gather_red_o_s;
- $match<0, -1> void<4> [[]] GatherRed(in sampler s, in float<2> x, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4, out uint_only status) : tex2d_t_gather_red_o4_s;
- $match<0, -1> void<4> [[]] GatherGreen(in sampler s, in float<2> x, in int<2> o, out uint_only status) : tex2d_t_gather_green_o_s;
- $match<0, -1> void<4> [[]] GatherGreen(in sampler s, in float<2> x, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4, out uint_only status) : tex2d_t_gather_green_o4_s;
- $match<0, -1> void<4> [[]] GatherBlue(in sampler s, in float<2> x, in int<2> o, out uint_only status) : tex2d_t_gather_blue_o_s;
- $match<0, -1> void<4> [[]] GatherBlue(in sampler s, in float<2> x, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4, out uint_only status) : tex2d_t_gather_blue_o4_s;
- $match<0, -1> void<4> [[]] GatherAlpha(in sampler s, in float<2> x, in int<2> o, out uint_only status) : tex2d_t_gather_alpha_o_s;
- $match<0, -1> void<4> [[]] GatherAlpha(in sampler s, in float<2> x, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4, out uint_only status) : tex2d_t_gather_alpha_o4_s;
- $match<0, -1> void<4> [[]] GatherCmp(in sampler_cmp s, in float<2> x, in float compareValue, in int<2> o, out uint_only status) : tex2d_t_gather_comp_o_s;
- $match<0, -1> void<4> [[]] GatherCmpRed(in sampler_cmp s, in float<2> x, in float compareValue, in int<2> o, out uint_only status) : tex2d_t_gather_comp_red_o_s;
- $match<0, -1> void<4> [[]] GatherCmpGreen(in sampler_cmp s, in float<2> x, in float compareValue, in int<2> o, out uint_only status) : tex2d_t_gather_comp_green_o_s;
- $match<0, -1> void<4> [[]] GatherCmpBlue(in sampler_cmp s, in float<2> x, in float compareValue, in int<2> o, out uint_only status) : tex2d_t_gather_comp_blue_o_s;
- $match<0, -1> void<4> [[]] GatherCmpAlpha(in sampler_cmp s, in float<2> x, in float compareValue, in int<2> o, out uint_only status) : tex2d_t_gather_comp_alpha_o_s;
- $match<0, -1> void<4> [[]] GatherCmpRed(in sampler_cmp s, in float<2> x, in float compareValue, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4, out uint_only status) : tex2d_t_gather_comp_red_o4_s;
- $match<0, -1> void<4> [[]] GatherCmpGreen(in sampler_cmp s, in float<2> x, in float compareValue, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4, out uint_only status) : tex2d_t_gather_comp_green_o4_s;
- $match<0, -1> void<4> [[]] GatherCmpBlue(in sampler_cmp s, in float<2> x, in float compareValue, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4, out uint_only status) : tex2d_t_gather_comp_blue_o4_s;
- $match<0, -1> void<4> [[]] GatherCmpAlpha(in sampler_cmp s, in float<2> x, in float compareValue, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4, out uint_only status) : tex2d_t_gather_comp_alpha_o4_s;
- } namespace
- namespace Texture2DMSMethods {
- void [[]] GetDimensions(out uint_only width, out $type1 height, out $type2 samples) : resinfo_uint_o;
- void [[]] GetDimensions(out float_like width, out $type1 height, out $type2 samples) : resinfo_o;
- float_like<2> [[ro]] GetSamplePosition(in int s) : samplepos;
- $classT [[]] Load(in int<2> x, in int s) : texture2d_ms;
- $classT [[]] Load(in int<2> x, in int s, in int<2> o) : texture2d_ms_o;
- $classT [[]] Load(in int<2> x, in int s, in int<2> o, out uint_only status) : texture2d_ms_o_s;
- } namespace
- namespace Texture2DArrayMethods {
- float [[ro]] CalculateLevelOfDetail(in sampler s, in float<2> x) : tex2d_t_calc_lod_array;
- float [[ro]] CalculateLevelOfDetailUnclamped(in sampler s, in float<2> x) : tex2d_t_calc_lod_unclamped_array;
- $match<0, -1> void<4> [[ro]] Gather(in sampler s, in float<3> x) : tex2d_t_gather_array;
- $match<0, -1> void<4> [[ro]] Gather(in sampler s, in float<3> x, in int<2> o) : tex2d_t_gather_array_o;
- $match<0, -1> void<4> [[ro]] GatherAlpha(in sampler s, in float<3> x) : tex2d_t_gather_alpha_array;
- $match<0, -1> void<4> [[ro]] GatherAlpha(in sampler s, in float<3> x, in int<2> o) : tex2d_t_gather_alpha_array_o;
- $match<0, -1> void<4> [[ro]] GatherAlpha(in sampler s, in float<3> x, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4) : tex2d_t_gather_alpha_array_o4;
- $match<0, -1> void<4> [[ro]] GatherBlue(in sampler s, in float<3> x) : tex2d_t_gather_blue_array;
- $match<0, -1> void<4> [[ro]] GatherBlue(in sampler s, in float<3> x, in int<2> o) : tex2d_t_gather_blue_array_o;
- $match<0, -1> void<4> [[ro]] GatherBlue(in sampler s, in float<3> x, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4) : tex2d_t_gather_blue_array_o4;
- $match<0, -1> void<4> [[ro]] GatherCmp(in sampler_cmp s, in float<3> x, in float compareValue) : tex2d_t_gather_comp_array;
- $match<0, -1> void<4> [[ro]] GatherCmp(in sampler_cmp s, in float<3> x, in float compareValue, in int<2> o) : tex2d_t_gather_comp_array_o;
- $match<0, -1> void<4> [[ro]] GatherCmpAlpha(in sampler_cmp s, in float<3> x, in float compareValue) : tex2d_t_gather_comp_alpha_array;
- $match<0, -1> void<4> [[ro]] GatherCmpAlpha(in sampler_cmp s, in float<3> x, in float compareValue, in int<2> o) : tex2d_t_gather_comp_alpha_array_o;
- $match<0, -1> void<4> [[ro]] GatherCmpAlpha(in sampler_cmp s, in float<3> x, in float compareValue, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4) : tex2d_t_gather_comp_alpha_array_o4;
- $match<0, -1> void<4> [[ro]] GatherCmpBlue(in sampler_cmp s, in float<3> x, in float compareValue) : tex2d_t_gather_comp_blue_array;
- $match<0, -1> void<4> [[ro]] GatherCmpBlue(in sampler_cmp s, in float<3> x, in float compareValue, in int<2> o) : tex2d_t_gather_comp_blue_array_o;
- $match<0, -1> void<4> [[ro]] GatherCmpBlue(in sampler_cmp s, in float<3> x, in float compareValue, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4) : tex2d_t_gather_comp_blue_array_o4;
- $match<0, -1> void<4> [[ro]] GatherCmpGreen(in sampler_cmp s, in float<3> x, in float compareValue) : tex2d_t_gather_comp_green_array;
- $match<0, -1> void<4> [[ro]] GatherCmpGreen(in sampler_cmp s, in float<3> x, in float compareValue, in int<2> o) : tex2d_t_gather_comp_green_array_o;
- $match<0, -1> void<4> [[ro]] GatherCmpGreen(in sampler_cmp s, in float<3> x, in float compareValue, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4) : tex2d_t_gather_comp_green_array_o4;
- $match<0, -1> void<4> [[ro]] GatherCmpRed(in sampler_cmp s, in float<3> x, in float compareValue) : tex2d_t_gather_comp_red_array;
- $match<0, -1> void<4> [[ro]] GatherCmpRed(in sampler_cmp s, in float<3> x, in float compareValue, in int<2> o) : tex2d_t_gather_comp_red_array_o;
- $match<0, -1> void<4> [[ro]] GatherCmpRed(in sampler_cmp s, in float<3> x, in float compareValue, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4) : tex2d_t_gather_comp_red_array_o4;
- $match<0, -1> void<4> [[ro]] GatherGreen(in sampler s, in float<3> x) : tex2d_t_gather_green_array;
- $match<0, -1> void<4> [[ro]] GatherGreen(in sampler s, in float<3> x, in int<2> o) : tex2d_t_gather_green_array_o;
- $match<0, -1> void<4> [[ro]] GatherGreen(in sampler s, in float<3> x, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4) : tex2d_t_gather_green_array_o4;
- $match<0, -1> void<4> [[ro]] GatherRed(in sampler s, in float<3> x) : tex2d_t_gather_red_array;
- $match<0, -1> void<4> [[ro]] GatherRed(in sampler s, in float<3> x, in int<2> o) : tex2d_t_gather_red_array_o;
- $match<0, -1> void<4> [[ro]] GatherRed(in sampler s, in float<3> x, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4) : tex2d_t_gather_red_array_o4;
- void [[]] GetDimensions(in uint x, out uint_only width, out $type2 height, out $type2 elements, out $type2 levels) : resinfo_uint;
- void [[]] GetDimensions(in uint x, out float_like width, out $type2 height, out $type2 elements, out $type2 levels) : resinfo;
- void [[]] GetDimensions(out uint_only width, out $type1 height, out $type1 elements) : resinfo_uint_o;
- void [[]] GetDimensions(out float_like width, out $type1 height, out $type1 elements) : resinfo_o;
- $classT [[ro]] Load(in int<4> x) : tex2d_t_load_array;
- $classT [[ro]] Load(in int<4> x, in int<2> o) : tex2d_t_load_array_o;
- $classT [[]] Load(in int<4> x, in int<2> o, out uint_only status) : tex2d_t_load_array_o_s;
- $classT [[ro]] Sample(in sampler s, in float<3> x) : tex2d_t_array;
- $classT [[ro]] Sample(in sampler s, in float<3> x, in int<2> o) : tex2d_t_array_o;
- $classT [[ro]] SampleBias(in sampler s, in float<3> x, in float bias) : tex2d_t_bias_array;
- $classT [[ro]] SampleBias(in sampler s, in float<3> x, in float bias, in int<2> o) : tex2d_t_bias_array_o;
- float_like [[ro]] SampleCmp(in sampler_cmp s, in float<3> x, in float compareValue) : tex2d_t_comp_array;
- float_like [[ro]] SampleCmp(in sampler_cmp s, in float<3> x, in float compareValue, in int<2> o) : tex2d_t_comp_array_o;
- float_like [[ro]] SampleCmpLevelZero(in sampler_cmp s, in float<3> x, in float compareValue) : tex2d_t_comp_lz_array;
- float_like [[ro]] SampleCmpLevelZero(in sampler_cmp s, in float<3> x, in float compareValue, in int<2> o) : tex2d_t_comp_lz_array_o;
- $classT [[ro]] SampleGrad(in sampler s, in float<3> x, in $match<2, 2> float<2> ddx, in $match<2, 2> float<2> ddy) : tex2d_t_dd_array;
- $classT [[ro]] SampleGrad(in sampler s, in float<3> x, in $match<2, 2> float<2> ddx, in $match<2, 2> float<2> ddy, in int<2> o) : tex2d_t_dd_array_o;
- $classT [[ro]] SampleLevel(in sampler s, in float<3> x, in float lod) : tex2d_t_lod_array;
- $classT [[ro]] SampleLevel(in sampler s, in float<3> x, in float lod, in int<2> o) : tex2d_t_lod_array_o;
- $classT [[ro]] Sample(in sampler s, in float<3> x, in int<2> o, in float clamp) : tex2d_t_array_o_cl;
- $classT [[]] Sample(in sampler s, in float<3> x, in int<2> o, in float clamp, out uint_only status) : tex2d_t_array_o_cl_s;
- float_like [[ro]] SampleCmp(in sampler_cmp s, in float<3> x, in float compareValue, in int<2> o, in float clamp) : tex2d_t_comp_array_o_cl;
- float_like [[]] SampleCmp(in sampler_cmp s, in float<3> x, in float compareValue, in int<2> o, in float clamp, out uint_only status) : tex2d_t_comp_array_o_cl_s;
- float_like [[]] SampleCmpLevelZero(in sampler_cmp s, in float<3> x, in float compareValue, in int<2> o, out uint_only status) : tex2d_t_comp_array_o_s;
- $classT [[]] SampleLevel(in sampler s, in float<3> x, in float lod, in int<2> o, out uint_only status) : tex2d_t_lod_array_o_s;
- $classT [[ro]] SampleBias(in sampler s, in float<3> x, in float bias, in int<2> o, in float clamp) : tex2d_t_bias_array_o_cl;
- $classT [[]] SampleBias(in sampler s, in float<3> x, in float bias, in int<2> o, in float clamp, out uint_only status) : tex2d_t_bias_array_o_cl_s;
- $classT [[ro]] SampleGrad(in sampler s, in float<3> x, in $match<2, 2> float<2> ddx, in $match<2, 2> float<2> ddy, in int<2> o, in float clamp) : tex2d_t_dd_array_o_cl;
- $classT [[]] SampleGrad(in sampler s, in float<3> x, in $match<2, 2> float<2> ddx, in $match<2, 2> float<2> ddy, in int<2> o, in float clamp, out uint_only status) : tex2d_t_dd_array_o_cl_s;
- $match<0, -1> void<4> [[]] Gather(in sampler s, in float<3> x, in int<2> o, out uint_only status) : tex2d_t_gather_array_o_s;
- $match<0, -1> void<4> [[]] GatherRed(in sampler s, in float<3> x, in int<2> o, out uint_only status) : tex2d_t_gather_red_array_o_s;
- $match<0, -1> void<4> [[]] GatherRed(in sampler s, in float<3> x, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4, out uint_only status) : tex2d_t_gather_red_array_o4_s;
- $match<0, -1> void<4> [[]] GatherGreen(in sampler s, in float<3> x, in int<2> o, out uint_only status) : tex2d_t_gather_green_array_o_s;
- $match<0, -1> void<4> [[]] GatherGreen(in sampler s, in float<3> x, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4, out uint_only status) : tex2d_t_gather_green_array_o4_s;
- $match<0, -1> void<4> [[]] GatherBlue(in sampler s, in float<3> x, in int<2> o, out uint_only status) : tex2d_t_gather_blue_array_o_s;
- $match<0, -1> void<4> [[]] GatherBlue(in sampler s, in float<3> x, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4, out uint_only status) : tex2d_t_gather_blue_array_o4_s;
- $match<0, -1> void<4> [[]] GatherAlpha(in sampler s, in float<3> x, in int<2> o, out uint_only status) : tex2d_t_gather_alpha_array_o_s;
- $match<0, -1> void<4> [[]] GatherAlpha(in sampler s, in float<3> x, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4, out uint_only status) : tex2d_t_gather_alpha_array_o4_s;
- $match<0, -1> void<4> [[]] GatherCmp(in sampler_cmp s, in float<3> x, in float compareValue, in int<2> o, out uint_only status) : tex2d_t_gather_comp_array_o_s;
- $match<0, -1> void<4> [[]] GatherCmpRed(in sampler_cmp s, in float<3> x, in float compareValue, in int<2> o, out uint_only status) : tex2d_t_gather_comp_red_array_o_s;
- $match<0, -1> void<4> [[]] GatherCmpGreen(in sampler_cmp s, in float<3> x, in float compareValue, in int<2> o, out uint_only status) : tex2d_t_gather_comp_green_array_o_s;
- $match<0, -1> void<4> [[]] GatherCmpBlue(in sampler_cmp s, in float<3> x, in float compareValue, in int<2> o, out uint_only status) : tex2d_t_gather_comp_blue_array_o_s;
- $match<0, -1> void<4> [[]] GatherCmpAlpha(in sampler_cmp s, in float<3> x, in float compareValue, in int<2> o, out uint_only status) : tex2d_t_gather_comp_alpha_array_o_s;
- $match<0, -1> void<4> [[]] GatherCmpRed(in sampler_cmp s, in float<3> x, in float compareValue, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4, out uint_only status) : tex2d_t_gather_comp_red_array_o4_s;
- $match<0, -1> void<4> [[]] GatherCmpGreen(in sampler_cmp s, in float<3> x, in float compareValue, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4, out uint_only status) : tex2d_t_gather_comp_green_array_o4_s;
- $match<0, -1> void<4> [[]] GatherCmpBlue(in sampler_cmp s, in float<3> x, in float compareValue, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4, out uint_only status) : tex2d_t_gather_comp_blue_array_o4_s;
- $match<0, -1> void<4> [[]] GatherCmpAlpha(in sampler_cmp s, in float<3> x, in float compareValue, in int<2> o1, in int<2> o2, in int<2> o3, in int<2> o4, out uint_only status) : tex2d_t_gather_comp_alpha_array_o4_s;
- } namespace
- namespace Texture2DArrayMSMethods {
- void [[]] GetDimensions(out uint_only width, out $type1 height, out $type1 elements, out $type1 samples) : resinfo_uint_o;
- void [[]] GetDimensions(out float_like width, out $type1 height, out $type1 elements, out $type1 samples) : resinfo_o;
- float_like<2> [[ro]] GetSamplePosition(in int s) : samplepos;
- $classT [[ro]] Load(in int<3> x, in int s) : texture2darray_ms;
- $classT [[ro]] Load(in int<3> x, in int s, in int<2> o) : texture2darray_ms_o;
- $classT [[]] Load(in int<3> x, in int s, in int<2> o, out uint_only status) : texture2darray_ms_o_s;
- } namespace
- namespace Texture3DMethods {
- float [[ro]] CalculateLevelOfDetail(in sampler s, in float<3> x) : tex3d_t_calc_lod;
- float [[ro]] CalculateLevelOfDetailUnclamped(in sampler s, in float<3> x) : tex3d_t_calc_lod_unclamped;
- void [[]] GetDimensions(in uint x, out uint_only width, out $type2 height, out $type2 depth, out $type2 levels) : resinfo_uint;
- void [[]] GetDimensions(in uint x, out float_like width, out $type2 height, out $type2 depth, out $type2 levels) : resinfo;
- void [[]] GetDimensions(out uint_only width, out $type1 height, out $type1 depth) : resinfo_uint_o;
- void [[]] GetDimensions(out float_like width, out $type1 height, out $type1 depth) : resinfo_o;
- $classT [[ro]] Load(in int<4> x) : tex3d_t_load;
- $classT [[ro]] Load(in int<4> x, in int<3> o) : tex3d_t_load_o;
- $classT [[]] Load(in int<4> x, in int<3> o, out uint_only status) : tex3d_t_load_o_s;
- $classT [[ro]] Sample(in sampler s, in float<3> x) : tex3d_t;
- $classT [[ro]] Sample(in sampler s, in float<3> x, in int<3> o) : tex3d_t_o;
- $classT [[ro]] SampleBias(in sampler s, in float<3> x, in float bias) : tex3d_t_bias;
- $classT [[ro]] SampleBias(in sampler s, in float<3> x, in float bias, in int<3> o) : tex3d_t_bias_o;
- $classT [[ro]] SampleGrad(in sampler s, in float<3> x, in $type2 ddx, in $type2 ddy) : tex3d_t_dd;
- $classT [[ro]] SampleGrad(in sampler s, in float<3> x, in $type2 ddx, in $type2 ddy, in int<3> o) : tex3d_t_dd_o;
- $classT [[ro]] SampleLevel(in sampler s, in float<3> x, in float lod) : tex3d_t_lod;
- $classT [[ro]] SampleLevel(in sampler s, in float<3> x, in float lod, in int<3> o) : tex3d_t_lod_o;
- $classT [[ro]] Sample(in sampler s, in float<3> x, in int<3> o, in float clamp) : tex3d_t_o_cl;
- $classT [[]] Sample(in sampler s, in float<3> x, in int<3> o, in float clamp, out uint_only status) : tex3d_t_o_cl_s;
- $classT [[]] SampleLevel(in sampler s, in float<3> x, in float lod, in int<3> o, out uint_only status) : tex3d_t_lod_o_s;
- $classT [[ro]] SampleBias(in sampler s, in float<3> x, in float bias, in int<3> o, in float clamp) : tex3d_t_bias_o_cl;
- $classT [[]] SampleBias(in sampler s, in float<3> x, in float bias, in int<3> o, in float clamp, out uint_only status) : tex3d_t_bias_o_cl_s;
- $classT [[ro]] SampleGrad(in sampler s, in float<3> x, in $type2 ddx, in $type2 ddy, in int<3> o, in float clamp) : tex3d_t_dd_o_cl;
- $classT [[]] SampleGrad(in sampler s, in float<3> x, in $type2 ddx, in $type2 ddy, in int<3> o, in float clamp, out uint_only status) : tex3d_t_dd_o_cl_s;
- } namespace
- namespace TextureCUBEMethods {
- float [[ro]] CalculateLevelOfDetail(in sampler s, in float<3> x) : texcube_t_calc_lod;
- float [[ro]] CalculateLevelOfDetailUnclamped(in sampler s, in float<3> x) : texcube_t_calc_lod_unclamped;
- $match<0, -1> void<4> [[ro]] Gather(in sampler s, in float<3> x) : texcube_t_gather;
- $match<0, -1> void<4> [[ro]] GatherAlpha(in sampler s, in float<3> x) : texcube_t_gather_alpha;
- $match<0, -1> void<4> [[ro]] GatherBlue(in sampler s, in float<3> x) : texcube_t_gather_blue;
- $match<0, -1> void<4> [[ro]] GatherCmp(in sampler_cmp s, in float<3> x, in float compareValue) : texcube_t_gather_comp;
- $match<0, -1> void<4> [[ro]] GatherCmpAlpha(in sampler_cmp s, in float<3> x, in float compareValue) : texcube_t_gather_comp_alpha;
- $match<0, -1> void<4> [[ro]] GatherCmpBlue(in sampler_cmp s, in float<3> x, in float compareValue) : texcube_t_gather_comp_blue;
- $match<0, -1> void<4> [[ro]] GatherCmpGreen(in sampler_cmp s, in float<3> x, in float compareValue) : texcube_t_gather_comp_green;
- $match<0, -1> void<4> [[ro]] GatherCmpRed(in sampler_cmp s, in float<3> x, in float compareValue) : texcube_t_gather_comp_red;
- $match<0, -1> void<4> [[ro]] GatherGreen(in sampler s, in float<3> x) : texcube_t_gather_green;
- $match<0, -1> void<4> [[ro]] GatherRed(in sampler s, in float<3> x) : texcube_t_gather_red;
- void [[]] GetDimensions(in uint x, out uint_only width, out $type2 height, out $type2 levels) : resinfo_uint;
- void [[]] GetDimensions(in uint x, out float_like width, out $type2 height, out $type2 levels) : resinfo;
- void [[]] GetDimensions(out uint_only width, out $type1 height) : resinfo_uint_o;
- void [[]] GetDimensions(out float_like width, out $type1 height) : resinfo_o;
- $classT [[ro]] Sample(in sampler s, in float<3> x) : texcube_t;
- $classT [[ro]] SampleBias(in sampler s, in float<3> x, in float bias) : texcube_t_bias;
- float_like [[ro]] SampleCmp(in sampler_cmp s, in float<3> x, in float c) : texcube_t_comp;
- float_like [[ro]] SampleCmpLevelZero(in sampler_cmp s, in float<3> x, in float c) : texcube_t_comp_lz;
- $classT [[ro]] SampleGrad(in sampler s, in float<3> x, in $type2 ddx, in $type2 ddy) : texcube_t_dd;
- $classT [[ro]] SampleLevel(in sampler s, in float<3> x, in float lod) : texcube_t_lod;
- $classT [[ro]] Sample(in sampler s, in float<3> x, in float clamp) : texcube_t_cl;
- $classT [[]] Sample(in sampler s, in float<3> x, in float clamp, out uint_only status) : texcube_t_cl_s;
- float_like [[ro]] SampleCmp(in sampler_cmp s, in float<3> x, in float compareValue, in float clamp) : texcube_t_comp_cl;
- float_like [[]] SampleCmp(in sampler_cmp s, in float<3> x, in float compareValue, in float clamp, out uint_only status) : texcube_t_comp_cl_s;
- float_like [[]] SampleCmpLevelZero(in sampler_cmp s, in float<3> x, in float compareValue, out uint_only status) : texcube_t_comp_s;
- $classT [[]] SampleLevel(in sampler s, in float<3> x, in float lod, out uint_only status) : texcube_t_lod_s;
- $classT [[ro]] SampleBias(in sampler s, in float<3> x, in float bias, in float clamp) : texcube_t_bias_cl;
- $classT [[]] SampleBias(in sampler s, in float<3> x, in float bias, in float clamp, out uint_only status) : texcube_t_bias_cl_s;
- $classT [[ro]] SampleGrad(in sampler s, in float<3> x, in $type2 ddx, in $type2 ddy, in float clamp) : texcube_t_dd_cl;
- $classT [[]] SampleGrad(in sampler s, in float<3> x, in $type2 ddx, in $type2 ddy, in float clamp, out uint_only status) : texcube_t_dd_cl_s;
- $match<0, -1> void<4> [[]] Gather(in sampler s, in float<3> x, out uint_only status) : texcube_t_gather_s;
- $match<0, -1> void<4> [[]] GatherRed(in sampler s, in float<3> x, out uint_only status) : texcube_t_gather_red_s;
- $match<0, -1> void<4> [[]] GatherGreen(in sampler s, in float<3> x, out uint_only status) : texcube_t_gather_green_s;
- $match<0, -1> void<4> [[]] GatherBlue(in sampler s, in float<3> x, out uint_only status) : texcube_t_gather_blue_s;
- $match<0, -1> void<4> [[]] GatherAlpha(in sampler s, in float<3> x, out uint_only status) : texcube_t_gather_alpha_s;
- $match<0, -1> void<4> [[]] GatherCmp(in sampler_cmp s, in float<3> x, in float compareValue, out uint_only status) : texcube_t_gather_comp_s;
- $match<0, -1> void<4> [[]] GatherCmpRed(in sampler_cmp s, in float<3> x, in float compareValue, out uint_only status) : texcube_t_gather_comp_red_s;
- $match<0, -1> void<4> [[]] GatherCmpGreen(in sampler_cmp s, in float<3> x, in float compareValue, out uint_only status) : texcube_t_gather_comp_green_s;
- $match<0, -1> void<4> [[]] GatherCmpBlue(in sampler_cmp s, in float<3> x, in float compareValue, out uint_only status) : texcube_t_gather_comp_blue_s;
- $match<0, -1> void<4> [[]] GatherCmpAlpha(in sampler_cmp s, in float<3> x, in float compareValue, out uint_only status) : texcube_t_gather_comp_alpha_s;
- } namespace
- namespace TextureCUBEArrayMethods {
- float [[ro]] CalculateLevelOfDetail(in sampler s, in float<3> x) : texcube_t_calc_lod_array;
- float [[ro]] CalculateLevelOfDetailUnclamped(in sampler s, in float<3> x) : texcube_t_calc_lod_unclamped_array;
- $match<0, -1> void<4> [[ro]] Gather(in sampler s, in float<4> x) : texcube_t_gather_array;
- $match<0, -1> void<4> [[ro]] GatherAlpha(in sampler s, in float<4> x) : texcube_t_gather_alpha_array;
- $match<0, -1> void<4> [[ro]] GatherBlue(in sampler s, in float<4> x) : texcube_t_gather_blue_array;
- $match<0, -1> void<4> [[ro]] GatherCmp(in sampler_cmp s, in float<4> x, in float compareValue) : texcube_t_gather_comp_array;
- $match<0, -1> void<4> [[ro]] GatherCmpAlpha(in sampler_cmp s, in float<4> x, in float compareValue) : texcube_t_gather_comp_alpha_array;
- $match<0, -1> void<4> [[ro]] GatherCmpBlue(in sampler_cmp s, in float<4> x, in float compareValue) : texcube_t_gather_comp_blue_array;
- $match<0, -1> void<4> [[ro]] GatherCmpGreen(in sampler_cmp s, in float<4> x, in float compareValue) : texcube_t_gather_comp_green_array;
- $match<0, -1> void<4> [[ro]] GatherCmpRed(in sampler_cmp s, in float<4> x, in float compareValue) : texcube_t_gather_comp_red_array;
- $match<0, -1> void<4> [[ro]] GatherGreen(in sampler s, in float<4> x) : texcube_t_gather_green_array;
- $match<0, -1> void<4> [[ro]] GatherRed(in sampler s, in float<4> x) : texcube_t_gather_red_array;
- void [[]] GetDimensions(in uint x, out uint_only width, out $type2 height, out $type2 elements, out $type2 levels) : resinfo_uint;
- void [[]] GetDimensions(in uint x, out float_like width, out $type2 height, out $type2 elements, out $type2 levels) : resinfo;
- void [[]] GetDimensions(out uint_only width, out $type1 height, out $type1 elements) : resinfo_uint_o;
- void [[]] GetDimensions(out float_like width, out $type1 height, out $type1 elements) : resinfo_o;
- $classT [[ro]] Sample(in sampler s, in float<4> x) : texcube_t_array;
- $classT [[ro]] SampleBias(in sampler s, in float<4> x, in float bias) : texcube_t_bias_array;
- float_like [[ro]] SampleCmp(in sampler_cmp s, in float<4> x, in float c) : texcube_t_comp_array;
- float_like [[ro]] SampleCmpLevelZero(in sampler_cmp s, in float<4> x, in float c) : texcube_t_comp_lz_array;
- $classT [[ro]] SampleGrad(in sampler s, in float<4> x, in $match<2, 2> float<3> ddx, in $match<2, 2> float<3> ddy) : texcube_t_dd_array;
- $classT [[ro]] SampleLevel(in sampler s, in float<4> x, in float lod) : texcube_t_lod_array;
- $classT [[ro]] Sample(in sampler s, in float<4> x, in float clamp) : texcube_t_array_cl;
- $classT [[]] Sample(in sampler s, in float<4> x, in float clamp, out uint_only status) : texcube_t_array_cl_s;
- float_like [[ro]] SampleCmp(in sampler_cmp s, in float<4> x, in float compareValue, in float clamp) : texcube_t_comp_array_cl;
- float_like [[]] SampleCmp(in sampler_cmp s, in float<4> x, in float compareValue, in float clamp, out uint_only status) : texcube_t_comp_array_cl_s;
- float_like [[]] SampleCmpLevelZero(in sampler_cmp s, in float<4> x, in float compareValue, out uint_only status) : texcube_t_comp_array_s;
- $classT [[]] SampleLevel(in sampler s, in float<4> x, in float lod, out uint_only status) : texcube_t_lod_array_s;
- $classT [[ro]] SampleBias(in sampler s, in float<4> x, in float bias, in float clamp) : texcube_t_bias_array_cl;
- $classT [[]] SampleBias(in sampler s, in float<4> x, in float bias, in float clamp, out uint_only status) : texcube_t_bias_array_cl_s;
- $classT [[ro]] SampleGrad(in sampler s, in float<4> x, in $match<2, 2> float<3> ddx, in $match<2, 2> float<3> ddy, in float clamp) : texcube_t_dd_array_cl;
- $classT [[]] SampleGrad(in sampler s, in float<4> x, in $match<2, 2> float<3> ddx, in $match<2, 2> float<3> ddy, in float clamp, out uint_only status) : texcube_t_dd_array_cl_s;
- $match<0, -1> void<4> [[]] Gather(in sampler s, in float<4> x, out uint_only status) : texcube_t_gather_array_s;
- $match<0, -1> void<4> [[]] GatherRed(in sampler s, in float<4> x, out uint_only status) : texcube_t_gather_red_array_s;
- $match<0, -1> void<4> [[]] GatherGreen(in sampler s, in float<4> x, out uint_only status) : texcube_t_gather_green_array_s;
- $match<0, -1> void<4> [[]] GatherBlue(in sampler s, in float<4> x, out uint_only status) : texcube_t_gather_blue_array_s;
- $match<0, -1> void<4> [[]] GatherAlpha(in sampler s, in float<4> x, out uint_only status) : texcube_t_gather_alpha_array_s;
- $match<0, -1> void<4> [[]] GatherCmp(in sampler_cmp s, in float<4> x, in float compareValue, out uint_only status) : texcube_t_gather_comp_array_s;
- $match<0, -1> void<4> [[]] GatherCmpRed(in sampler_cmp s, in float<4> x, in float compareValue, out uint_only status) : texcube_t_gather_comp_red_array_s;
- $match<0, -1> void<4> [[]] GatherCmpGreen(in sampler_cmp s, in float<4> x, in float compareValue, out uint_only status) : texcube_t_gather_comp_green_array_s;
- $match<0, -1> void<4> [[]] GatherCmpBlue(in sampler_cmp s, in float<4> x, in float compareValue, out uint_only status) : texcube_t_gather_comp_blue_array_s;
- $match<0, -1> void<4> [[]] GatherCmpAlpha(in sampler_cmp s, in float<4> x, in float compareValue, out uint_only status) : texcube_t_gather_comp_alpha_array_s;
- } namespace
- namespace BufferMethods {
- void [[]] GetDimensions(out uint_only width) : bufinfo;
- $classT [[ro]] Load(in int<1> x) : buffer_load;
- $classT [[]] Load(in int<1> x, out uint_only status) : buffer_load_s;
- } namespace
- namespace RWTexture1DMethods {
- void [[]] GetDimensions(out uint_only width) : resinfo_o;
- void [[]] GetDimensions(out float_like width) : resinfo_o;
- $classT [[ro]] Load(in int<1> x) : rwtex1d_load;
- $classT [[]] Load(in int<1> x, out uint_only status) : rwtex1d_load_s;
- } namespace
- namespace RWTexture1DArrayMethods {
- void [[]] GetDimensions(out uint_only width, out $type1 elements) : resinfo_uint_o;
- void [[]] GetDimensions(out float_like width, out $type1 elements) : resinfo_o;
- $classT [[ro]] Load(in int<2> x) : rwtex1d_load_array;
- $classT [[]] Load(in int<2> x, out uint_only status) : rwtex1d_load_array_s;
- } namespace
- namespace RWTexture2DMethods {
- void [[]] GetDimensions(out uint_only width, out $type1 height) : resinfo_uint_o;
- void [[]] GetDimensions(out float_like width, out $type1 height) : resinfo_o;
- $classT [[ro]] Load(in int<2> x) : rwtex2d_load;
- $classT [[]] Load(in int<2> x, out uint_only status) : rwtex2d_load_s;
- } namespace
- namespace RWTexture2DArrayMethods {
- void [[]] GetDimensions(out uint_only width, out $type1 height, out $type1 elements) : resinfo_uint_o;
- void [[]] GetDimensions(out float_like width, out $type1 height, out $type1 elements) : resinfo_o;
- $classT [[ro]] Load(in int<3> x) : rwtex2d_load_array;
- $classT [[]] Load(in int<3> x, out uint_only status) : rwtex2d_load_array_s;
- } namespace
- namespace RWTexture3DMethods {
- void [[]] GetDimensions(out uint_only width, out $type1 height, out $type1 depth) : resinfo_uint_o;
- void [[]] GetDimensions(out float_like width, out $type1 height, out $type1 depth) : resinfo_o;
- $classT [[ro]] Load(in int<3> x) : rwtex3d_load;
- $classT [[]] Load(in int<3> x, out uint_only status) : rwtex3d_load_s;
- } namespace
- namespace RWBufferMethods {
- void [[]] GetDimensions(out uint_only width) : bufinfo;
- $classT [[ro]] Load(in int x) : rwbuffer_load;
- $classT [[]] Load(in int x, out uint_only status) : rwbuffer_load_s;
- } namespace
- namespace ByteAddressBufferMethods {
- void [[]] GetDimensions(out uint_only width) : bufinfo;
- $funcT [[ro]] Load(in uint byteOffset) : byteaddress_load;
- uint<2> [[ro]] Load2(in uint byteOffset) : byteaddress_load;
- uint<3> [[ro]] Load3(in uint byteOffset) : byteaddress_load;
- uint<4> [[ro]] Load4(in uint byteOffset) : byteaddress_load;
- $funcT [[]] Load(in uint byteOffset, out uint_only status) : byteaddress_load_s;
- uint<2> [[]] Load2(in uint byteOffset, out uint_only status) : byteaddress_load_s;
- uint<3> [[]] Load3(in uint byteOffset, out uint_only status) : byteaddress_load_s;
- uint<4> [[]] Load4(in uint byteOffset, out uint_only status) : byteaddress_load_s;
- } namespace
- namespace RWByteAddressBufferMethods {
- void [[]] GetDimensions(out uint_only width) : bufinfo;
- $funcT [[ro]] Load(in uint byteOffset) : byteaddress_load;
- uint<2> [[ro]] Load2(in uint byteOffset) : byteaddress_load;
- uint<3> [[ro]] Load3(in uint byteOffset) : byteaddress_load;
- uint<4> [[ro]] Load4(in uint byteOffset) : byteaddress_load;
- $funcT [[]] Load(in uint byteOffset, out uint_only status) : byteaddress_load_s;
- uint<2> [[]] Load2(in uint byteOffset, out uint_only status) : byteaddress_load_s;
- uint<3> [[]] Load3(in uint byteOffset, out uint_only status) : byteaddress_load_s;
- uint<4> [[]] Load4(in uint byteOffset, out uint_only status) : byteaddress_load_s;
- void [[]] Store(in uint byteOffset, in $funcT value) : byteaddress_store;
- void [[]] Store2(in uint byteOffset, in uint<2> value) : byteaddress_store;
- void [[]] Store3(in uint byteOffset, in uint<3> value) : byteaddress_store;
- void [[]] Store4(in uint byteOffset, in uint<4> value) : byteaddress_store;
- // 64-bit integer interlocks
- void [[]] InterlockedAdd64(in uint byteOffset, in u64 value);
- void [[]] InterlockedAdd64(in uint byteOffset, in u64 value, out any_int64 original) : interlockedadd_immediate;
- void [[unsigned_op=InterlockedUMin,overload=1]] InterlockedMin64(in uint byteOffset, in any_int64 value) : interlockedmin;
- void [[unsigned_op=InterlockedUMin,overload=1]] InterlockedMin64(in uint byteOffset, in any_int64 value, out any_int64 original) : interlockedmin_immediate;
- void [[unsigned_op=InterlockedUMax,overload=1]] InterlockedMax64(in uint byteOffset, in any_int64 value) : interlockedmax;
- void [[unsigned_op=InterlockedUMax,overload=1]] InterlockedMax64(in uint byteOffset, in any_int64 value, out any_int64 original) : interlockedmax_immediate;
- void [[]] InterlockedAnd64(in uint byteOffset, in u64 value);
- void [[]] InterlockedAnd64(in uint byteOffset, in u64 value, out any_int64 original) : interlockedand_immediate;
- void [[]] InterlockedOr64(in uint byteOffset, in u64 value);
- void [[]] InterlockedOr64(in uint byteOffset, in u64 value, out any_int64 original) : interlockedor_immediate;
- void [[]] InterlockedXor64(in uint byteOffset, in u64 value);
- void [[]] InterlockedXor64(in uint byteOffset, in u64 value, out any_int64 original) : interlockedxor_immediate;
- void [[]] InterlockedCompareStore64(in uint byteOffset, in u64 compare, in u64 value);
- void [[]] InterlockedExchange64(in uint byteOffset, in any_int64 value, out any_int64 original);
- void [[]] InterlockedCompareExchange64(in uint byteOffset, in u64 compare, in u64 value, out any_int64 original);
- // floating point interlocks
- void [[]] InterlockedExchangeFloat(in uint byteOffest, in float value, out float original);
- void [[]] InterlockedCompareStoreFloatBitwise(in uint byteOffest, in float compare, in float value);
- void [[]] InterlockedCompareExchangeFloatBitwise(in uint byteOffest, in float compare, in float value, out float original);
- // 32-bit integer interlocks
- void [[]] InterlockedAdd(in uint byteOffset, in uint value);
- void [[]] InterlockedAdd(in uint byteOffset, in uint value, out uint original) : interlockedadd_immediate;
- void [[unsigned_op=InterlockedUMin,overload=1]] InterlockedMin(in uint byteOffset, in any_int32 value) : interlockedmin;
- void [[unsigned_op=InterlockedUMin,overload=1]] InterlockedMin(in uint byteOffset, in any_int32 value, out uint original) : interlockedmin_immediate;
- void [[unsigned_op=InterlockedUMax,overload=1]] InterlockedMax(in uint byteOffset, in any_int32 value) : interlockedmax;
- void [[unsigned_op=InterlockedUMax,overload=1]] InterlockedMax(in uint byteOffset, in any_int32 value, out uint original) : interlockedmax_immediate;
- void [[]] InterlockedAnd(in uint byteOffset, in uint value);
- void [[]] InterlockedAnd(in uint byteOffset, in uint value, out uint original) : interlockedand_immediate;
- void [[]] InterlockedOr(in uint byteOffset, in uint value);
- void [[]] InterlockedOr(in uint byteOffset, in uint value, out uint original) : interlockedor_immediate;
- void [[]] InterlockedXor(in uint byteOffset, in uint value);
- void [[]] InterlockedXor(in uint byteOffset, in uint value, out uint original) : interlockedxor_immediate;
- void [[]] InterlockedCompareStore(in uint byteOffset, in uint compare, in uint value);
- void [[]] InterlockedExchange(in uint byteOffset, in uint value, out uint original);
- void [[]] InterlockedCompareExchange(in uint byteOffset, in uint compare, in uint value, out uint original);
- } namespace
- namespace StructuredBufferMethods {
- void [[]] GetDimensions(out uint_only count, out uint_only stride) : bufinfo;
- $classT [[ro]] Load(in int x) : structured_buffer_load;
- $classT [[]] Load(in int x, out uint_only status) : structured_buffer_load_s;
- } namespace
- namespace RWStructuredBufferMethods {
- void [[]] GetDimensions(out uint_only count, out uint_only stride) : bufinfo;
- uint [[]] IncrementCounter() : structuredbuffer_inc;
- uint [[]] DecrementCounter() : structuredbuffer_dec;
- $classT [[ro]] Load(in int x) : rwstructured_buffer_load;
- $classT [[]] Load(in int x, out uint_only status) : rwstructured_buffer_load_s;
- } namespace
- namespace AppendStructuredBufferMethods {
- void [[]] GetDimensions(out uint_only count, out uint_only stride) : bufinfo;
- void [[]] Append(in $match<-1,0> void value ) : structuredbuffer_append;
- } namespace
- namespace ConsumeStructuredBufferMethods {
- void [[]] GetDimensions(out uint_only count, out uint_only stride) : bufinfo;
- $classT [[]] Consume() : structuredbuffer_consume;
- } namespace
- namespace FeedbackTexture2DMethods {
- void [[]] WriteSamplerFeedback(in Texture2D t, in sampler s, in float<2> x);
- void [[]] WriteSamplerFeedback(in Texture2D t, in sampler s, in float<2> x, in float clamp);
- void [[]] WriteSamplerFeedbackBias(in Texture2D t, in sampler s, in float<2> x, in float bias);
- void [[]] WriteSamplerFeedbackBias(in Texture2D t, in sampler s, in float<2> x, in float bias, in float clamp);
- void [[]] WriteSamplerFeedbackGrad(in Texture2D t, in sampler s, in float<2> x, in float<2> ddx, in float<2> ddy);
- void [[]] WriteSamplerFeedbackGrad(in Texture2D t, in sampler s, in float<2> x, in float<2> ddx, in float<2> ddy, in float clamp);
- void [[]] WriteSamplerFeedbackLevel(in Texture2D t, in sampler s, in float<2> x, in float lod);
- } namespace
- namespace FeedbackTexture2DArrayMethods {
- void [[]] WriteSamplerFeedback(in Texture2DArray t, in sampler s, in float<3> x);
- void [[]] WriteSamplerFeedback(in Texture2DArray t, in sampler s, in float<3> x, in float clamp);
- void [[]] WriteSamplerFeedbackBias(in Texture2DArray t, in sampler s, in float<3> x, in float bias);
- void [[]] WriteSamplerFeedbackBias(in Texture2DArray t, in sampler s, in float<3> x, in float bias, in float clamp);
- void [[]] WriteSamplerFeedbackGrad(in Texture2DArray t, in sampler s, in float<3> x, in float<2> ddx, in float<2> ddy);
- void [[]] WriteSamplerFeedbackGrad(in Texture2DArray t, in sampler s, in float<3> x, in float<2> ddx, in float<2> ddy, in float clamp);
- void [[]] WriteSamplerFeedbackLevel(in Texture2DArray t, in sampler s, in float<3> x, in float lod);
- } namespace
- namespace RayQueryMethods {
- void [[]] TraceRayInline(in acceleration_struct AccelerationStructure, in uint RayFlags, in uint InstanceInclusionMask, in ray_desc Ray);
- bool [[]] Proceed();
- void [[]] Abort();
- void [[]] CommitNonOpaqueTriangleHit();
- void [[]] CommitProceduralPrimitiveHit(in float t);
- uint [[ro]] CommittedStatus();
- uint [[ro]] CandidateType();
- float<3,4> [[ro]] CandidateObjectToWorld3x4();
- float<4,3> [[ro]] CandidateObjectToWorld4x3();
- float<3,4> [[ro]] CandidateWorldToObject3x4();
- float<4,3> [[ro]] CandidateWorldToObject4x3();
- float<3,4> [[ro]] CommittedObjectToWorld3x4();
- float<4,3> [[ro]] CommittedObjectToWorld4x3();
- float<3,4> [[ro]] CommittedWorldToObject3x4();
- float<4,3> [[ro]] CommittedWorldToObject4x3();
- bool [[ro]] CandidateProceduralPrimitiveNonOpaque();
- bool [[ro]] CandidateTriangleFrontFace();
- bool [[ro]] CommittedTriangleFrontFace();
- float<2> [[ro]] CandidateTriangleBarycentrics();
- float<2> [[ro]] CommittedTriangleBarycentrics();
- uint [[ro]] RayFlags();
- float<3> [[ro]] WorldRayOrigin();
- float<3> [[ro]] WorldRayDirection();
- float [[ro]] RayTMin();
- float [[ro]] CandidateTriangleRayT();
- float [[ro]] CommittedRayT();
- uint [[ro]] CandidateInstanceIndex();
- uint [[ro]] CandidateInstanceID();
- uint [[ro]] CandidateGeometryIndex();
- uint [[ro]] CandidatePrimitiveIndex();
- float<3> [[ro]] CandidateObjectRayOrigin();
- float<3> [[ro]] CandidateObjectRayDirection();
- uint [[ro]] CommittedInstanceIndex();
- uint [[ro]] CommittedInstanceID();
- uint [[ro]] CommittedGeometryIndex();
- uint [[ro]] CommittedPrimitiveIndex();
- float<3> [[ro]] CommittedObjectRayOrigin();
- float<3> [[ro]] CommittedObjectRayDirection();
- uint [[ro]] CandidateInstanceContributionToHitGroupIndex();
- uint [[ro]] CommittedInstanceContributionToHitGroupIndex();
- } namespace
- // SPIRV Change Starts
- namespace VkSubpassInputMethods {
- $classT [[]] SubpassLoad() : subpassinput_load;
- } namespace
- namespace VkSubpassInputMSMethods {
- $classT [[]] SubpassLoad(in int sample) : subpassinputms_load;
- } namespace
- // SPIRV Change Ends
|