vktSpvAsmComputeShaderTestUtil.cpp revision ba23b9e1fccb231af89f3de3e9fff7d8f8055e51
121be639ab35b03f6d4d05e11fe662a7dd6bfee2bLei Zhang/*-------------------------------------------------------------------------
221be639ab35b03f6d4d05e11fe662a7dd6bfee2bLei Zhang * Vulkan Conformance Tests
321be639ab35b03f6d4d05e11fe662a7dd6bfee2bLei Zhang * ------------------------
421be639ab35b03f6d4d05e11fe662a7dd6bfee2bLei Zhang *
521be639ab35b03f6d4d05e11fe662a7dd6bfee2bLei Zhang * Copyright (c) 2015 Google Inc.
621be639ab35b03f6d4d05e11fe662a7dd6bfee2bLei Zhang *
7978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * Licensed under the Apache License, Version 2.0 (the "License");
8978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * you may not use this file except in compliance with the License.
9978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * You may obtain a copy of the License at
1021be639ab35b03f6d4d05e11fe662a7dd6bfee2bLei Zhang *
11978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos *      http://www.apache.org/licenses/LICENSE-2.0
1221be639ab35b03f6d4d05e11fe662a7dd6bfee2bLei Zhang *
13978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * Unless required by applicable law or agreed to in writing, software
14978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * distributed under the License is distributed on an "AS IS" BASIS,
15978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * See the License for the specific language governing permissions and
17978d3d585aa549eb1e729b51e9d85fc6477240f9Pyry Haulos * limitations under the License.
1821be639ab35b03f6d4d05e11fe662a7dd6bfee2bLei Zhang *
1921be639ab35b03f6d4d05e11fe662a7dd6bfee2bLei Zhang *//*!
2021be639ab35b03f6d4d05e11fe662a7dd6bfee2bLei Zhang * \file
2121be639ab35b03f6d4d05e11fe662a7dd6bfee2bLei Zhang * \brief Compute Shader Based Test Case Utility Structs/Functions
2221be639ab35b03f6d4d05e11fe662a7dd6bfee2bLei Zhang *//*--------------------------------------------------------------------*/
2321be639ab35b03f6d4d05e11fe662a7dd6bfee2bLei Zhang
2421be639ab35b03f6d4d05e11fe662a7dd6bfee2bLei Zhang#include "vktSpvAsmComputeShaderTestUtil.hpp"
2521be639ab35b03f6d4d05e11fe662a7dd6bfee2bLei Zhang
2656bd1576eb438e10e8ccb22e17b08354fbf3bac7Lei Zhangnamespace vkt
2756bd1576eb438e10e8ccb22e17b08354fbf3bac7Lei Zhang{
2856bd1576eb438e10e8ccb22e17b08354fbf3bac7Lei Zhangnamespace SpirVAssembly
2956bd1576eb438e10e8ccb22e17b08354fbf3bac7Lei Zhang{
3056bd1576eb438e10e8ccb22e17b08354fbf3bac7Lei Zhang
31ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhangconst char* getComputeAsmShaderPreamble (void)
32ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang{
33ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang	return
34ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"OpCapability Shader\n"
35ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"OpMemoryModel Logical GLSL450\n"
36ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"OpEntryPoint GLCompute %main \"main\" %id\n"
37ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"OpExecutionMode %main LocalSize 1 1 1\n";
38ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang}
3956bd1576eb438e10e8ccb22e17b08354fbf3bac7Lei Zhang
40ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhangconst char* getComputeAsmCommonTypes (void)
41ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang{
42ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang	return
43ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"%bool      = OpTypeBool\n"
44ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"%void      = OpTypeVoid\n"
45ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"%voidf     = OpTypeFunction %void\n"
46ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"%u32       = OpTypeInt 32 0\n"
47ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"%i32       = OpTypeInt 32 1\n"
48ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"%f32       = OpTypeFloat 32\n"
49ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"%uvec3     = OpTypeVector %u32 3\n"
50ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"%fvec3     = OpTypeVector %f32 3\n"
51ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"%uvec3ptr  = OpTypePointer Input %uvec3\n"
52ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"%i32ptr    = OpTypePointer Uniform %i32\n"
53ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"%f32ptr    = OpTypePointer Uniform %f32\n"
54ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"%i32arr    = OpTypeRuntimeArray %i32\n"
55ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"%f32arr    = OpTypeRuntimeArray %f32\n";
56ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang}
5756bd1576eb438e10e8ccb22e17b08354fbf3bac7Lei Zhang
58ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhangconst char* getComputeAsmInputOutputBuffer (void)
59ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang{
60ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang	return
61ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"%buf     = OpTypeStruct %f32arr\n"
62ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"%bufptr  = OpTypePointer Uniform %buf\n"
63ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"%indata    = OpVariable %bufptr Uniform\n"
64ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"%outdata   = OpVariable %bufptr Uniform\n";
65ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang}
6656bd1576eb438e10e8ccb22e17b08354fbf3bac7Lei Zhang
67ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhangconst char* getComputeAsmInputOutputBufferTraits (void)
68ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang{
69ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang	return
70ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"OpDecorate %buf BufferBlock\n"
71ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"OpDecorate %indata DescriptorSet 0\n"
72ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"OpDecorate %indata Binding 0\n"
73ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"OpDecorate %outdata DescriptorSet 0\n"
74ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"OpDecorate %outdata Binding 1\n"
75ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"OpDecorate %f32arr ArrayStride 4\n"
76ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang		"OpMemberDecorate %buf 0 Offset 0\n";
77ba23b9e1fccb231af89f3de3e9fff7d8f8055e51Lei Zhang}
7856bd1576eb438e10e8ccb22e17b08354fbf3bac7Lei Zhang
7956bd1576eb438e10e8ccb22e17b08354fbf3bac7Lei Zhang} // SpirVAssembly
8056bd1576eb438e10e8ccb22e17b08354fbf3bac7Lei Zhang} // vkt
81