yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
b39ec87cc
master
1//TEST(compute, vulkan):COMPARE_COMPUTE(filecheck-buffer=BUF):-vk -compute -entry computeMain -allow-glsl 2//TEST(compute, vulkan):COMPARE_COMPUTE(filecheck-buffer=BUF):-vk -compute -entry computeMain -allow-glsl -emit-spirv-via-glsl 3 4#version 450 5 6//TEST_INPUT:ubuffer(data=[0xA802 0x1349 0xC2 0x91 0xB2 0x72], stride=4):out,name=inputBuffer 7layout(scalar) buffer MyBlock1 8{ 9 uint32_t a; 10 uint32_t b; 11 12 uint32_t c; 13 uint32_t d; 14 uint32_t e; 15 uint32_t f; 16} inputBuffer; 17// BUF: A802 18// BUF-NEXT: 1349 19// BUF-NEXT: C2 20// BUF-NEXT: 91 21// BUF-NEXT: B2 22// BUF-NEXT: 72 23 24//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name=outputBuffer 25layout(scalar) buffer MyBlock2 26{ 27 uvec4 a; 28 ivec4 b; 29 30 uvec2 c; 31 ivec2 d; 32 33 uvec2 e; 34 ivec2 f; 35 36 uint32_t g; 37 int32_t h; 38 39 uint32_t i; 40 int32_t j; 41 42 uint32_t k; 43 int32_t l; 44 45 uint32_t m; 46 uint32_t n; 47} outputBuffer; 48 49layout(local_size_x = 1) in; 50void computeMain() 51{ 52 uint32_t a = 0xF2845678; 53 outputBuffer.a = unpack8(a); 54 // BUF-NEXT: 78 55 // BUF-NEXT: 56 56 // BUF-NEXT: 84 57 // BUF-NEXT: F2 58 59 int32_t b = 0xF2845678; 60 outputBuffer.b = unpack8(b); 61 // BUF: 78 62 // BUF-NEXT: 56 63 // BUF-NEXT: FFFFFF84 64 // BUF-NEXT: FFFFFFF2 65 66 uint16_t c = 0xF256; 67 outputBuffer.c = unpack8(c); 68 // BUF-NEXT: 56 69 // BUF-NEXT: F2 70 71 int16_t d = 0xF256; 72 outputBuffer.d = unpack8(d); 73 // BUF-NEXT: 56 74 // BUF-NEXT: FFFFFFF2 75 76 uint32_t e = 0xF2845678; 77 outputBuffer.e = unpack16(e); 78 // BUF-NEXT: 5678 79 // BUF-NEXT: F284 80 81 int32_t f = 0xF2845678; 82 outputBuffer.f = unpack16(f); 83 // BUF-NEXT: 5678 84 // BUF-NEXT: FFFFF284 85 86 u16vec2 g = {0xF256, 0x1234}; 87 outputBuffer.g = pack32(g); 88 // BUF-NEXT: 1234F256 89 90 i16vec2 h = {0xF256, 0x1234}; 91 outputBuffer.h = pack32(h); 92 // BUF-NEXT: 1234F256 93 94 u8vec4 i = {0xF2, 0x56, 0x12, 0x34}; 95 outputBuffer.i = pack32(i); 96 // BUF-NEXT: 341256F2 97 98 i8vec4 j = {0x82, 0x56, 0x12, 0x80}; 99 outputBuffer.j = pack32(j); 100 // BUF-NEXT: 80125682 101 102 // Note: Below tests are mainly to verify that we don't emit invalid spirv code 103 u16vec2 k = {inputBuffer.a, inputBuffer.b}; 104 outputBuffer.k = pack32(k); 105 // BUF-NEXT: 1349A802 106 107 i16vec2 l = {inputBuffer.a, inputBuffer.b}; 108 outputBuffer.l = pack32(l); 109 // BUF-NEXT: 1349A802 110 111 u8vec4 m = {inputBuffer.c, inputBuffer.d, inputBuffer.e, inputBuffer.f}; 112 outputBuffer.m = pack32(m); 113 // BUF-NEXT: 72B291C2 114 115 u8vec4 n = {inputBuffer.c, inputBuffer.d, inputBuffer.e, inputBuffer.f}; 116 outputBuffer.n = pack32(n); 117 // BUF-NEXT: 72B291C2 118}