Commit Graph

947 Commits

Author SHA1 Message Date
John Kessenich
6c292d3ba7 SPV: Implement Vulkan version of GLSL (KHR_vulkan_glsl). 2016-02-15 21:46:55 -07:00
John Kessenich
019f08fcd8 SPV: Fix issue #159: use ExplicitLod forms for non-fragment stages. 2016-02-15 15:40:42 -07:00
John Kessenich
5d0fa9781b SPV Capabilities: StorageImageExtendedFormats, StorageImageReadWithoutFormat, and StorageImageWriteWithoutFormat. 2016-02-15 11:57:00 -07:00
John Kessenich
5e80113939 SPV Capabilities: SampleRateShading, SparseResidency, MinLod, and ImageQuery. 2016-02-15 11:09:46 -07:00
John Kessenich
b0364dcc3e SPV Capabilities: Image types.
SampledBuffer
ImageBuffer
Sampled1D
Image1D
SampledCubeArray
ImageCubeArray
SampledRect
ImageRect
InputAttachment
ImageMSArray
StorageImageMultisample
2016-02-14 17:37:30 -07:00
John Kessenich
3c52207e8a SPV capabilities: Add int16, int64, float16, and float64. 2016-02-14 17:11:15 -07:00
John Kessenich
103bef9d74 SPV: Handle GLSL bool loads from a uniform buffer as a conversion from int -> bool.
SPIR-V bool is abstract; it has no bit pattern for storage with transparent memory.
OpenGL's convention is a bool in a uniform buffer is 32-bit int with non-0 being 'true'.
2016-02-08 21:41:30 -07:00
John Kessenich
10110596a3 Merge pull request #161 from ossy-szeged/master
Fix typo in an include guard.
2016-02-07 11:23:28 -07:00
Csaba Osztrogonác
f947debf70 Fix typo in an include guard. 2016-02-05 07:40:35 -08:00
John Kessenich
ba5685a332 Semantics: Map noise*() to an operator for PureOperatorBuiltins mode.
Fixes issue #157.
2016-02-02 15:59:12 -07:00
John Kessenich
32cfd49b68 SPV: RelaxedPrecision: Plumb this through the full AST->SPV translator. 2016-02-02 13:55:29 -07:00
John Kessenich
26bd6a313d Merge pull request #155 from mgadams/resultid_warnings
Build: Fix two new Windows build warnings/errors
2016-02-02 09:14:38 -07:00
John Kessenich
fd8a38276f Merge pull request #153 from greg-lunarg/gsf-pr1
SPV Remapper: Update for 1.0 and bug fixes
2016-02-02 09:11:01 -07:00
Mark Adams
d5ac538e23 Fix two new Windows build warnings/errors 2016-02-01 19:13:06 -08:00
GregF
8548bab1fa spirv-remap: Fixed strings not at end of operands, fixed L/S defect
Also added new op classes.
2016-02-01 16:44:57 -07:00
GregF
036a7944e5 spirv-remap: assert on unhandled OperandClass 2016-02-01 16:13:21 -07:00
GregF
796e15ad27 spirv-remap: inhibit loadstore opt if variable ref'd by other instructions 2016-02-01 16:12:48 -07:00
GregF
3bb040b71b spirv-remap: handle OperandImageOperands during remap 2016-02-01 16:12:00 -07:00
John Kessenich
9218759ebb SPV: Address superset of issue #151: missing OpCapability instructions.
This commit adds:
CapabilityGeometryPointSize
CapabilityTessellationPointSize
CapabilityClipDistance
CapabilityCullDistance
CapabilityMultiViewport
CapabilityTransformFeedback
CapabilityGeometryStreams
CapabilityDerivativeControl
CapabilityInterpolationFunction
2016-02-01 13:45:25 -07:00
John Kessenich
9df51caba9 Fix front-end bug: Constant folding of array-of-struct index op.
If a constant object was both an array and a structure, and was
indexed with a constant, the arrayness was ignored and the wrong
subconstant selected.  This fixes that.
2016-02-01 11:57:33 -07:00
John Kessenich
9d565d9ef8 Todo: removed Todo.txt, and migrated to issues, closing issue #13. 2016-01-22 18:27:05 -07:00
John Kessenich
f6eae2a54a SPV: Require desktop 140 or ES 310 or above. 2016-01-22 17:47:22 -07:00
John Kessenich
4bfeed5fe8 Semantics: Spec. changing to reflect reality of int/uint conversion for |^&.
This effects 4.x, where int/uint conversions are done, but not earlier.
2016-01-22 15:40:24 -07:00
John Kessenich
4889167430 SPV: Use a more accurate MemorySemanticsAllMemory mask. 2016-01-22 10:15:03 -07:00
John Kessenich
cd26144d24 SPV: the OpImageTexelPointer sample 0 should be <id> of 0, not literal 0. 2016-01-22 09:54:12 -07:00
John Kessenich
7b9fa25bad SPV: Add recursive distrubition of 'location' across structure members. 2016-01-21 18:56:57 -07:00
John Kessenich
7a53f76d38 SPV: Add unary-matrix operations, operating at vector level. 2016-01-20 11:19:27 -07:00
John Kessenich
dd1c223561 Merge pull request #138 from dekimir/fix-old-msvc
Fix #137 by avoiding a C++11 feature.
2016-01-20 10:46:40 -07:00
John Kessenich
aa52beb849 Merge pull request #139 from dekimir/small-header-always
SPV: Split loop header from condition testing for for/while loops.
2016-01-20 10:46:21 -07:00
Dejan Mircevski
2ab5a373d9 Add Test/spv.for-complex-condition.vert. 2016-01-20 11:54:11 -05:00
Dejan Mircevski
213bbbe4a7 Split loop header from condition testing for for/while loops. 2016-01-20 11:51:43 -05:00
Dejan Mircevski
97605c86fd Fix #137 by avoiding a C++11 feature.
Apparently, older MSVC versions don't support brace-initializers for
function arguments.

Thanks @baldurk for a suggestion on his branch.
2016-01-20 10:25:28 -05:00
John Kessenich
7349eab099 Merge pull request #136 from dekimir/no-block-removal
SPV: Don't remove SPIR-V blocks before codegen, use new InReadableOrder instead.
2016-01-19 19:26:08 -07:00
Dejan Mircevski
ed55bcd9f8 Don't remove SPIR-V blocks before codegen.
A removed block releases its instructions, so Module::idToInstruction
suddenly contains dangling references.  The original motivation for
block removal was to skip some unreachable blocks, but that's already
achieved by InReadableOrder.cpp.

Also updated stale comments.
2016-01-19 21:18:14 -05:00
John Kessenich
33782795d9 Merge pull request #127 from dekimir/loopgen
SPV: Rework loop code generation to match SPIR-V 1.0.
2016-01-19 15:32:07 -07:00
Dejan Mircevski
f3c63cc359 Move continue-block to after all branches. 2016-01-19 16:56:45 -05:00
Dejan Mircevski
e7f6cac1bd Merge branch 'topo' into loopgen-after-readable-order 2016-01-19 16:47:41 -05:00
John Kessenich
9a0b59c7b6 Merge pull request #135 from dekimir/topo
SPV: Code-generate SPIR-V blocks in a more readable order
2016-01-19 14:22:53 -07:00
Dejan Mircevski
159b59faa7 Reformat to better match existing style. 2016-01-19 14:52:31 -05:00
Dejan Mircevski
cce6a8acaf (C) Google 2016-01-19 14:50:12 -05:00
Dejan Mircevski
34bc6c3896 Explicitly initialize Instruction::block. 2016-01-19 14:08:32 -05:00
Dejan Mircevski
a7e734962e Remove a redundant check before visit(succ). 2016-01-19 11:49:37 -05:00
Dejan Mircevski
57bbde4a99 Add copyright, remove unused #includes. 2016-01-19 11:44:53 -05:00
Dejan Mircevski
fa242904b0 Make Instruction::getBlock() const. 2016-01-19 11:31:55 -05:00
Dejan Mircevski
377f0cab26 Fix merge issues. 2016-01-19 10:17:33 -05:00
Dejan Mircevski
38d039d063 Rework inReadableOrder() as a recursive descent.
Add a test for unreachable merge block.

Update test results with the new order: mainly delaying merge blocks and
removing unreachable ones.
2016-01-19 10:14:50 -05:00
Dejan Mircevski
9c591487ad Fix spv.branch-return.vert. 2016-01-19 10:11:34 -05:00
Dejan Mircevski
baa55a1591 Add spv.branch-return.vert and fix inReadableOrder(). 2016-01-19 10:11:34 -05:00
Dejan Mircevski
44bfb0d0cd Implement inReadableOrder(). 2016-01-19 10:11:34 -05:00
Dejan Mircevski
454796e008 Call addPredecessor() on OpSwitch blocks. 2016-01-19 10:10:15 -05:00