- 13 Nov, 2016 1 commit
-
-
steve-lunarg authored
Previously, an error was thrown when assigning a float1 to a scalar float, or similar for other basic types. This allows that. Also, this allows calling functions accepting scalars with float1 params, so for example sin(float1) will work. This is a minor change in HlslParseContext::findFunction().
-
- 11 Nov, 2016 2 commits
-
-
John Kessenich authored
HLSL: Allow expressions in attributes
-
steve-lunarg authored
For example: [numthreads(2+2, 2*3, (1+FOO)*BAR)] This will result in a thread count (4, 6, 8).
-
- 05 Nov, 2016 1 commit
-
-
John Kessenich authored
Rationalizes the entire tracking of the linker object nodes, effecting GLSL, HLSL, and SPIR-V, to allow tracked objects to be fully edited before their type snapshot for linker objects. Should only effect things when the rest of the AST contained no reference to the symbol, because normal AST nodes were not stale. Also will only effect such objects when their types were edited.
-
- 01 Nov, 2016 6 commits
-
-
John Kessenich authored
Fix build warnings in iomapper.cpp, re-indent to glslang standard
-
steve-lunarg authored
This has no functional changes.
-
John Kessenich authored
HLSL: implement numthreads for compute shaders
-
John Kessenich authored
HLSL -> Spir-V: Resource mapping handler
-
John Kessenich authored
HLSL: Add min*{float,int,uint} types -
John Kessenich authored
Use std::atoi instead of std::stoi
-
- 31 Oct, 2016 3 commits
-
-
David Neto authored
Some Android cross cross-compilers don't have std::stoi. E.g. i686-linux-android-g++ from Android NDK r10e don't have std::stoi.
-
steve-lunarg authored
These HLSL types are guaranteed to have at least the given number of bits, but may have more. min{16,10}float is mapped to EbtFloat at medium precision -> SPIRV RelaxedPrecision min{16,12}int and min16uint are mapped to mediump -> SPIR-V RelaxedPrecision -
steve-lunarg authored
This PR adds handling of the numthreads attribute for compute shaders, as well as a general infrastructure for returning attribute values from acceptAttributes, which may be needed in other cases, e.g, unroll(x), or merely to know if some attribute without params was given. A map of enum values from TAttributeType to TIntermAggregate nodes is built and returned. It can be queried with operator[] on the map. In the future there may be a need to also handle strings (e.g, for patchconstantfunc), and those can be easily added into the class if needed. New test is in hlsl.numthreads.comp.
-
- 29 Oct, 2016 1 commit
-
-
John Kessenich authored
Add explicit lambda return types, for compilers without C++14 support
-
- 28 Oct, 2016 2 commits
- 27 Oct, 2016 4 commits
-
-
John Kessenich authored
silence -Wunknown-pragmas warnings on gcc
-
John Kessenich authored
HLSL: allow component-wise operations for logical || and &&.
-
John Kessenich authored
HLSL: Enable component-wise vector comparisons from operators
-
John Kessenich authored
GLSL: apply unused variable
-
- 26 Oct, 2016 2 commits
-
-
steve-lunarg authored
HLSL || and && can operate component-wise.
-
steve-lunarg authored
This PR only changes a few lines of code, but is subtle. In HLSL, comparison operators (<,>,<=,>=,==,!=) operate component-wise when given a vector operand. If a whole vector equality or inequality is desired, then all() or any() can be used on the resulting bool vector. This PR enables this change. Existing shape conversion is used when one of the two arguments is a vector and one is a scalar. Some existing HLSL tests had assumed == and != meant vector-wise instead of component-wise comparisons. These tests have been changed to add an explicit any() or all() to the test source. This verifably does not change the final SPIR-V binary relative to the old behavior for == and !=. The AST does change for the (now explicit, formerly implicit) any() and all(). Also, a few tests changes where they previously had the return type wrong, e.g, from a vec < vec comparison in hlsl.shapeConv.frag. Promotion of comparison opcodes to vector forms (EOpEqual->EOpVectorEqual) is handled in promoteBinary(), as is setting the proper vector type of the result. EOpVectorEqual and EOpVectorNotEqual are now accepted as either aggregate or binary nodes, similar to how the other operators are handled. Partial support already existed for this: it has been fleshed out in the printing functions in intermOut.cpp. There is an existing defect around shape conversion with 1-vectors, but that is orthogonal to this PR and not addressed by it.
-
- 25 Oct, 2016 1 commit
-
-
John Kessenich authored
Disabled MSVC 2015 compile warnings.
-
- 21 Oct, 2016 9 commits
-
-
steve-lunarg authored
-
Jeremy Hayes authored
I happened upon numArgs while hunting for unused variables. I suspect the intent was to apply it as shown in this patch. However, I am not a compiler dude. Someone more appropriate should grok this change.
-
Johannes van Waveren authored
-
Johannes van Waveren authored
-
Johannes van Waveren authored
-
John Kessenich authored
HLSL: fix defect in EOpMethodSampleCmp* texture decomposition
-
John Kessenich authored
HLSL: phase 4 of RWTexture support: add image atomics
-
John Kessenich authored
HLSL: Fix unary and binary operator type conversion issues
-
John Kessenich authored
SPV: Add missing guard to code that uses AMD extensions
-
- 20 Oct, 2016 1 commit
-
-
steve-lunarg authored
HLSL holds the compare value in a separate intrinsic arg, but the AST wants a vector including the cmp val, except in the 4-dim coord case, where it doesn't fit and is in fact a separate AST parameter. This is awkward but necessary, given AST semantics. In the process, a new vector is constructed for the combined result, but this vector was not being given the correct TType, so was causing some downstream troubles. Now it is. A similar defect existed in OpTextureBias, and has also been fixed.
-
- 19 Oct, 2016 3 commits
-
-
steve-lunarg authored
A need arose to use capabilities from TIntermediate during node promotion. These methods have been moved from virtual methods on the TIntermUnary and TIntermBinary nodes to methods on TIntermediate, so it is easy for them construct new nodes and so on. This is done as a separate commit to verify that no test results are changed as a result.
-
steve-lunarg authored
This PR will turn Interlocked* intrinsics using rwtexture or rwbuffer object as the first parameter into the proper OpImageAtomic* operations.
-
David Neto authored
Otherwise compilation fails when ENABLED_AMD_EXTENSIONS is off.
-
- 18 Oct, 2016 1 commit
-
-
steve-lunarg authored
This fixes defects as follows: 1. handleLvalue could be called on a non-L-value, and it shouldn't be. 2. HLSL allows unary negation on non-bool values. TUnaryOperator::promote can now promote other types (e.g, int, float) to bool for this op. 3. HLSL allows binary logical operations (&&, ||) on arbitrary types, similar (2). 4. HLSL allows mod operation on arbitrary types, which will be promoted. E.g, int % float -> float % float.
-
- 16 Oct, 2016 3 commits
-
-
John Kessenich authored
-
John Kessenich authored
-
John Kessenich authored
-