Skip to content

Incomplete or missing features

James Jones edited this page Jul 23, 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.

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.