SPIRV-Cross/reference/opt/shaders/vulkan/frag/shader-arithmetic-8bit.nocompat.vk.frag.vk
Hans-Kristian Arntzen 2ed171e525 GLSL/MSL: Implement 8-bit part of VK_KHR_shader_float16_int8.
Storage was in place already, so mostly just dealing with bitcasts and
constants.

Simplies some of the bitcasting logic, and this exposed some bugs in the
implementation. Refactor to use correct width integers with explicit bitcast opcodes.
2019-01-30 15:45:24 +01:00

70 lines
1.7 KiB
Plaintext

#version 450
#extension GL_EXT_shader_explicit_arithmetic_types_int16 : require
#extension GL_EXT_shader_16bit_storage : require
#extension GL_EXT_shader_explicit_arithmetic_types_int8 : require
#extension GL_EXT_shader_8bit_storage : require
layout(set = 0, binding = 1, std430) buffer SSBO
{
int8_t i8[16];
uint8_t u8[16];
} ssbo;
layout(set = 0, binding = 0, std140) uniform UBO
{
int8_t i8;
uint8_t u8;
} ubo;
layout(push_constant, std430) uniform Push
{
int8_t i8;
uint8_t u8;
} registers;
layout(location = 0) flat in ivec4 vColor;
layout(location = 0) out ivec4 FragColorInt;
layout(location = 1) out uvec4 FragColorUint;
void main()
{
int16_t _196 = 10s;
int _197 = 20;
i8vec2 _198 = unpack8(_196);
i8vec4 _199 = unpack8(_197);
_196 = pack16(_198);
_197 = pack32(_199);
ssbo.i8[0] = _199.x;
ssbo.i8[1] = _199.y;
ssbo.i8[2] = _199.z;
ssbo.i8[3] = _199.w;
uint16_t _220 = 10us;
uint _221 = 20u;
u8vec2 _222 = unpack8(_220);
u8vec4 _223 = unpack8(_221);
_220 = pack16(_222);
_221 = pack32(_223);
ssbo.u8[0] = _223.x;
ssbo.u8[1] = _223.y;
ssbo.u8[2] = _223.z;
ssbo.u8[3] = _223.w;
i8vec4 _246 = i8vec4(vColor);
i8vec4 _244 = _246;
_244 += i8vec4(registers.i8);
_244 += i8vec4(-40);
_244 += i8vec4(-50);
_244 += i8vec4(int8_t(10), int8_t(20), int8_t(30), int8_t(40));
_244 += i8vec4(ssbo.i8[4]);
_244 += i8vec4(ubo.i8);
FragColorInt = ivec4(_244);
u8vec4 _271 = u8vec4(_246);
_271 += u8vec4(registers.u8);
_271 += u8vec4(216);
_271 += u8vec4(206);
_271 += u8vec4(uint8_t(10), uint8_t(20), uint8_t(30), uint8_t(40));
_271 += u8vec4(ssbo.u8[4]);
_271 += u8vec4(ubo.u8);
FragColorUint = uvec4(_271);
}