Skip to content

Incomplete or missing features

James Jones edited this page Mar 3, 2014 · 14 revisions

Double precision floating point operands

ARB_gpu_shader_fp64

Geometry shader vertex output streams

Some basic work done in this area. Main problem is that a single output register can be aliased to multiple streams.

Typeless

HLSL registers are typeless. This allows bitwise operations on floating point for example. This has been reported as issue #8.

goto opcode

Not directly supported by GLSL

Atomic memory operations form ARB_shader_storage_buffer_object.

swapc opcode

Performs a component-wise conditional swap of the values between two input registers.

ARB_shading_language_420pack allows swizzle on scalars

Reflection code is incomplete. Only decodes to bare minimum which the cross compiler requires itself.

Ideally identical to D3D structures - helps porting. Provide the used-size of constant buffers to calling application so it can use glBindBufferRange to restrict the ubo map range range and maybe help performance.

per-tessellation-patch attributes

Try to make use of patch in/patch out. Patch out should be join phase outputs? How to match up with domain inputs?

Support precision on temporary variables. Start by setting each temp's precision to the highest it is used with.

Further work on default values for constants

currently only knows about 32-bit scalars. Could also set inside shader code when uniform blocks are not used.

C++ and C helper utility to manage binding a HLSLCC generated shader to the GL pipeline.

Should handle monolithic and separate_shader_objects approaches.

Support single texture sampled with multiple sampler states.

Unlike HLSL, GLSL does not have support separate sampler and image handles. It will likely do so in the future, but even then a single image+sampler handle should be supported to handle earlier versions of the language.
Current implementation creates a GL sampler uniform for each D3D image. The GL sampler is given the name of the D3D image. For textures which are sampled with and without depth compare, the cross-compiler does support the creation of both a regular sampler and a shadow sampler. In this case the shadow sampler will be given the name of the regular GL sampler prefixed with 'hlslcc_zcmp_'.

Clone this wiki locally