From 943ecdef585b0c3997f301cc43f99d9363fcb10a Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 9 Jun 2016 13:18:23 -0700 Subject: [PATCH] Coverity: Ensure bitshifts are done at 64-bit precision * We use more than 32-bits in the cache key, so we need to be sure that any bitshifts are done at 64-bit, since 32-bit shifts are undefined. --- renderdoc/driver/vulkan/vk_debug.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/renderdoc/driver/vulkan/vk_debug.cpp b/renderdoc/driver/vulkan/vk_debug.cpp index 5319f4686..60ad7296a 100644 --- a/renderdoc/driver/vulkan/vk_debug.cpp +++ b/renderdoc/driver/vulkan/vk_debug.cpp @@ -4948,7 +4948,7 @@ MeshDisplayPipelines VulkanDebugManager::CacheMeshDisplayPipelines(const MeshFor bit++; RDCASSERT((uint32_t)primary.topo < 64); - key |= ((uint32_t)primary.topo & 0x3f) << bit; + key |= uint64_t((uint32_t)primary.topo & 0x3f) << bit; bit += 6; ResourceFormat fmt; @@ -4971,20 +4971,20 @@ MeshDisplayPipelines VulkanDebugManager::CacheMeshDisplayPipelines(const MeshFor RDCCOMPILE_ASSERT(VK_FORMAT_RANGE_SIZE <= 255, "Mesh pipeline cache key needs an extra bit for format"); - key |= ((uint32_t)primaryFmt & 0xff) << bit; + key |= uint64_t((uint32_t)primaryFmt & 0xff) << bit; bit += 8; - key |= ((uint32_t)secondaryFmt & 0xff) << bit; + key |= uint64_t((uint32_t)secondaryFmt & 0xff) << bit; bit += 8; RDCASSERT(primary.stride <= 0xffff); - key |= ((uint32_t)primary.stride & 0xffff) << bit; + key |= uint64_t((uint32_t)primary.stride & 0xffff) << bit; bit += 16; if(secondary.buf != ResourceId()) { RDCASSERT(secondary.stride <= 0xffff); - key |= ((uint32_t)secondary.stride & 0xffff) << bit; + key |= uint64_t((uint32_t)secondary.stride & 0xffff) << bit; } bit += 16;