Changeset View
Changeset View
Standalone View
Standalone View
source/blender/gpu/metal/mtl_shader_interface_type.hh
- This file was added.
| /* SPDX-License-Identifier: GPL-2.0-or-later */ | |||||
| /** \file | |||||
| * \ingroup gpu | |||||
| */ | |||||
| #pragma once | |||||
| #include "BLI_assert.h" | |||||
| enum eMTLDataType { | |||||
| MTL_DATATYPE_CHAR, | |||||
| MTL_DATATYPE_CHAR2, | |||||
| MTL_DATATYPE_CHAR3, | |||||
| MTL_DATATYPE_CHAR4, | |||||
| MTL_DATATYPE_UCHAR, | |||||
| MTL_DATATYPE_UCHAR2, | |||||
| MTL_DATATYPE_UCHAR3, | |||||
| MTL_DATATYPE_UCHAR4, | |||||
| MTL_DATATYPE_BOOL, | |||||
| MTL_DATATYPE_BOOL2, | |||||
| MTL_DATATYPE_BOOL3, | |||||
| MTL_DATATYPE_BOOL4, | |||||
| MTL_DATATYPE_SHORT, | |||||
| MTL_DATATYPE_SHORT2, | |||||
| MTL_DATATYPE_SHORT3, | |||||
| MTL_DATATYPE_SHORT4, | |||||
| MTL_DATATYPE_USHORT, | |||||
| MTL_DATATYPE_USHORT2, | |||||
| MTL_DATATYPE_USHORT3, | |||||
| MTL_DATATYPE_USHORT4, | |||||
| MTL_DATATYPE_INT, | |||||
| MTL_DATATYPE_INT2, | |||||
| MTL_DATATYPE_INT3, | |||||
| MTL_DATATYPE_INT4, | |||||
| MTL_DATATYPE_UINT, | |||||
| MTL_DATATYPE_UINT2, | |||||
| MTL_DATATYPE_UINT3, | |||||
| MTL_DATATYPE_UINT4, | |||||
| MTL_DATATYPE_FLOAT, | |||||
| MTL_DATATYPE_FLOAT2, | |||||
| MTL_DATATYPE_FLOAT3, | |||||
| MTL_DATATYPE_FLOAT4, | |||||
| MTL_DATATYPE_LONG, | |||||
| MTL_DATATYPE_LONG2, | |||||
| MTL_DATATYPE_LONG3, | |||||
| MTL_DATATYPE_LONG4, | |||||
| MTL_DATATYPE_ULONG, | |||||
| MTL_DATATYPE_ULONG2, | |||||
| MTL_DATATYPE_ULONG3, | |||||
| MTL_DATATYPE_ULONG4, | |||||
| MTL_DATATYPE_HALF2x2, | |||||
| MTL_DATATYPE_HALF2x3, | |||||
| MTL_DATATYPE_HALF2x4, | |||||
| MTL_DATATYPE_HALF3x2, | |||||
| MTL_DATATYPE_HALF3x3, | |||||
| MTL_DATATYPE_HALF3x4, | |||||
| MTL_DATATYPE_HALF4x2, | |||||
| MTL_DATATYPE_HALF4x3, | |||||
| MTL_DATATYPE_HALF4x4, | |||||
| MTL_DATATYPE_FLOAT2x2, | |||||
| MTL_DATATYPE_FLOAT2x3, | |||||
| MTL_DATATYPE_FLOAT2x4, | |||||
| MTL_DATATYPE_FLOAT3x2, | |||||
| MTL_DATATYPE_FLOAT3x3, | |||||
| MTL_DATATYPE_FLOAT3x4, | |||||
| MTL_DATATYPE_FLOAT4x2, | |||||
| MTL_DATATYPE_FLOAT4x3, | |||||
| MTL_DATATYPE_FLOAT4x4, | |||||
| MTL_DATATYPE_UINT1010102_NORM, | |||||
| MTL_DATATYPE_INT1010102_NORM | |||||
| }; | |||||
| inline uint mtl_get_data_type_size(eMTLDataType type) | |||||
| { | |||||
| switch (type) { | |||||
| case MTL_DATATYPE_CHAR: | |||||
| case MTL_DATATYPE_UCHAR: | |||||
| case MTL_DATATYPE_BOOL: | |||||
| return 1; | |||||
| case MTL_DATATYPE_CHAR2: | |||||
| case MTL_DATATYPE_UCHAR2: | |||||
| case MTL_DATATYPE_BOOL2: | |||||
| case MTL_DATATYPE_SHORT: | |||||
| case MTL_DATATYPE_USHORT: | |||||
| return 2; | |||||
| case MTL_DATATYPE_CHAR3: | |||||
| case MTL_DATATYPE_UCHAR3: | |||||
| case MTL_DATATYPE_BOOL3: | |||||
| return 3; | |||||
| case MTL_DATATYPE_CHAR4: | |||||
| case MTL_DATATYPE_UCHAR4: | |||||
| case MTL_DATATYPE_INT: | |||||
| case MTL_DATATYPE_UINT: | |||||
| case MTL_DATATYPE_BOOL4: | |||||
| case MTL_DATATYPE_SHORT2: | |||||
| case MTL_DATATYPE_USHORT2: | |||||
| case MTL_DATATYPE_FLOAT: | |||||
| case MTL_DATATYPE_UINT1010102_NORM: | |||||
| case MTL_DATATYPE_INT1010102_NORM: | |||||
| return 4; | |||||
| case MTL_DATATYPE_SHORT3: | |||||
| case MTL_DATATYPE_USHORT3: | |||||
| case MTL_DATATYPE_SHORT4: | |||||
| case MTL_DATATYPE_USHORT4: | |||||
| case MTL_DATATYPE_INT2: | |||||
| case MTL_DATATYPE_UINT2: | |||||
| case MTL_DATATYPE_FLOAT2: | |||||
| case MTL_DATATYPE_LONG: | |||||
| case MTL_DATATYPE_ULONG: | |||||
| case MTL_DATATYPE_HALF2x2: | |||||
| return 8; | |||||
| case MTL_DATATYPE_HALF3x2: | |||||
| return 12; | |||||
| case MTL_DATATYPE_INT3: | |||||
| case MTL_DATATYPE_INT4: | |||||
| case MTL_DATATYPE_UINT3: | |||||
| case MTL_DATATYPE_UINT4: | |||||
| case MTL_DATATYPE_FLOAT3: | |||||
| case MTL_DATATYPE_FLOAT4: | |||||
| case MTL_DATATYPE_LONG2: | |||||
| case MTL_DATATYPE_ULONG2: | |||||
| case MTL_DATATYPE_HALF2x3: | |||||
| case MTL_DATATYPE_HALF2x4: | |||||
| case MTL_DATATYPE_HALF4x2: | |||||
| return 16; | |||||
| case MTL_DATATYPE_HALF3x3: | |||||
| case MTL_DATATYPE_HALF3x4: | |||||
| case MTL_DATATYPE_FLOAT3x2: | |||||
| return 24; | |||||
| case MTL_DATATYPE_LONG3: | |||||
| case MTL_DATATYPE_LONG4: | |||||
| case MTL_DATATYPE_ULONG3: | |||||
| case MTL_DATATYPE_ULONG4: | |||||
| case MTL_DATATYPE_HALF4x3: | |||||
| case MTL_DATATYPE_HALF4x4: | |||||
| case MTL_DATATYPE_FLOAT2x3: | |||||
| case MTL_DATATYPE_FLOAT2x4: | |||||
| case MTL_DATATYPE_FLOAT4x2: | |||||
| return 32; | |||||
| case MTL_DATATYPE_FLOAT3x3: | |||||
| case MTL_DATATYPE_FLOAT3x4: | |||||
| return 48; | |||||
| case MTL_DATATYPE_FLOAT4x3: | |||||
| case MTL_DATATYPE_FLOAT4x4: | |||||
| return 64; | |||||
| default: | |||||
| BLI_assert(false); | |||||
| return 0; | |||||
| }; | |||||
| } | |||||
| inline uint mtl_get_data_type_alignment(eMTLDataType type) | |||||
| { | |||||
| switch (type) { | |||||
| case MTL_DATATYPE_CHAR: | |||||
| case MTL_DATATYPE_UCHAR: | |||||
| case MTL_DATATYPE_BOOL: | |||||
| return 1; | |||||
| case MTL_DATATYPE_CHAR2: | |||||
| case MTL_DATATYPE_UCHAR2: | |||||
| case MTL_DATATYPE_BOOL2: | |||||
| case MTL_DATATYPE_SHORT: | |||||
| case MTL_DATATYPE_USHORT: | |||||
| return 2; | |||||
| case MTL_DATATYPE_CHAR3: | |||||
| case MTL_DATATYPE_UCHAR3: | |||||
| case MTL_DATATYPE_BOOL3: | |||||
| return 3; | |||||
| case MTL_DATATYPE_CHAR4: | |||||
| case MTL_DATATYPE_UCHAR4: | |||||
| case MTL_DATATYPE_INT: | |||||
| case MTL_DATATYPE_UINT: | |||||
| case MTL_DATATYPE_BOOL4: | |||||
| case MTL_DATATYPE_SHORT2: | |||||
| case MTL_DATATYPE_USHORT2: | |||||
| case MTL_DATATYPE_FLOAT: | |||||
| case MTL_DATATYPE_HALF2x2: | |||||
| case MTL_DATATYPE_HALF3x2: | |||||
| case MTL_DATATYPE_HALF4x2: | |||||
| case MTL_DATATYPE_UINT1010102_NORM: | |||||
| case MTL_DATATYPE_INT1010102_NORM: | |||||
| return 4; | |||||
| case MTL_DATATYPE_SHORT3: | |||||
| case MTL_DATATYPE_USHORT3: | |||||
| case MTL_DATATYPE_SHORT4: | |||||
| case MTL_DATATYPE_USHORT4: | |||||
| case MTL_DATATYPE_INT2: | |||||
| case MTL_DATATYPE_UINT2: | |||||
| case MTL_DATATYPE_FLOAT2: | |||||
| case MTL_DATATYPE_LONG: | |||||
| case MTL_DATATYPE_ULONG: | |||||
| case MTL_DATATYPE_HALF2x3: | |||||
| case MTL_DATATYPE_HALF2x4: | |||||
| case MTL_DATATYPE_HALF3x3: | |||||
| case MTL_DATATYPE_HALF3x4: | |||||
| case MTL_DATATYPE_HALF4x3: | |||||
| case MTL_DATATYPE_HALF4x4: | |||||
| case MTL_DATATYPE_FLOAT2x2: | |||||
| case MTL_DATATYPE_FLOAT3x2: | |||||
| case MTL_DATATYPE_FLOAT4x2: | |||||
| return 8; | |||||
| case MTL_DATATYPE_INT3: | |||||
| case MTL_DATATYPE_INT4: | |||||
| case MTL_DATATYPE_UINT3: | |||||
| case MTL_DATATYPE_UINT4: | |||||
| case MTL_DATATYPE_FLOAT3: | |||||
| case MTL_DATATYPE_FLOAT4: | |||||
| case MTL_DATATYPE_LONG2: | |||||
| case MTL_DATATYPE_ULONG2: | |||||
| case MTL_DATATYPE_FLOAT2x3: | |||||
| case MTL_DATATYPE_FLOAT2x4: | |||||
| case MTL_DATATYPE_FLOAT3x3: | |||||
| case MTL_DATATYPE_FLOAT3x4: | |||||
| case MTL_DATATYPE_FLOAT4x3: | |||||
| case MTL_DATATYPE_FLOAT4x4: | |||||
| return 16; | |||||
| case MTL_DATATYPE_LONG3: | |||||
| case MTL_DATATYPE_LONG4: | |||||
| case MTL_DATATYPE_ULONG3: | |||||
| case MTL_DATATYPE_ULONG4: | |||||
| return 32; | |||||
| default: | |||||
| BLI_assert_msg(false, "Unrecognised MTL datatype."); | |||||
| return 0; | |||||
| }; | |||||
| } | |||||