Open
Description
Requested HLSL features. If it's checked, it's been implemented and working for some workload. If a checked feature is not working correctly, there should be an issue reporting the incorrect behavior. A missing feature should be requested here.
- geometry, domain, and hull shaders
- member methods inside a structure, see issue HLSL: Struct/class members #535
- full pass through of attributes on loops/if/switch, e.g., [unroll], [flatten], etc., see issue HLSL: emit OpLoopMerge Unroll for HLSL [unroll] #836
- Map
half
tofloat
. See issue HLSL: Halfs are not recognized as a type #492. - namespace (about half done)
- conversions
- structure cast of scalar:
PS_OUTPUT __output__ = (PS_OUTPUT)(scalar)
- inout arguments needing bidirectional conversion
- smearing implicit-conversion
- vector truncation conversion
- vector of size 1 vs. scalar
- structure cast of scalar:
- Basic RWBuffer support
- deference of textures
- arbitrary (structure) texture return-type, see issue StructuredBuffer syntax not supported #569.
- sub-vec4 return types from sampling
- compute shaders
- numthreads
- SV_DispatchThreadID -> gl_GlobalInvocationID
- groupshared -> shared
- HLSL-specific preprocessing
- trailing () parens are required/prohibited with an empty argument list in #defines
- #include support
- -D and -U for macros on command line
- class keyword, member functions, variables, static and non static
- class inheritance from interface see https://msdn.microsoft.com/en-us/library/windows/desktop/ff471421(v=vs.85).aspx
- Multi-dimensional arrays, ala float myfloat[4][5];
- minN types, ala https://msdn.microsoft.com/en-us/library/windows/desktop/bb509646(v=vs.85).aspx.
- vertical path hookup through to SPIR-V generation
- generic preprocessor (same as GLSL)
- scanner (keywords, identifiers, etc.)
- basic types: all int/uint/float/double scalar/vector/matrix
- basic recursive-decent language grammar: declarations, expressions, statements, loops, if-else, functions
- parsing of semantics, annotations, registers, etc. on declarations
- parsing of attributes on loops/if/switch, e.g., [unroll], [flatten], etc.
- basic symbol-table scoping
- switch statements, { } initializers, typedef
- templatized vector/matrix/etc. declaration grammar
- base set of all intrinsics mappable to existing operators
- HLSL-specific intrinsics, mapped to new operators
- vec1/mat1xN/matNx1-based, etc.
- DX10 style sampler declarations
- immediate (literal) samplers
- DX9 style sampler declarations
- 2DMS and Buffer texture support
- method-based image/texture lookup
- cbuffer/tbuffer
- register and packoffset for buffers
- in/out/inout qualifiers, e.g, void MyFunc(out float x)
- default parameters, e.g, void MyFunc(float x=3)
- overloaded function signature selection under implicit type conversion
- DX12 and beyond
- syntax: ConstantBuffer
- Wave Query,Wave Vote,Wave Broadcast,Wave Reduction,Wave Scan and Prefix,Quad-wide Shuffle operations,etc..
- 64-bit types.
- printf
Activity