Skip to content

Incomplete or missing features

James-Jones edited this page Feb 18, 2013 · 14 revisions

Double precision floating point operands

ARB_gpu_shader_fp64

Use real integer types (ivec*) where appropriate.

goto opcode

Not directly supported by GLSL

swapc opcode

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

ATOMIC opcodes

ARB_shader_atomic_counters.

Unordered access views.

ARB_shader_image_load_store, imageAtomic functions and image uniform type. OPCODE_LD_UAV_TYPED OPCODE_STORE_UAV_TYPED OPCODE_LD_RAW OPCODE_STORE_RAW OPCODE_LD_STRUCTURED OPCODE_STORE_STRUCTURED OPCODE_DCL_UNORDERED_ACCESS_VIEW_TYPED OPCODE_DCL_UNORDERED_ACCESS_VIEW_RAW OPCODE_DCL_UNORDERED_ACCESS_VIEW_STRUCTURED

LOD opcode

textureQueryLOD
"Returns the mipmap array(s) that would be accessed in the x component of the return value. Returns the computed level of detail relative to the base level in the y component of the return value."
mipmap arrays that would be accessed = the actual LOD used (after clamping) LOD relative to base = calculated LOD

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.

ARB_shader_subroutine.

Only patial support at the moment - interface_call not decoding function ID correctly for starters.

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.

Improve type/swizzle checking to allow hlsl_opcode_funcs to be removed.

Ability to set HLSLCC_* flags from the standalone/offline exe.

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