ES31 Status on Direct3D 11

New FeaturesStatusLimitations
Arrays of arrays (shading language only)Fully implementedNone
Compute shadersFully implementedNone
Explicit uniform locationFully implementedNone
Framebuffers with no attachmentsFully implementedNone
Indirect draw commandsFully implementedNone
Multisample formats for immutable texturesFully implementedNone
Program interface queriesFully implementedNone
Shader bitfield operations (shading language only)Fully implementedNone
Shader layout binding (shading language only)Fully implementedNone
Texture gather operationsFully implementedNone
Vertex attribute bindingFully implementedNone
Atomic countersImplemented with limitationsAtomic counters in non-compute shaders are not implemented yet.
Shader image load/store operationsImplemented with limitationsSee notes [1] below
Shader storage buffer objectsImplemented with limitationsSee notes [2] below
Shader helper invocation (shading language only)Hard to implementThe equivalent of gl_HelperInvocation is WaveIsHelperLane which requres SM6.
Separate shader objectsUnimplementedIt can be implemented with medium complexity.
Stencil texturingUnimplementedIt can be implemented with medium complexity. Refer here.

Notes [1]

  • Images in non-compute shaders are not implemented yet.
  • Multiple image variables are not allowed to be bound to the same image unit which refers to the same layer and level of a texture image. It means image aliasing is not supported.
  • The same layer and level of a texture are not allowed to be bound to multiple image units.
  • When a texture is bound to an image unit, the image unit format must exactly match the texture internal format. Similarly, the format layout qualifier for an image variable must exactly match the format of the image unit. Re-interpretation is not supported. See here.

Notes [2]

  • Shader storage blocks in non-compute shaders are not implemented yet.
  • Multiple shader storage blocks are not allowed to be bound to the same buffer. See here.