- Sep 29, 2016
-
-
John Kessenich authored
-
John Kessenich authored
Used initially just by HLSL, for $Global. Could be an option for GLSL -> Vulkan.
-
John Kessenich authored
-
- Sep 28, 2016
-
-
John Kessenich authored
HLSL: allow implicit size in array declarations
-
- Sep 27, 2016
-
-
steve-lunarg authored
In HLSL array sizes need not be provided explicitly in all circumstances. For example, this is valid (note no number between the [ ]): // no explicit array size uniform float g_array[] = { 1, 2, 3, 4, 5 }; This PR does not attempt to validate most invalid cases. A new test is added to verify the resulting linker objects.
-
John Kessenich authored
#517: Enable AMD extensions by default
-
Dominik Witczak authored
-
- Sep 26, 2016
-
-
John Kessenich authored
SPV: OpGroupBroadcast is unable to handle vector operand.
-
John Kessenich authored
GLSL: Add IO map tests
-
steve-lunarg authored
This PR adds a GLSL equivalent to the HLSL binding mapping tests for offsets and auto-numbering. The shaders are as equivalent as possible. The bindings of the base results match exactly between the two.
-
Rex Xu authored
-
John Kessenich authored
-
- Sep 23, 2016
-
-
John Kessenich authored
SPV: Still have to specify SPIR-V extension for gl_SubGroupSizeARB and gl_SubGroupInvocationARB.
-
Rex Xu authored
-
John Kessenich authored
Fix defects in uniform array flattening
-
- Sep 22, 2016
-
-
steve-lunarg authored
Fix for two defects as follows: - The IO mapping traverser was not setting inVisit, and would skip some AST nodes. Depending on the order of nodes, this could have prevented the binding from showing up in the generated SPIR-V. - If a uniform array was flattened, each of the flattened scalars from the array is still a (now-scalar) uniform. It was being converted to a temporary.
-
John Kessenich authored
SPV: Implement the extension SPV_KHR_shader_ballot
-
John Kessenich authored
HLSL: Flatten uniform arrays
-
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.
-
Rex Xu authored
-
- 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.
-