summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2019-12-13 02:43:59 -0300
committerGravatar ReinUsesLisp2019-12-13 03:12:28 -0300
commitf27b21077d37db0c7e75584a4de5970b9ba3641f (patch)
tree591d1bfbaa8ad5b2fd05af9510793a7e2c15f89b /src
parentmaxwell_to_vk: Implement more primitive topologies (diff)
downloadyuzu-f27b21077d37db0c7e75584a4de5970b9ba3641f.tar.gz
yuzu-f27b21077d37db0c7e75584a4de5970b9ba3641f.tar.xz
yuzu-f27b21077d37db0c7e75584a4de5970b9ba3641f.zip
maxwell_to_vk: Implement more vertex formats
Diffstat (limited to 'src')
-rw-r--r--src/video_core/renderer_vulkan/maxwell_to_vk.cpp88
1 files changed, 81 insertions, 7 deletions
diff --git a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp
index 65b9a8cf7..122b88e2e 100644
--- a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp
+++ b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp
@@ -250,37 +250,111 @@ vk::PrimitiveTopology PrimitiveTopology([[maybe_unused]] const VKDevice& device,
250vk::Format VertexFormat(Maxwell::VertexAttribute::Type type, Maxwell::VertexAttribute::Size size) { 250vk::Format VertexFormat(Maxwell::VertexAttribute::Type type, Maxwell::VertexAttribute::Size size) {
251 switch (type) { 251 switch (type) {
252 case Maxwell::VertexAttribute::Type::SignedNorm: 252 case Maxwell::VertexAttribute::Type::SignedNorm:
253 switch (size) {
254 case Maxwell::VertexAttribute::Size::Size_8:
255 return vk::Format::eR8Snorm;
256 case Maxwell::VertexAttribute::Size::Size_8_8:
257 return vk::Format::eR8G8Snorm;
258 case Maxwell::VertexAttribute::Size::Size_8_8_8:
259 return vk::Format::eR8G8B8Snorm;
260 case Maxwell::VertexAttribute::Size::Size_8_8_8_8:
261 return vk::Format::eR8G8B8A8Snorm;
262 case Maxwell::VertexAttribute::Size::Size_16:
263 return vk::Format::eR16Snorm;
264 case Maxwell::VertexAttribute::Size::Size_16_16:
265 return vk::Format::eR16G16Snorm;
266 case Maxwell::VertexAttribute::Size::Size_16_16_16:
267 return vk::Format::eR16G16B16Snorm;
268 case Maxwell::VertexAttribute::Size::Size_16_16_16_16:
269 return vk::Format::eR16G16B16A16Snorm;
270 case Maxwell::VertexAttribute::Size::Size_10_10_10_2:
271 return vk::Format::eA2B10G10R10SnormPack32;
272 default:
273 break;
274 }
253 break; 275 break;
254 case Maxwell::VertexAttribute::Type::UnsignedNorm: 276 case Maxwell::VertexAttribute::Type::UnsignedNorm:
255 switch (size) { 277 switch (size) {
278 case Maxwell::VertexAttribute::Size::Size_8:
279 return vk::Format::eR8Unorm;
280 case Maxwell::VertexAttribute::Size::Size_8_8:
281 return vk::Format::eR8G8Unorm;
282 case Maxwell::VertexAttribute::Size::Size_8_8_8:
283 return vk::Format::eR8G8B8Unorm;
256 case Maxwell::VertexAttribute::Size::Size_8_8_8_8: 284 case Maxwell::VertexAttribute::Size::Size_8_8_8_8:
257 return vk::Format::eR8G8B8A8Unorm; 285 return vk::Format::eR8G8B8A8Unorm;
286 case Maxwell::VertexAttribute::Size::Size_16:
287 return vk::Format::eR16Unorm;
288 case Maxwell::VertexAttribute::Size::Size_16_16:
289 return vk::Format::eR16G16Unorm;
290 case Maxwell::VertexAttribute::Size::Size_16_16_16:
291 return vk::Format::eR16G16B16Unorm;
292 case Maxwell::VertexAttribute::Size::Size_16_16_16_16:
293 return vk::Format::eR16G16B16A16Unorm;
258 default: 294 default:
259 break; 295 break;
260 } 296 }
261 break; 297 break;
262 case Maxwell::VertexAttribute::Type::SignedInt: 298 case Maxwell::VertexAttribute::Type::SignedInt:
263 break; 299 switch (size) {
300 case Maxwell::VertexAttribute::Size::Size_16_16_16_16:
301 return vk::Format::eR16G16B16A16Sint;
302 case Maxwell::VertexAttribute::Size::Size_8:
303 return vk::Format::eR8Sint;
304 case Maxwell::VertexAttribute::Size::Size_8_8:
305 return vk::Format::eR8G8Sint;
306 case Maxwell::VertexAttribute::Size::Size_8_8_8:
307 return vk::Format::eR8G8B8Sint;
308 case Maxwell::VertexAttribute::Size::Size_8_8_8_8:
309 return vk::Format::eR8G8B8A8Sint;
310 case Maxwell::VertexAttribute::Size::Size_32:
311 return vk::Format::eR32Sint;
312 default:
313 break;
314 }
264 case Maxwell::VertexAttribute::Type::UnsignedInt: 315 case Maxwell::VertexAttribute::Type::UnsignedInt:
265 switch (size) { 316 switch (size) {
317 case Maxwell::VertexAttribute::Size::Size_8:
318 return vk::Format::eR8Uint;
319 case Maxwell::VertexAttribute::Size::Size_8_8:
320 return vk::Format::eR8G8Uint;
321 case Maxwell::VertexAttribute::Size::Size_8_8_8:
322 return vk::Format::eR8G8B8Uint;
323 case Maxwell::VertexAttribute::Size::Size_8_8_8_8:
324 return vk::Format::eR8G8B8A8Uint;
266 case Maxwell::VertexAttribute::Size::Size_32: 325 case Maxwell::VertexAttribute::Size::Size_32:
267 return vk::Format::eR32Uint; 326 return vk::Format::eR32Uint;
268 default: 327 default:
269 break; 328 break;
270 } 329 }
271 case Maxwell::VertexAttribute::Type::UnsignedScaled: 330 case Maxwell::VertexAttribute::Type::UnsignedScaled:
331 switch (size) {
332 case Maxwell::VertexAttribute::Size::Size_8_8:
333 return vk::Format::eR8G8Uscaled;
334 default:
335 break;
336 }
337 break;
272 case Maxwell::VertexAttribute::Type::SignedScaled: 338 case Maxwell::VertexAttribute::Type::SignedScaled:
273 break; 339 break;
274 case Maxwell::VertexAttribute::Type::Float: 340 case Maxwell::VertexAttribute::Type::Float:
275 switch (size) { 341 switch (size) {
276 case Maxwell::VertexAttribute::Size::Size_32_32_32_32:
277 return vk::Format::eR32G32B32A32Sfloat;
278 case Maxwell::VertexAttribute::Size::Size_32_32_32:
279 return vk::Format::eR32G32B32Sfloat;
280 case Maxwell::VertexAttribute::Size::Size_32_32:
281 return vk::Format::eR32G32Sfloat;
282 case Maxwell::VertexAttribute::Size::Size_32: 342 case Maxwell::VertexAttribute::Size::Size_32:
283 return vk::Format::eR32Sfloat; 343 return vk::Format::eR32Sfloat;
344 case Maxwell::VertexAttribute::Size::Size_32_32:
345 return vk::Format::eR32G32Sfloat;
346 case Maxwell::VertexAttribute::Size::Size_32_32_32:
347 return vk::Format::eR32G32B32Sfloat;
348 case Maxwell::VertexAttribute::Size::Size_32_32_32_32:
349 return vk::Format::eR32G32B32A32Sfloat;
350 case Maxwell::VertexAttribute::Size::Size_16:
351 return vk::Format::eR16Sfloat;
352 case Maxwell::VertexAttribute::Size::Size_16_16:
353 return vk::Format::eR16G16Sfloat;
354 case Maxwell::VertexAttribute::Size::Size_16_16_16:
355 return vk::Format::eR16G16B16Sfloat;
356 case Maxwell::VertexAttribute::Size::Size_16_16_16_16:
357 return vk::Format::eR16G16B16A16Sfloat;
284 default: 358 default:
285 break; 359 break;
286 } 360 }