Lei Zhang
83e23e6954
[spirv] Add support for SV_Coverage ( #800 )
...
Also emit an error for SV_InnerCoverage.
2017-11-15 12:02:27 -05:00
Ehsan
576a805117
[spirv] Translate intrinsic dst function. ( #801 )
2017-11-15 10:14:24 -05:00
Lei Zhang
6788ebea4a
[spirv] Add support for [[vk::push_constant]] ( #791 )
...
[[vk::push_constant]] can be attached to a global variable of
struct type to put that variable in the PushConstant storage
class.
PushConstant should be of OpTypeStruct type with std430 layout.
2017-11-15 08:14:22 -05:00
Ehsan
b32bc384a3
[spirv] Translate intrinsic D3DCOLORtoUBYTE4. ( #799 )
2017-11-14 11:09:51 -05:00
Lei Zhang
0d462693b5
[spirv] Add support for SV_ViewportIndex ( #796 )
2017-11-14 10:56:53 -05:00
Lei Zhang
e9a2c759b5
[spirv] Support SV_RenderTargetArrayIndex and SV_StencilRef ( #789 )
2017-11-13 14:44:04 -05:00
Ehsan
4d97841e33
[spirv] Translate *MemoryBarrier* intrinsics. ( #790 )
...
* Translation of GroupMemoryBarrier(WithGroupSync)
* Translation of DeviceMemoryBarrier(WithGroupSync)
* Translation of AllMemoryBarrier(WithGroupSync)
2017-11-13 14:08:13 -05:00
Lei Zhang
e40535653f
[spirv] Emit Invocations execution mode in GS ( #793 )
...
OpExecutionMode Invocations n should be emitted for [instance(n)]
on GS. n defaults to 1.
2017-11-13 10:43:31 -05:00
Ehsan
4bd93f66a3
[spirv] tbuffer and TextureBuffer support. ( #787 )
2017-11-10 17:07:43 -05:00
Lei Zhang
a579b3eaef
[spirv] Add support for f16tof32() and f32tof16() ( #786 )
...
Fixes https://github.com/Microsoft/DirectXShaderCompiler/issues/785
2017-11-10 12:31:52 -05:00
Lei Zhang
68ef628bd9
[spirv] Complete the support for SV semantics in all stages ( #775 )
...
Covers the following SVs for all their legal SigPoints:
* SV_Position
* SV_ClipDistance
* SV_CullDistance
* SV_VertexID
* SV_InstanceID
* SV_Depth
* SV_DepthGreaterEqual
* SV_DepthLessEqual
* SV_OutputControlPointID
* SV_DomainLocation
* SV_GSInstanceID
* SV_IsFrontFace
* SV_DispatchTreadID
* SV_GroupID
* SV_GroupThreadID
* SV_GroupIndex
* SV_TessFactor
* SV_InsideTessFactor
* SV_PrimitiveID
* SV_SampleIndex
2017-11-10 11:47:50 -05:00
Lei Zhang
37eade8495
[spirv] Add support for basic geometry shader ( #772 )
...
This commit supports .Append() and .RestartStrip() method calls
on stream-output objects, which will be translated into SPIR-V
OpEmitVertex and OpEndPrimitive, respectively.
For each .Append() call, all affected stage output variables
will be flushed.
2017-11-08 11:41:43 -05:00
Lei Zhang
87d66c9d09
[spirv] Add doc and tests for snorm/unorm float type ( #773 )
2017-11-08 10:49:32 -05:00
Lei Zhang
dc3d2c7921
[spirv] Require ClipDistance/CullDistance capability on use ( #769 )
...
Declaring but not using (reading/writing) ClipDistance/CullDistance
does not require the ClipDistance/CullDistance capability.
2017-11-07 15:17:13 -05:00
Lei Zhang
734266277b
[spirv] Change vertex processing stages to emit gl_PerVertex ( #757 )
...
As per the Vulkan spec requirement:
Any variable decorated with Position must be declared as a
four-component vector of 32-bit floating-point values.
But for HS/DS/GS, we actually have an extra arrayness. If we
generate a stand-alone Postion builtin variable, it will be
an array of float4, which does not comply with the spec.
Similary for the type requirements on ClipDistance and
CullDistance.
The spec could have an problem on this issue, but the GLSL way
is to emit a gl_PerVertex that contains Position, ClipDistance,
and CullDistance. That satisfies the current Vulkan spec.
This commit converts VS output, HS/DS input and output, GS
input to emit the gl_PerVertex struct. It also splits arrays
of structs into arrays of the fields for HS/DS/GS input/output.
ClipDistance/CullDistance is also supported in this commit,
which requires quite some non-trivial handling.
2017-11-07 09:56:10 -05:00
Ehsan
97aab11faf
[spirv] Translate intrinsic asdouble and asuint. ( #758 )
2017-11-03 05:38:08 -07:00
Ehsan
4b7fab259f
[spirv] Add support for HLSLMatrixTruncationCast ( #753 )
2017-11-03 05:37:46 -07:00
Ehsan
c5dc49a7fd
[spirv] Translate intrinsic Lit function. ( #744 )
2017-10-31 10:14:56 -04:00
Ehsan
6d8bf3e34a
[spirv] Support GS output stream types. ( #736 )
2017-10-26 14:02:40 -04:00
Ehsan
96c5c0ad17
[spirv] Execution modes for GS primitive types. ( #734 )
2017-10-25 16:02:23 -04:00
Ehsan
0d9cfd2b3a
[spirv] Translate maxvertexcount attribute for GS. ( #732 )
2017-10-25 09:25:38 -04:00
Lei Zhang
ffe7692c75
[spirv] Update SPIR-V rst doc ( #733 )
2017-10-24 14:32:38 -04:00
Lei Zhang
108f1658d2
[spirv] Add support for [[vk::counter_binding(X)]] ( #730 )
...
A new attribute [[vk::counter_binding(X)]] can be used to specify
the binding number for associated counters for RW/append/consume
structured buffers.
Also added support for .IncrementCounter() and .DecrementCounter()
for RWStructuredBuffer.
Also fixed the type error of OpAtomicI{Add|Sub}.
2017-10-24 10:51:50 -04:00
Lei Zhang
5686ccf2c4
[spirv] Allow the same binding number for combined image sampler ( #729 )
...
Vulkan combined image sampler is logically considered a sampled
image and a sampler bound together.
2017-10-23 11:57:40 -07:00
Lei Zhang
8702f97dff
[spirv] Add support for four register number shifting options ( #720 )
...
Added the following four command line options to shift register
number for Vulkan:
* -fvk-b-shift
* -fvk-t-shift
* -fvk-s-shift
* -fvk-u-shift
These options are used to avoid assigning the same binding
number to more than one resources.
2017-10-20 19:37:11 -07:00
Lei Zhang
9cb179024b
[spirv] Add support for struct/class static members ( #714 )
...
These static members are translated into SPIR-V variables of
the Private storage class.
2017-10-17 07:46:08 -07:00
Ehsan
2fa7a957a0
[spirv] Add translation for intrinsic rcp. ( #713 )
...
Also includes creating 64-bit float constants that are needed for
reciprocating a 64-bit float.
2017-10-17 08:53:00 -04:00
Ehsan
78ac89a6f8
[spirv] Documentation of hull shader translation. ( #702 )
2017-10-16 15:47:29 -04:00
Ehsan
0888e319e7
[spirv] Intrinsic fwidth & faceforward ( #711 )
2017-10-16 13:53:08 -04:00
Ehsan
8afee2994c
[spirv] Intrinsic ddx and ddy. ( #707 )
...
Also:
* ddx_coarse, ddx_fine
* ddy_coarse, ddy_fine
2017-10-16 10:11:29 -04:00
Lei Zhang
2e1ea68d6c
[spirv] Add support for texture .GatherCmpRed() method ( #700 )
2017-10-13 11:21:38 -04:00
Lei Zhang
52372b1186
[spirv] Add support for texture .GatherCmp() method ( #697 )
2017-10-12 15:35:29 -04:00
Lei Zhang
050755b4d8
[spirv] Add support for .SampleCmp() and .SampleCmpLevelZero() ( #689 )
2017-10-12 11:34:38 -04:00
Lei Zhang
3a6f80eb1b
[spirv] Add support for .GatherRGBA() methods on texture types ( #682 )
...
Also extended tests for .Gather() tests to cover scalar element
types and vector element types with less than 4 components.
2017-10-10 15:36:37 -04:00
Lei Zhang
102fe247f1
[spirv] Support RWByteAddressBuffer atomic methods ( #678 )
2017-10-06 09:59:13 -04:00
Lei Zhang
c757514869
[spirv] Tweak binding number assignment scheme ( #675 )
...
Now we essentially assign binding numbers to all resources in
three passes: [[vk::binding(...)]], register(...), and then
no annotation.
2017-10-03 11:12:08 -04:00
Lei Zhang
49313dd16e
[spirv] Update mapping manual ( #665 )
2017-09-29 14:56:10 -04:00
Ehsan
58612be9f3
[spirv] More compute shader semantics. ( #662 )
...
* SV_GroupID
* SV_GroupIndex
* SV_GroupThreadID
2017-09-28 17:43:18 -04:00
Ehsan
a0684306a6
[spirv] GetDimension for ACSBuffer. ( #658 )
...
GetDimensions for AppendStructuredBuffer
GetDimensions for ConsumeStructuredBuffer
2017-09-28 12:15:32 -04:00
Ehsan
015bdfd1d7
[spirv] Translate several intrinsic functions. ( #654 )
...
* frexp
* countbits
* clip
* ldexp
* lerp
* log10
* mad
* modf
* reversebits
2017-09-28 10:28:46 -04:00
Ehsan
52c27ffbbd
[spirv] CalculateLevelOfDetail for Texture types. ( #653 )
2017-09-27 14:15:32 -04:00
Ehsan
746d8ea5ed
[spirv] Update doc for ByteAddressBuffer methods. ( #652 )
...
* [spirv] Update doc for ByteAddressBuffer methods.
* Better doc.
2017-09-26 09:19:22 -07:00
Ehsan
a62fc13575
[spirv] Translation of several intrinsic functions ( #639 )
...
* [spirv] Translation of several intrinsic functions
Translation for the following intrinsic functions:
* Matrix transpose
* smoothstep
* refract
* distance
* isinf
* isnan
* isfinite
* sincos
* saturate
* atan2
* fma
* fmod
* frac
* firstbithigh
* firstbitlow
* Address code review comments.
2017-09-26 09:18:23 -07:00
Ehsan
00b7505afd
[spirv] GetDimensions for several types. ( #636 )
...
* [spirv] GetDimensions for several types.
GetDimensions function implementation for:
Textures, RWTextures,
Buffers, RWBuffers,
ByteAddressBuffers, RWByteAddressBuffers,
StructuredBuffers, RWStructuredBuffers.
* Address comments.
* Update the doc file.
2017-09-25 09:23:06 -07:00
Lei Zhang
809495a4c2
[spirv] Update mapping manual ( #634 )
2017-09-20 20:28:22 -07:00
Ehsan
479f1cd9bf
[spirv] Support other primitive int/float types. ( #628 )
...
* [spirv] Support other primitive int/float types.
* Address comments.
2017-09-20 20:26:07 -07:00
theswiftfox
e97dd2a0cd
Fix typo in SPIR-V.rst ( #612 )
...
HLSL semantic and Vulkan ``Loation`` -> HLSL semantic and Vulkan ``Location``
2017-09-01 13:37:36 -07:00
Ehsan
7a0ae9e90b
RWTexture Load() and Texture2DMS(Array) ( #609 )
...
* [spirv] OpImageRead can read a vector of any size.
* [spirv] Add support for Load() of RWTexture types.
* [spirv] Texture2DMS and Texture2DMSArray types.
* [spirv] Capability for 1D images without a sampler
* [spirv] Update documentation of Texture2DMS(Array)
2017-08-31 16:10:13 -07:00
Ehsan
d5592ce089
[spirv] Add translation of RWTexture... types. ( #602 )
...
* [spirv] Add translation of RWTexture... types.
* Update documentation for RWTexture types.
* Fix table formatting in doc.
2017-08-29 14:57:54 -07:00
Lei Zhang
bc1301af13
[spirv] Update SPIR-V.rst doc ( #596 )
...
Moved logistics and designs to the wiki page. Now the doc is only
for HLSL to SPIR-V mappings.
Also link to the doc and wiki page in the main README.md.
2017-08-25 08:56:42 -07:00