- Sep 22, 2016
-
-
steve-lunarg authored
This checkin adds a --flatten-uniform-arrays option which can break uniform arrays of samplers, textures, or UBOs up into individual scalars named (e.g) myarray[0], myarray[1], etc. These appear as individual linkage objects. Code notes: - shouldFlatten internally calls shouldFlattenIO, and shouldFlattenUniform, but is the only flattening query directly called. - flattenVariable will handle structs or arrays (but not yet arrayed structs; this is tested an an error is generated). - There's some error checking around unhandled situations. E.g, flattening uniform arrays with initializer lists is not implemented. - This piggybacks on as much of the existing mechanism for struct flattening as it can. E.g, it uses the same flattenMap, and the same flattenAccess() method. - handleAssign() has been generalized to cope with either structs or arrays. - Extended test infrastructure to test flattening ability.
-
- Sep 21, 2016
-
-
John Kessenich authored
-
John Kessenich authored
HLSL: Add location offsets per resource type
-
steve-lunarg authored
This PR adds the ability to offset sampler, texture, and UBO bindings from provided base bindings, and to auto-number bindings that are not provided with explicit register numbers. The mechanism works as follows: - Offsets may be given on the command line for all stages, or individually for one or more single stages, in which case the offset will be auto-selected according to the stage being compiled. There is also an API to set them. The new command line options are --shift-sampler-binding, --shift-texture-binding, and --shift-UBO-binding. - Uniforms which are not given explicit bindings in the source code are auto-numbered if and only if they are in live code as determined by the algorithm used to build the reflection database, and the --auto-map-bindings option is given. This auto-numbering avoids using any binding slots which were explicitly provided in the code, whether or not that explicit use was live. E.g, "uniform Texture1D foo : register(t3);" with --shift-texture-binding 10 will reserve binding 13, whether or not foo is used in live code. - Shorter synonyms for the command line options are available. See the --help output. The testing infrastructure is slightly extended to allow use of the binding offset API, and two new tests spv.register.(no)autoassign.frag are added for comparing the resulting SPIR-V.
-
- Sep 20, 2016
-
-
John Kessenich authored
-
John Kessenich authored
This is not a claim that reflection is working right, only a way to see it is occurring and catch any regression.
-
John Kessenich authored
-
John Kessenich authored
This includes the "< decl ; decl ; >" syntax which has its own namespace. This functionality is not implemented, just silently accepted.
-
John Kessenich authored
... and use each in the correct way at consumption sites. This completes issue #513.
-
- Sep 19, 2016
-
-
John Kessenich authored
Refactor TLiveTraverser from the former reflection traverser, for fut…
-
steve-lunarg authored
This PR factors out the code that knows how to walk just the live parts of the AST. The traverser in reflect.cpp is renamed to TReflectionTraverser, and inherits from TLiveTraverser, which will also be used by a future binding offset PR. The code is now smart about the entry point name (no longer hardcoded to "main"). There is an option to traverse all code (live+dead), because a consumer of the class may wish to use it for both purposes without wanting a whole separate class hierarchy.
-
John Kessenich authored
Partially addresses issue #513.
-
John Kessenich authored
Fixes issue #510.
-
John Kessenich authored
-
John Kessenich authored
-
John Kessenich authored
-
- Sep 17, 2016
-
-
John Kessenich authored
-
John Kessenich authored
-
John Kessenich authored
Notably, use of 'linear' on a non-input could mark it as an input.
-
- Sep 16, 2016
-
-
John Kessenich authored
-
John Kessenich authored
This is needed because an output structure can contain embedded built-ins (like SV_Position) which should not get locations assigned.
-
John Kessenich authored
Locations now get assigned in order, but skipping built-ins, which can be done post flattening.
-
John Kessenich authored
At least partially addresses issue #510.
-
John Kessenich authored
SPV: Support simultaneous l-value swizzle and dynamic component selection.
-
- Sep 14, 2016
-
-
Rex Xu authored
-
- Sep 12, 2016
-
-
John Kessenich authored
This makes the interface be invariant, whether or not individual variables are used.
-
- Sep 11, 2016
-
-
John Kessenich authored
-
- Sep 10, 2016
-
-
John Kessenich authored
Vulkan can't handle structures into the vertex stage or out of the fragment stage.
-
- Sep 09, 2016
-
-
John Kessenich authored
HLSL: alias HLSL matrix-row-column onto AST matrix-column-row
-
steve-lunarg authored
WIP: HLSL: EOpGenMul arg reversal
-
John Kessenich authored
-
John Kessenich authored
-
-
John Kessenich authored
SPV: Use OpBitcast to implement 4 pack/unpack built-in functions.
-
Rex Xu authored
-
Rex Xu authored
-
- Sep 05, 2016
-
-
John Kessenich authored
This was suggested in issue #454.
-
John Kessenich authored
-
John Kessenich authored
This will prevent a possible future defect of thinking the type can be changed, where there is a code path today that would drop that change.
-
John Kessenich authored
-