mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-05-17 12:51:28 +00:00
This CL implements f16 in uniform and storage address space, allowing using f16 types in uniform and storage buffers on all backends. Tint uint tests and Dawn E2E tests are added to validate the f16 types work as expected. Bug: tint:1473, tint:1502 Change-Id: I15e3de1033d3727f2ea33f4657f682c5f13c2153 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/106320 Kokoro: Kokoro <noreply+kokoro@google.com> Commit-Queue: Zhaoming Jiang <zhaoming.jiang@intel.com> Reviewed-by: Ben Clayton <bclayton@google.com>
76 lines
3.3 KiB
Plaintext
76 lines
3.3 KiB
Plaintext
; SPIR-V
|
|
; Version: 1.3
|
|
; Generator: Google Tint Compiler; 0
|
|
; Bound: 43
|
|
; Schema: 0
|
|
OpCapability Shader
|
|
OpCapability Float16
|
|
OpCapability UniformAndStorageBuffer16BitAccess
|
|
OpCapability StorageBuffer16BitAccess
|
|
OpCapability StorageInputOutput16
|
|
OpMemoryModel Logical GLSL450
|
|
OpEntryPoint Fragment %main "main"
|
|
OpExecutionMode %main OriginUpperLeft
|
|
OpName %data_block_std140 "data_block_std140"
|
|
OpMemberName %data_block_std140 0 "inner"
|
|
OpName %S_std140 "S_std140"
|
|
OpMemberName %S_std140 0 "matrix_0"
|
|
OpMemberName %S_std140 1 "matrix_1"
|
|
OpMemberName %S_std140 2 "matrix_2"
|
|
OpMemberName %S_std140 3 "matrix_3"
|
|
OpMemberName %S_std140 4 "vector"
|
|
OpName %data "data"
|
|
OpName %load_data_inner_matrix "load_data_inner_matrix"
|
|
OpName %main "main"
|
|
OpDecorate %data_block_std140 Block
|
|
OpMemberDecorate %data_block_std140 0 Offset 0
|
|
OpMemberDecorate %S_std140 0 Offset 0
|
|
OpMemberDecorate %S_std140 1 Offset 8
|
|
OpMemberDecorate %S_std140 2 Offset 16
|
|
OpMemberDecorate %S_std140 3 Offset 24
|
|
OpMemberDecorate %S_std140 4 Offset 32
|
|
OpDecorate %data NonWritable
|
|
OpDecorate %data DescriptorSet 0
|
|
OpDecorate %data Binding 0
|
|
%half = OpTypeFloat 16
|
|
%v3half = OpTypeVector %half 3
|
|
%S_std140 = OpTypeStruct %v3half %v3half %v3half %v3half %v3half
|
|
%data_block_std140 = OpTypeStruct %S_std140
|
|
%_ptr_Uniform_data_block_std140 = OpTypePointer Uniform %data_block_std140
|
|
%data = OpVariable %_ptr_Uniform_data_block_std140 Uniform
|
|
%mat4v3half = OpTypeMatrix %v3half 4
|
|
%7 = OpTypeFunction %mat4v3half
|
|
%uint = OpTypeInt 32 0
|
|
%uint_0 = OpConstant %uint 0
|
|
%_ptr_Uniform_S_std140 = OpTypePointer Uniform %S_std140
|
|
%_ptr_Uniform_v3half = OpTypePointer Uniform %v3half
|
|
%uint_1 = OpConstant %uint 1
|
|
%uint_2 = OpConstant %uint 2
|
|
%uint_3 = OpConstant %uint 3
|
|
%void = OpTypeVoid
|
|
%33 = OpTypeFunction %void
|
|
%uint_4 = OpConstant %uint 4
|
|
%v4half = OpTypeVector %half 4
|
|
%load_data_inner_matrix = OpFunction %mat4v3half None %7
|
|
%10 = OpLabel
|
|
%15 = OpAccessChain %_ptr_Uniform_S_std140 %data %uint_0
|
|
%18 = OpAccessChain %_ptr_Uniform_v3half %15 %uint_0
|
|
%19 = OpLoad %v3half %18
|
|
%22 = OpAccessChain %_ptr_Uniform_v3half %15 %uint_1
|
|
%23 = OpLoad %v3half %22
|
|
%26 = OpAccessChain %_ptr_Uniform_v3half %15 %uint_2
|
|
%27 = OpLoad %v3half %26
|
|
%30 = OpAccessChain %_ptr_Uniform_v3half %15 %uint_3
|
|
%31 = OpLoad %v3half %30
|
|
%32 = OpCompositeConstruct %mat4v3half %19 %23 %27 %31
|
|
OpReturnValue %32
|
|
OpFunctionEnd
|
|
%main = OpFunction %void None %33
|
|
%36 = OpLabel
|
|
%38 = OpAccessChain %_ptr_Uniform_v3half %data %uint_0 %uint_4
|
|
%39 = OpLoad %v3half %38
|
|
%40 = OpFunctionCall %mat4v3half %load_data_inner_matrix
|
|
%41 = OpVectorTimesMatrix %v4half %39 %40
|
|
OpReturn
|
|
OpFunctionEnd
|