Skip to content

Commit bcc8d74

Browse files
Added support for more formats
1 parent 0ca154b commit bcc8d74

1 file changed

Lines changed: 166 additions & 13 deletions

File tree

MeltedForge/src/mf/renderer/vk/common.h

Lines changed: 166 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,29 +37,182 @@ MF_INLINE u32 FindMemoryType(VkPhysicalDevice device, uint32_t typeFilter, VkMem
3737

3838
MF_INLINE u32 VulkanFormatBytesPerPixel(VkFormat format) {
3939
switch(format) {
40-
case VK_FORMAT_D32_SFLOAT: return 4;
41-
case VK_FORMAT_D24_UNORM_S8_UINT: return 4;
42-
case VK_FORMAT_R8G8B8_SINT:
40+
case VK_FORMAT_R8_UNORM:
41+
case VK_FORMAT_R8_SNORM:
42+
case VK_FORMAT_R8_USCALED:
43+
case VK_FORMAT_R8_SSCALED:
44+
case VK_FORMAT_R8_UINT:
45+
case VK_FORMAT_R8_SINT:
46+
case VK_FORMAT_R8_SRGB:
47+
case VK_FORMAT_S8_UINT:
48+
return 1;
49+
50+
case VK_FORMAT_R16_UNORM:
51+
case VK_FORMAT_R16_SNORM:
52+
case VK_FORMAT_R16_USCALED:
53+
case VK_FORMAT_R16_SSCALED:
54+
case VK_FORMAT_R16_UINT:
55+
case VK_FORMAT_R16_SINT:
56+
case VK_FORMAT_R16_SFLOAT:
57+
case VK_FORMAT_D16_UNORM:
58+
return 2;
59+
60+
case VK_FORMAT_R8G8_UNORM:
61+
case VK_FORMAT_R8G8_SNORM:
62+
case VK_FORMAT_R8G8_USCALED:
63+
case VK_FORMAT_R8G8_SSCALED:
64+
case VK_FORMAT_R8G8_UINT:
65+
case VK_FORMAT_R8G8_SINT:
66+
case VK_FORMAT_R8G8_SRGB:
67+
return 2;
68+
69+
case VK_FORMAT_R8G8B8_UNORM:
4370
case VK_FORMAT_R8G8B8_SNORM:
44-
case VK_FORMAT_R8G8B8_SRGB:
71+
case VK_FORMAT_R8G8B8_USCALED:
72+
case VK_FORMAT_R8G8B8_SSCALED:
4573
case VK_FORMAT_R8G8B8_UINT:
46-
case VK_FORMAT_R8G8B8_UNORM:
47-
case VK_FORMAT_R8G8B8_USCALED: return 3;
48-
case VK_FORMAT_R8G8B8A8_SINT:
74+
case VK_FORMAT_R8G8B8_SINT:
75+
case VK_FORMAT_R8G8B8_SRGB:
76+
77+
case VK_FORMAT_B8G8R8_UNORM:
78+
case VK_FORMAT_B8G8R8_SNORM:
79+
case VK_FORMAT_B8G8R8_USCALED:
80+
case VK_FORMAT_B8G8R8_SSCALED:
81+
case VK_FORMAT_B8G8R8_UINT:
82+
case VK_FORMAT_B8G8R8_SINT:
83+
case VK_FORMAT_B8G8R8_SRGB:
84+
return 3;
85+
86+
case VK_FORMAT_R8G8B8A8_UNORM:
4987
case VK_FORMAT_R8G8B8A8_SNORM:
50-
case VK_FORMAT_R8G8B8A8_SRGB:
88+
case VK_FORMAT_R8G8B8A8_USCALED:
5189
case VK_FORMAT_R8G8B8A8_SSCALED:
5290
case VK_FORMAT_R8G8B8A8_UINT:
53-
case VK_FORMAT_R8G8B8A8_UNORM:
54-
case VK_FORMAT_R8G8B8A8_USCALED: return 4;
55-
case VK_FORMAT_R16G16B16A16_SFLOAT: return 8;
56-
case VK_FORMAT_R32G32B32A32_SFLOAT: return 16;
91+
case VK_FORMAT_R8G8B8A8_SINT:
92+
case VK_FORMAT_R8G8B8A8_SRGB:
93+
94+
case VK_FORMAT_B8G8R8A8_UNORM:
95+
case VK_FORMAT_B8G8R8A8_SNORM:
96+
case VK_FORMAT_B8G8R8A8_USCALED:
97+
case VK_FORMAT_B8G8R8A8_SSCALED:
98+
case VK_FORMAT_B8G8R8A8_UINT:
99+
case VK_FORMAT_B8G8R8A8_SINT:
100+
case VK_FORMAT_B8G8R8A8_SRGB:
101+
102+
case VK_FORMAT_A8B8G8R8_UNORM_PACK32:
103+
case VK_FORMAT_A8B8G8R8_SNORM_PACK32:
104+
case VK_FORMAT_A8B8G8R8_USCALED_PACK32:
105+
case VK_FORMAT_A8B8G8R8_SSCALED_PACK32:
106+
case VK_FORMAT_A8B8G8R8_UINT_PACK32:
107+
case VK_FORMAT_A8B8G8R8_SINT_PACK32:
108+
case VK_FORMAT_A8B8G8R8_SRGB_PACK32:
109+
110+
case VK_FORMAT_A2R10G10B10_UNORM_PACK32:
111+
case VK_FORMAT_A2R10G10B10_SNORM_PACK32:
112+
case VK_FORMAT_A2R10G10B10_USCALED_PACK32:
113+
case VK_FORMAT_A2R10G10B10_SSCALED_PACK32:
114+
case VK_FORMAT_A2R10G10B10_UINT_PACK32:
115+
case VK_FORMAT_A2R10G10B10_SINT_PACK32:
116+
117+
case VK_FORMAT_A2B10G10R10_UNORM_PACK32:
118+
case VK_FORMAT_A2B10G10R10_SNORM_PACK32:
119+
case VK_FORMAT_A2B10G10R10_USCALED_PACK32:
120+
case VK_FORMAT_A2B10G10R10_SSCALED_PACK32:
121+
case VK_FORMAT_A2B10G10R10_UINT_PACK32:
122+
case VK_FORMAT_A2B10G10R10_SINT_PACK32:
123+
124+
case VK_FORMAT_X8_D24_UNORM_PACK32:
125+
case VK_FORMAT_D24_UNORM_S8_UINT:
126+
case VK_FORMAT_D32_SFLOAT:
127+
return 4;
128+
129+
case VK_FORMAT_R16G16_UNORM:
130+
case VK_FORMAT_R16G16_SNORM:
131+
case VK_FORMAT_R16G16_USCALED:
132+
case VK_FORMAT_R16G16_SSCALED:
133+
case VK_FORMAT_R16G16_UINT:
134+
case VK_FORMAT_R16G16_SINT:
135+
case VK_FORMAT_R16G16_SFLOAT:
136+
return 4;
137+
138+
case VK_FORMAT_R16G16B16_UNORM:
139+
case VK_FORMAT_R16G16B16_SNORM:
140+
case VK_FORMAT_R16G16B16_USCALED:
141+
case VK_FORMAT_R16G16B16_SSCALED:
142+
case VK_FORMAT_R16G16B16_UINT:
143+
case VK_FORMAT_R16G16B16_SINT:
144+
case VK_FORMAT_R16G16B16_SFLOAT:
145+
return 6;
146+
147+
case VK_FORMAT_R16G16B16A16_UNORM:
148+
case VK_FORMAT_R16G16B16A16_SNORM:
149+
case VK_FORMAT_R16G16B16A16_USCALED:
150+
case VK_FORMAT_R16G16B16A16_SSCALED:
151+
case VK_FORMAT_R16G16B16A16_UINT:
152+
case VK_FORMAT_R16G16B16A16_SINT:
153+
case VK_FORMAT_R16G16B16A16_SFLOAT:
154+
return 8;
155+
156+
case VK_FORMAT_R32_UINT:
157+
case VK_FORMAT_R32_SINT:
158+
case VK_FORMAT_R32_SFLOAT:
159+
return 4;
160+
161+
case VK_FORMAT_R32G32_UINT:
162+
case VK_FORMAT_R32G32_SINT:
163+
case VK_FORMAT_R32G32_SFLOAT:
164+
return 8;
165+
166+
case VK_FORMAT_R32G32B32_UINT:
167+
case VK_FORMAT_R32G32B32_SINT:
168+
case VK_FORMAT_R32G32B32_SFLOAT:
169+
return 12;
170+
171+
case VK_FORMAT_R32G32B32A32_UINT:
172+
case VK_FORMAT_R32G32B32A32_SINT:
173+
case VK_FORMAT_R32G32B32A32_SFLOAT:
174+
return 16;
175+
176+
case VK_FORMAT_R64_UINT:
177+
case VK_FORMAT_R64_SINT:
178+
case VK_FORMAT_R64_SFLOAT:
179+
return 8;
180+
181+
case VK_FORMAT_R64G64_UINT:
182+
case VK_FORMAT_R64G64_SINT:
183+
case VK_FORMAT_R64G64_SFLOAT:
184+
return 16;
185+
186+
case VK_FORMAT_R64G64B64_UINT:
187+
case VK_FORMAT_R64G64B64_SINT:
188+
case VK_FORMAT_R64G64B64_SFLOAT:
189+
return 24;
190+
191+
case VK_FORMAT_R64G64B64A64_UINT:
192+
case VK_FORMAT_R64G64B64A64_SINT:
193+
case VK_FORMAT_R64G64B64A64_SFLOAT:
194+
return 32;
195+
196+
case VK_FORMAT_B4G4R4A4_UNORM_PACK16:
197+
case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
198+
case VK_FORMAT_R5G6B5_UNORM_PACK16:
199+
case VK_FORMAT_B5G6R5_UNORM_PACK16:
200+
case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
201+
case VK_FORMAT_B5G5R5A1_UNORM_PACK16:
202+
case VK_FORMAT_A1R5G5B5_UNORM_PACK16:
203+
return 2;
204+
205+
case VK_FORMAT_B10G11R11_UFLOAT_PACK32:
206+
case VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:
207+
return 4;
208+
209+
case VK_FORMAT_D32_SFLOAT_S8_UINT:
210+
return 8;
57211
default:
58212
MF_FATAL_ABORT(mfGetLogger(), "(From the vulkan backend) The format provided isn't supported or is invalid! VkFormat is %s", string_VkFormat(format));
59213
}
60214
}
61215

62-
63216
MF_INLINE MFSamples verifySamples(MFSamples samples) {
64217
switch(samples) {
65218
case MF_SAMPLE_COUNT_1:

0 commit comments

Comments
 (0)