609 Commits

Author SHA1 Message Date
John Kessenich
2359bd0a1d SPV: Fix extra operands when using the "struct" form of a built-in taking an 'out' param. 2015-12-06 19:29:11 -07:00
John Kessenich
e721f49dbd SPV: Distinguish between std140 and std430 layouts, and correctly use alignments as the base for strides. 2015-12-06 19:17:49 -07:00
John Kessenich
dd6ca17845 Semantics: Correct that std430 is universally disallowed with 'uniform'. 2015-12-06 18:10:27 -07:00
John Kessenich
1be8063e01 Require l-value patch-out indexing to be gl_InvocationID.
Also, generally allow ES variable indexing of in/out blocks.
2015-11-28 16:52:25 -07:00
John Kessenich
989df85dcd Array-sizing bug fix: multiple array initializers of different size in the same declaration.
Handles the case of
    float[] x = float[] (1.0, 2.0, 3.0),
            y = float[] (1.0, 2.0, 3.0, 4.0);
where a shallow copy of the type arrayness from the left-most float[]
was getting used twice.
2015-11-28 12:52:29 -07:00
Rex Xu
71519fe70b SPV: Fix an issue related with using CubeArrayShadow for texture() 2015-11-22 21:43:05 +08:00
John Kessenich
085371d9d4 SPV testing: Add missing test case. 2015-11-16 09:31:26 -07:00
John Kessenich
55e7d11ce8 SPIR-V: Move from Version .99 Rev 31 to Version 1.0, Rev 2. 2015-11-15 22:31:41 -07:00
John Kessenich
fa540d1414 SPV: Remove accidental inclusion of a test. 2015-10-15 13:55:18 -06:00
John Kessenich
7c1aa1026e SPV: Implement short circuiting of && and || when emitting SPIR-V. 2015-10-15 13:50:48 -06:00
John Kessenich
da581a2b95 GL_ARB_shader_draw_parameters: From @amdrexu, implement extension. 2015-10-14 14:10:30 -06:00
John Kessenich
b5c046e58b Front-end: Fix missing tessellation shader built-in qualifiers.
The gl_in array has a special path due to context-specific
gl_MaxPatchVertices, making the code out of order for tagging built-ins.
This commit moves the tagging to the correct location.
This also fixes issue #80.
2015-10-13 17:23:10 -06:00
John Kessenich
e690332c3c SPV: Add modes for spacing, depth, depth replacing, winding, and point mode. 2015-10-13 16:29:02 -06:00
John Kessenich
716312771c SPV constants and constOffsets completion: isConstant() and disassembler to see results.
Expand to full isConstant() implementation.
Fix disassembler to generate texture look-up masks.
2015-10-13 10:45:22 -06:00
Rex Xu
19c6e5919f Fix an issue related with texelFetchOffset 2015-10-12 17:02:21 +08:00
John Kessenich
820a22fcc8 Give error for calling a user-defined function at global scope. 2015-10-06 13:11:38 -06:00
John Kessenich
894c1c109f Add another frexp() test. 2015-10-05 10:00:27 -06:00
John Kessenich
eb505e4262 Allow future keywords to be accessed as members in a struct.
This fixes a bug where a token that could be a keyword in one version
is not a keyword in another version, but treated like a non-member after
a "." dereference.
2015-10-02 15:01:53 -06:00
John Kessenich
6373574b13 Front-end: Fix: Cubemap arrays only use 3-component coord when accessed as an image.
4 components are needed when used a texture, but not an image, which multiplies
layers and faces into the same coordinate.  This fixes it from using 4 everywhere,
to only using 4 for textures and 3 for images.
2015-10-01 12:40:48 -06:00
John Kessenich
3cd0024ea8 GLSL front-end: Check recursively for opaque types in a block; these are all illegal. 2015-09-30 18:57:47 -06:00
John Kessenich
ee21fc9081 SPV: Fix missing 'Member' operand to OpArrayLength. 2015-09-21 21:50:29 -06:00
John Kessenich
b56a26ab4d SPV: Generate the LocalSize Execution Mode for compute shaders. 2015-09-16 16:04:05 -06:00
John Kessenich
56bab0483a SPV: Minor corrections to previous big merge for images and atomics. 2015-09-16 11:42:16 -06:00
Rex Xu
6b86d496c2 Add new test case for image functions and fix issues caught by this test 2015-09-16 17:48:22 +08:00
John Kessenich
2398b3a458 Full stack: implement textureQueryLod(*) and textureQueryLevels(*). 2015-09-15 19:38:56 -06:00
John Kessenich
3e60a6ff13 SPV OpAtomicCompareSwap: Generate correct operand order and number of operands. 2015-09-14 22:45:16 -06:00
John Kessenich
7355eebb18 SPV legacy texturing: Smear result of Op*Dref* up to a vector to match
the expectations of old GLSL shadow*() lookups.
2015-09-14 22:08:12 -06:00
John Kessenich
e770b3e6cf SPV return from main: Simplify a legacy design such returns are not jumps to exit block.
Structured control-flow rules allow leaving the middle of a construct through
a return, but not through a jump to a block that does a return.

Addresses issue #58.
2015-09-14 21:08:58 -06:00
John Kessenich
5f5b205ce9 Bump up layout(location) limit from 62 to 4094, to handle bigger uniform locations. 2015-09-13 21:03:33 -06:00
John Kessenich
fa668dad99 SPV: Reduce spurious type generation by removing intermediate types in the middle of access chains.
This generally simplifies access chain generation, with far fewer  type conversions.
It is particularly important to future SPIR-V changes where there is less aggregate
type uniqueness due to carrying different layout information with the type.
2015-09-13 14:46:30 -06:00
John Kessenich
c9a808319a SPV arrays: Add support for runtime-sized array types and arrays of arrays.
This includes run-time block.member.length() (OpArrayLength).
2015-09-13 10:18:19 -06:00
John Kessenich
9312269d09 Front-end Arrays of arrays: Add ES-specific checks and tests. AoA should be quite close to done now. 2015-09-11 15:25:38 -06:00
John Kessenich
31ed4830d1 SPV: Only decorate array and matrix strides for transparent types requiring explicit layouts. 2015-09-09 17:51:38 -06:00
John Kessenich
874b1f8858 Add test results for merge pull request #69. 2015-09-09 16:36:37 -06:00
John Kessenich
358dd560c5 Update test results for pull request #68, SPIRV: Decorate matrices and arrays with their strides. 2015-09-09 16:19:15 -06:00
John Kessenich
68e1c454da Merge pull request #60 from xorgy/no-define-defined
Preprocessor:  'defined' cannot be used as a macro name in #define or #undef.
2015-09-09 15:45:23 -06:00
John Kessenich
c8b2e36f52 Implement GL_KHR_blend_equation_advanced. 2015-08-30 05:43:51 -06:00
Aaron Hamilton
7d3b73bfff 'defined' cannot be used as a macro name in #define or #undef. 2015-08-29 23:15:13 +00:00
John Kessenich
d6c37b190b GL_OES_shader_multisample_interpolation: Include scalar swizzles as valid for interpolateAt*. 2015-08-22 16:54:35 -06:00
John Kessenich
0fc4338f3e Implement GL_OES_shader_multisample_interpolation, as well as core desktop versions of it. 2015-08-22 13:11:12 -06:00
John Kessenich
fc51d284aa Backward incompatible: Turn on PureOperatorBuiltins: use only enum-based built-in functions in the AST.
If this breaks your AST consumer, best is to modify it to test
against the enum values instead of doing string comparisons on
built-in function names.  This is the reason the change was made.

If you need the old behavior, you should be able to get it back by changing
PureOperatorBuiltins to be false instead of true.  This path will work for
a while, but is marked deprecated.

Also, the old behavior is tagged as release 2.4.
2015-08-19 13:43:25 -06:00
John Kessenich
ef676b0a59 Front-end "pure" built-in TOperator: Finish adding full support, but still turned off.
This is to avoid all need to do text comparison of built-in function names
when consuming the AST.  All built-in functions get enumerants.

Will want to turn on soon.  See PureOperatorBuiltins.  See issue #8.
2015-08-18 23:17:15 -06:00
John Kessenich
e88217b7d8 Add more TOperator: fma/frexp/ldexp, AddCarry/SubBorrow/MulExtended/Bit*/Find*, (un)pack4x8/2x32, ftransform.
Also corrects some existing ones missing the "Op" part of their name.
2015-08-18 22:27:23 -06:00
John Kessenich
f5b2c06b32 Turn on the gpu_shader5 of the AEP .tesc test. 2015-08-18 22:27:22 -06:00
John Kessenich
fb5ba510ca Implement GL_OES_shader_image_atomic. 2015-08-16 23:40:15 -06:00
John Kessenich
556ab3ac96 Implement GL_OES_sample_variables. 2015-08-16 21:55:59 -06:00
John Kessenich
a39159a192 Implement GL_OES_texture_storage_multisample_2d_array. 2015-08-16 21:10:38 -06:00
John Kessenich
2b0a11351f Fix two multi-sample bugs: 1) include MS in name mangling, 2) add 'sample' argument texelFetch(*MS*,...). 2015-08-16 21:04:07 -06:00
John Kessenich
dc9eff7221 Implement GL_OES_texture_cube_map_array. 2015-08-16 14:21:20 -06:00
John Kessenich
302b46aebc Implement GL_OES_texture_buffer. 2015-08-16 13:11:01 -06:00