Set descriptor component type bits from type
diff --git a/layers/shader_validation.cpp b/layers/shader_validation.cpp
index b000b1c..d7bdf08 100644
--- a/layers/shader_validation.cpp
+++ b/layers/shader_validation.cpp
@@ -1467,20 +1467,40 @@
                 auto arrayed = type.word(5);
                 auto msaa = type.word(6);
 
+                uint32_t bits = 0;
+                switch (GetFundamentalType(module, type.word(2))) {
+                    case FORMAT_TYPE_FLOAT:
+                        bits = DESCRIPTOR_REQ_COMPONENT_TYPE_FLOAT;
+                        break;
+                    case FORMAT_TYPE_UINT:
+                        bits = DESCRIPTOR_REQ_COMPONENT_TYPE_UINT;
+                        break;
+                    case FORMAT_TYPE_SINT:
+                        bits = DESCRIPTOR_REQ_COMPONENT_TYPE_SINT;
+                        break;
+                    default:
+                        break;
+                }
+
                 switch (dim) {
                     case spv::Dim1D:
-                        return arrayed ? DESCRIPTOR_REQ_VIEW_TYPE_1D_ARRAY : DESCRIPTOR_REQ_VIEW_TYPE_1D;
+                        bits |= arrayed ? DESCRIPTOR_REQ_VIEW_TYPE_1D_ARRAY : DESCRIPTOR_REQ_VIEW_TYPE_1D;
+                        return bits;
                     case spv::Dim2D:
-                        return (msaa ? DESCRIPTOR_REQ_MULTI_SAMPLE : DESCRIPTOR_REQ_SINGLE_SAMPLE) |
-                               (arrayed ? DESCRIPTOR_REQ_VIEW_TYPE_2D_ARRAY : DESCRIPTOR_REQ_VIEW_TYPE_2D);
+                        bits |= msaa ? DESCRIPTOR_REQ_MULTI_SAMPLE : DESCRIPTOR_REQ_SINGLE_SAMPLE;
+                        bits |= arrayed ? DESCRIPTOR_REQ_VIEW_TYPE_2D_ARRAY : DESCRIPTOR_REQ_VIEW_TYPE_2D;
+                        return bits;
                     case spv::Dim3D:
-                        return DESCRIPTOR_REQ_VIEW_TYPE_3D;
+                        bits |= DESCRIPTOR_REQ_VIEW_TYPE_3D;
+                        return bits;
                     case spv::DimCube:
-                        return arrayed ? DESCRIPTOR_REQ_VIEW_TYPE_CUBE_ARRAY : DESCRIPTOR_REQ_VIEW_TYPE_CUBE;
+                        bits |= arrayed ? DESCRIPTOR_REQ_VIEW_TYPE_CUBE_ARRAY : DESCRIPTOR_REQ_VIEW_TYPE_CUBE;
+                        return bits;
                     case spv::DimSubpassData:
-                        return msaa ? DESCRIPTOR_REQ_MULTI_SAMPLE : DESCRIPTOR_REQ_SINGLE_SAMPLE;
+                        bits |= msaa ? DESCRIPTOR_REQ_MULTI_SAMPLE : DESCRIPTOR_REQ_SINGLE_SAMPLE;
+                        return bits;
                     default:  // buffer, etc.
-                        return 0;
+                        return bits;
                 }
             }
             default: