summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/video_core/CMakeLists.txt2
-rw-r--r--src/video_core/renderer_opengl/gl_shader_decompiler.cpp4
-rw-r--r--src/video_core/renderer_opengl/maxwell_to_gl.h6
-rw-r--r--src/video_core/renderer_vulkan/maxwell_to_vk.cpp24
-rw-r--r--src/video_core/renderer_vulkan/wrapper.cpp16
-rw-r--r--src/video_core/shader/decode/arithmetic_half.cpp3
-rw-r--r--src/video_core/shader/decode/image.cpp14
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()
269if (MSVC) 269if (MSVC)
270 target_compile_options(video_core PRIVATE /we4267) 270 target_compile_options(video_core PRIVATE /we4267)
271else() 271else()
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)
273endif() 273endif()
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
86VkCompareOp DepthCompareFunction(Tegra::Texture::DepthCompareFunc depth_compare_func) { 87VkCompareOp 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
306VkFormat VertexFormat(Maxwell::VertexAttribute::Type type, Maxwell::VertexAttribute::Size size) { 308VkFormat 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
228std::size_t GetImageComponentMask(TextureFormat format) { 231std::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
265std::size_t GetImageTypeNumCoordinates(Tegra::Shader::ImageType image_type) { 269std::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;