diff options
| author | 2020-09-16 20:43:23 -0700 | |
|---|---|---|
| committer | 2020-09-16 20:43:23 -0700 | |
| commit | 1eae35621e74dc85cfbbab38b56f228bf7e38bf0 (patch) | |
| tree | 7d9025464cca40265141fb3f39ef7b2ef76c5234 | |
| parent | Merge pull request #4662 from lioncash/factory (diff) | |
| parent | video_core: Enforce -Werror=switch (diff) | |
| download | yuzu-1eae35621e74dc85cfbbab38b56f228bf7e38bf0.tar.gz yuzu-1eae35621e74dc85cfbbab38b56f228bf7e38bf0.tar.xz yuzu-1eae35621e74dc85cfbbab38b56f228bf7e38bf0.zip | |
Merge pull request #4663 from ReinUsesLisp/wswitch
video_core: Enforce -Werror=switch
Diffstat (limited to '')
| -rw-r--r-- | src/video_core/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_decompiler.cpp | 4 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/maxwell_to_gl.h | 6 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/maxwell_to_vk.cpp | 24 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/wrapper.cpp | 16 | ||||
| -rw-r--r-- | src/video_core/shader/decode/arithmetic_half.cpp | 3 | ||||
| -rw-r--r-- | src/video_core/shader/decode/image.cpp | 14 |
7 files changed, 59 insertions, 10 deletions
diff --git a/src/video_core/CMakeLists.txt b/src/video_core/CMakeLists.txt index d85f1e9d1..f52b55ef3 100644 --- a/src/video_core/CMakeLists.txt +++ b/src/video_core/CMakeLists.txt | |||
| @@ -269,5 +269,5 @@ endif() | |||
| 269 | if (MSVC) | 269 | if (MSVC) |
| 270 | target_compile_options(video_core PRIVATE /we4267) | 270 | target_compile_options(video_core PRIVATE /we4267) |
| 271 | else() | 271 | else() |
| 272 | target_compile_options(video_core PRIVATE -Werror=conversion -Wno-error=sign-conversion) | 272 | target_compile_options(video_core PRIVATE -Werror=conversion -Wno-error=sign-conversion -Werror=switch) |
| 273 | endif() | 273 | endif() |
diff --git a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp index 3f75fcd2b..ce3a65122 100644 --- a/src/video_core/renderer_opengl/gl_shader_decompiler.cpp +++ b/src/video_core/renderer_opengl/gl_shader_decompiler.cpp | |||
| @@ -1443,8 +1443,10 @@ private: | |||
| 1443 | return expr + ", vec2(0.0), vec2(0.0))"; | 1443 | return expr + ", vec2(0.0), vec2(0.0))"; |
| 1444 | case TextureType::TextureCube: | 1444 | case TextureType::TextureCube: |
| 1445 | return expr + ", vec3(0.0), vec3(0.0))"; | 1445 | return expr + ", vec3(0.0), vec3(0.0))"; |
| 1446 | default: | ||
| 1447 | UNREACHABLE(); | ||
| 1448 | break; | ||
| 1446 | } | 1449 | } |
| 1447 | UNREACHABLE(); | ||
| 1448 | } | 1450 | } |
| 1449 | 1451 | ||
| 1450 | for (const auto& variant : extras) { | 1452 | for (const auto& variant : extras) { |
diff --git a/src/video_core/renderer_opengl/maxwell_to_gl.h b/src/video_core/renderer_opengl/maxwell_to_gl.h index fe9bd4b5a..a8be2aa37 100644 --- a/src/video_core/renderer_opengl/maxwell_to_gl.h +++ b/src/video_core/renderer_opengl/maxwell_to_gl.h | |||
| @@ -47,6 +47,8 @@ inline GLenum VertexFormat(Maxwell::VertexAttribute attrib) { | |||
| 47 | return GL_UNSIGNED_INT; | 47 | return GL_UNSIGNED_INT; |
| 48 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: | 48 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: |
| 49 | return GL_UNSIGNED_INT_2_10_10_10_REV; | 49 | return GL_UNSIGNED_INT_2_10_10_10_REV; |
| 50 | default: | ||
| 51 | break; | ||
| 50 | } | 52 | } |
| 51 | break; | 53 | break; |
| 52 | case Maxwell::VertexAttribute::Type::SignedNorm: | 54 | case Maxwell::VertexAttribute::Type::SignedNorm: |
| @@ -70,6 +72,8 @@ inline GLenum VertexFormat(Maxwell::VertexAttribute attrib) { | |||
| 70 | return GL_INT; | 72 | return GL_INT; |
| 71 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: | 73 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: |
| 72 | return GL_INT_2_10_10_10_REV; | 74 | return GL_INT_2_10_10_10_REV; |
| 75 | default: | ||
| 76 | break; | ||
| 73 | } | 77 | } |
| 74 | break; | 78 | break; |
| 75 | case Maxwell::VertexAttribute::Type::Float: | 79 | case Maxwell::VertexAttribute::Type::Float: |
| @@ -84,6 +88,8 @@ inline GLenum VertexFormat(Maxwell::VertexAttribute attrib) { | |||
| 84 | case Maxwell::VertexAttribute::Size::Size_32_32_32: | 88 | case Maxwell::VertexAttribute::Size::Size_32_32_32: |
| 85 | case Maxwell::VertexAttribute::Size::Size_32_32_32_32: | 89 | case Maxwell::VertexAttribute::Size::Size_32_32_32_32: |
| 86 | return GL_FLOAT; | 90 | return GL_FLOAT; |
| 91 | default: | ||
| 92 | break; | ||
| 87 | } | 93 | } |
| 88 | break; | 94 | break; |
| 89 | } | 95 | } |
diff --git a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp index f8c77f4fa..d22de1d81 100644 --- a/src/video_core/renderer_vulkan/maxwell_to_vk.cpp +++ b/src/video_core/renderer_vulkan/maxwell_to_vk.cpp | |||
| @@ -78,9 +78,10 @@ VkSamplerAddressMode WrapMode(const VKDevice& device, Tegra::Texture::WrapMode w | |||
| 78 | case Tegra::Texture::WrapMode::MirrorOnceBorder: | 78 | case Tegra::Texture::WrapMode::MirrorOnceBorder: |
| 79 | UNIMPLEMENTED(); | 79 | UNIMPLEMENTED(); |
| 80 | return VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE; | 80 | return VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE; |
| 81 | default: | ||
| 82 | UNIMPLEMENTED_MSG("Unimplemented wrap mode={}", static_cast<u32>(wrap_mode)); | ||
| 83 | return {}; | ||
| 81 | } | 84 | } |
| 82 | UNIMPLEMENTED_MSG("Unimplemented wrap mode={}", static_cast<u32>(wrap_mode)); | ||
| 83 | return {}; | ||
| 84 | } | 85 | } |
| 85 | 86 | ||
| 86 | VkCompareOp DepthCompareFunction(Tegra::Texture::DepthCompareFunc depth_compare_func) { | 87 | VkCompareOp DepthCompareFunction(Tegra::Texture::DepthCompareFunc depth_compare_func) { |
| @@ -298,9 +299,10 @@ VkPrimitiveTopology PrimitiveTopology([[maybe_unused]] const VKDevice& device, | |||
| 298 | return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; | 299 | return VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST; |
| 299 | case Maxwell::PrimitiveTopology::Patches: | 300 | case Maxwell::PrimitiveTopology::Patches: |
| 300 | return VK_PRIMITIVE_TOPOLOGY_PATCH_LIST; | 301 | return VK_PRIMITIVE_TOPOLOGY_PATCH_LIST; |
| 302 | default: | ||
| 303 | UNIMPLEMENTED_MSG("Unimplemented topology={}", static_cast<u32>(topology)); | ||
| 304 | return {}; | ||
| 301 | } | 305 | } |
| 302 | UNIMPLEMENTED_MSG("Unimplemented topology={}", static_cast<u32>(topology)); | ||
| 303 | return {}; | ||
| 304 | } | 306 | } |
| 305 | 307 | ||
| 306 | VkFormat VertexFormat(Maxwell::VertexAttribute::Type type, Maxwell::VertexAttribute::Size size) { | 308 | VkFormat VertexFormat(Maxwell::VertexAttribute::Type type, Maxwell::VertexAttribute::Size size) { |
| @@ -325,6 +327,8 @@ VkFormat VertexFormat(Maxwell::VertexAttribute::Type type, Maxwell::VertexAttrib | |||
| 325 | return VK_FORMAT_R16G16B16A16_UNORM; | 327 | return VK_FORMAT_R16G16B16A16_UNORM; |
| 326 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: | 328 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: |
| 327 | return VK_FORMAT_A2B10G10R10_UNORM_PACK32; | 329 | return VK_FORMAT_A2B10G10R10_UNORM_PACK32; |
| 330 | default: | ||
| 331 | break; | ||
| 328 | } | 332 | } |
| 329 | break; | 333 | break; |
| 330 | case Maxwell::VertexAttribute::Type::SignedNorm: | 334 | case Maxwell::VertexAttribute::Type::SignedNorm: |
| @@ -347,6 +351,8 @@ VkFormat VertexFormat(Maxwell::VertexAttribute::Type type, Maxwell::VertexAttrib | |||
| 347 | return VK_FORMAT_R16G16B16A16_SNORM; | 351 | return VK_FORMAT_R16G16B16A16_SNORM; |
| 348 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: | 352 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: |
| 349 | return VK_FORMAT_A2B10G10R10_SNORM_PACK32; | 353 | return VK_FORMAT_A2B10G10R10_SNORM_PACK32; |
| 354 | default: | ||
| 355 | break; | ||
| 350 | } | 356 | } |
| 351 | break; | 357 | break; |
| 352 | case Maxwell::VertexAttribute::Type::UnsignedScaled: | 358 | case Maxwell::VertexAttribute::Type::UnsignedScaled: |
| @@ -369,6 +375,8 @@ VkFormat VertexFormat(Maxwell::VertexAttribute::Type type, Maxwell::VertexAttrib | |||
| 369 | return VK_FORMAT_R16G16B16A16_USCALED; | 375 | return VK_FORMAT_R16G16B16A16_USCALED; |
| 370 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: | 376 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: |
| 371 | return VK_FORMAT_A2B10G10R10_USCALED_PACK32; | 377 | return VK_FORMAT_A2B10G10R10_USCALED_PACK32; |
| 378 | default: | ||
| 379 | break; | ||
| 372 | } | 380 | } |
| 373 | break; | 381 | break; |
| 374 | case Maxwell::VertexAttribute::Type::SignedScaled: | 382 | case Maxwell::VertexAttribute::Type::SignedScaled: |
| @@ -391,6 +399,8 @@ VkFormat VertexFormat(Maxwell::VertexAttribute::Type type, Maxwell::VertexAttrib | |||
| 391 | return VK_FORMAT_R16G16B16A16_SSCALED; | 399 | return VK_FORMAT_R16G16B16A16_SSCALED; |
| 392 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: | 400 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: |
| 393 | return VK_FORMAT_A2B10G10R10_SSCALED_PACK32; | 401 | return VK_FORMAT_A2B10G10R10_SSCALED_PACK32; |
| 402 | default: | ||
| 403 | break; | ||
| 394 | } | 404 | } |
| 395 | break; | 405 | break; |
| 396 | case Maxwell::VertexAttribute::Type::UnsignedInt: | 406 | case Maxwell::VertexAttribute::Type::UnsignedInt: |
| @@ -421,6 +431,8 @@ VkFormat VertexFormat(Maxwell::VertexAttribute::Type type, Maxwell::VertexAttrib | |||
| 421 | return VK_FORMAT_R32G32B32A32_UINT; | 431 | return VK_FORMAT_R32G32B32A32_UINT; |
| 422 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: | 432 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: |
| 423 | return VK_FORMAT_A2B10G10R10_UINT_PACK32; | 433 | return VK_FORMAT_A2B10G10R10_UINT_PACK32; |
| 434 | default: | ||
| 435 | break; | ||
| 424 | } | 436 | } |
| 425 | break; | 437 | break; |
| 426 | case Maxwell::VertexAttribute::Type::SignedInt: | 438 | case Maxwell::VertexAttribute::Type::SignedInt: |
| @@ -451,6 +463,8 @@ VkFormat VertexFormat(Maxwell::VertexAttribute::Type type, Maxwell::VertexAttrib | |||
| 451 | return VK_FORMAT_R32G32B32A32_SINT; | 463 | return VK_FORMAT_R32G32B32A32_SINT; |
| 452 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: | 464 | case Maxwell::VertexAttribute::Size::Size_10_10_10_2: |
| 453 | return VK_FORMAT_A2B10G10R10_SINT_PACK32; | 465 | return VK_FORMAT_A2B10G10R10_SINT_PACK32; |
| 466 | default: | ||
| 467 | break; | ||
| 454 | } | 468 | } |
| 455 | break; | 469 | break; |
| 456 | case Maxwell::VertexAttribute::Type::Float: | 470 | case Maxwell::VertexAttribute::Type::Float: |
| @@ -471,6 +485,8 @@ VkFormat VertexFormat(Maxwell::VertexAttribute::Type type, Maxwell::VertexAttrib | |||
| 471 | return VK_FORMAT_R32G32B32_SFLOAT; | 485 | return VK_FORMAT_R32G32B32_SFLOAT; |
| 472 | case Maxwell::VertexAttribute::Size::Size_32_32_32_32: | 486 | case Maxwell::VertexAttribute::Size::Size_32_32_32_32: |
| 473 | return VK_FORMAT_R32G32B32A32_SFLOAT; | 487 | return VK_FORMAT_R32G32B32A32_SFLOAT; |
| 488 | default: | ||
| 489 | break; | ||
| 474 | } | 490 | } |
| 475 | break; | 491 | break; |
| 476 | } | 492 | } |
diff --git a/src/video_core/renderer_vulkan/wrapper.cpp b/src/video_core/renderer_vulkan/wrapper.cpp index 013865aa4..fe291a148 100644 --- a/src/video_core/renderer_vulkan/wrapper.cpp +++ b/src/video_core/renderer_vulkan/wrapper.cpp | |||
| @@ -262,6 +262,22 @@ const char* ToString(VkResult result) noexcept { | |||
| 262 | return "VK_ERROR_INVALID_DEVICE_ADDRESS_EXT"; | 262 | return "VK_ERROR_INVALID_DEVICE_ADDRESS_EXT"; |
| 263 | case VkResult::VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT: | 263 | case VkResult::VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT: |
| 264 | return "VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT"; | 264 | return "VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT"; |
| 265 | case VkResult::VK_ERROR_UNKNOWN: | ||
| 266 | return "VK_ERROR_UNKNOWN"; | ||
| 267 | case VkResult::VK_ERROR_INCOMPATIBLE_VERSION_KHR: | ||
| 268 | return "VK_ERROR_INCOMPATIBLE_VERSION_KHR"; | ||
| 269 | case VkResult::VK_THREAD_IDLE_KHR: | ||
| 270 | return "VK_THREAD_IDLE_KHR"; | ||
| 271 | case VkResult::VK_THREAD_DONE_KHR: | ||
| 272 | return "VK_THREAD_DONE_KHR"; | ||
| 273 | case VkResult::VK_OPERATION_DEFERRED_KHR: | ||
| 274 | return "VK_OPERATION_DEFERRED_KHR"; | ||
| 275 | case VkResult::VK_OPERATION_NOT_DEFERRED_KHR: | ||
| 276 | return "VK_OPERATION_NOT_DEFERRED_KHR"; | ||
| 277 | case VkResult::VK_PIPELINE_COMPILE_REQUIRED_EXT: | ||
| 278 | return "VK_PIPELINE_COMPILE_REQUIRED_EXT"; | ||
| 279 | case VkResult::VK_RESULT_MAX_ENUM: | ||
| 280 | return "VK_RESULT_MAX_ENUM"; | ||
| 265 | } | 281 | } |
| 266 | return "Unknown"; | 282 | return "Unknown"; |
| 267 | } | 283 | } |
diff --git a/src/video_core/shader/decode/arithmetic_half.cpp b/src/video_core/shader/decode/arithmetic_half.cpp index a276aee44..88103fede 100644 --- a/src/video_core/shader/decode/arithmetic_half.cpp +++ b/src/video_core/shader/decode/arithmetic_half.cpp | |||
| @@ -53,6 +53,9 @@ u32 ShaderIR::DecodeArithmeticHalf(NodeBlock& bb, u32 pc) { | |||
| 53 | absolute_a = ((instr.value >> 44) & 1) != 0; | 53 | absolute_a = ((instr.value >> 44) & 1) != 0; |
| 54 | absolute_b = ((instr.value >> 54) & 1) != 0; | 54 | absolute_b = ((instr.value >> 54) & 1) != 0; |
| 55 | break; | 55 | break; |
| 56 | default: | ||
| 57 | UNREACHABLE(); | ||
| 58 | break; | ||
| 56 | } | 59 | } |
| 57 | 60 | ||
| 58 | Node op_a = UnpackHalfFloat(GetRegister(instr.gpr8), instr.alu_half.type_a); | 61 | Node op_a = UnpackHalfFloat(GetRegister(instr.gpr8), instr.alu_half.type_a); |
diff --git a/src/video_core/shader/decode/image.cpp b/src/video_core/shader/decode/image.cpp index e75ca4fdb..cd424aa91 100644 --- a/src/video_core/shader/decode/image.cpp +++ b/src/video_core/shader/decode/image.cpp | |||
| @@ -119,6 +119,8 @@ ComponentType GetComponentType(Tegra::Engines::SamplerDescriptor descriptor, | |||
| 119 | return descriptor.r_type; | 119 | return descriptor.r_type; |
| 120 | } | 120 | } |
| 121 | break; | 121 | break; |
| 122 | default: | ||
| 123 | break; | ||
| 122 | } | 124 | } |
| 123 | UNIMPLEMENTED_MSG("Texture format not implemented={}", format); | 125 | UNIMPLEMENTED_MSG("Texture format not implemented={}", format); |
| 124 | return ComponentType::FLOAT; | 126 | return ComponentType::FLOAT; |
| @@ -220,9 +222,10 @@ u32 GetComponentSize(TextureFormat format, std::size_t component) { | |||
| 220 | return (component == 0 || component == 1) ? 8 : 0; | 222 | return (component == 0 || component == 1) ? 8 : 0; |
| 221 | case TextureFormat::G4R4: | 223 | case TextureFormat::G4R4: |
| 222 | return (component == 0 || component == 1) ? 4 : 0; | 224 | return (component == 0 || component == 1) ? 4 : 0; |
| 225 | default: | ||
| 226 | UNIMPLEMENTED_MSG("Texture format not implemented={}", format); | ||
| 227 | return 0; | ||
| 223 | } | 228 | } |
| 224 | UNIMPLEMENTED_MSG("Texture format not implemented={}", format); | ||
| 225 | return 0; | ||
| 226 | } | 229 | } |
| 227 | 230 | ||
| 228 | std::size_t GetImageComponentMask(TextureFormat format) { | 231 | std::size_t GetImageComponentMask(TextureFormat format) { |
| @@ -257,9 +260,10 @@ std::size_t GetImageComponentMask(TextureFormat format) { | |||
| 257 | case TextureFormat::R8: | 260 | case TextureFormat::R8: |
| 258 | case TextureFormat::R1: | 261 | case TextureFormat::R1: |
| 259 | return std::size_t{R}; | 262 | return std::size_t{R}; |
| 263 | default: | ||
| 264 | UNIMPLEMENTED_MSG("Texture format not implemented={}", format); | ||
| 265 | return std::size_t{R | G | B | A}; | ||
| 260 | } | 266 | } |
| 261 | UNIMPLEMENTED_MSG("Texture format not implemented={}", format); | ||
| 262 | return std::size_t{R | G | B | A}; | ||
| 263 | } | 267 | } |
| 264 | 268 | ||
| 265 | std::size_t GetImageTypeNumCoordinates(Tegra::Shader::ImageType image_type) { | 269 | std::size_t GetImageTypeNumCoordinates(Tegra::Shader::ImageType image_type) { |
| @@ -463,6 +467,8 @@ u32 ShaderIR::DecodeImage(NodeBlock& bb, u32 pc) { | |||
| 463 | return OperationCode::AtomicImageXor; | 467 | return OperationCode::AtomicImageXor; |
| 464 | case Tegra::Shader::ImageAtomicOperation::Exch: | 468 | case Tegra::Shader::ImageAtomicOperation::Exch: |
| 465 | return OperationCode::AtomicImageExchange; | 469 | return OperationCode::AtomicImageExchange; |
| 470 | default: | ||
| 471 | break; | ||
| 466 | } | 472 | } |
| 467 | default: | 473 | default: |
| 468 | break; | 474 | break; |