| 101 | } |
| 102 | |
| 103 | TextureHandle DeviceWrapper::createTexture(const TextureDesc& d) |
| 104 | { |
| 105 | bool anyErrors = false; |
| 106 | |
| 107 | switch (d.dimension) |
| 108 | { |
| 109 | case TextureDimension::Texture1D: |
| 110 | case TextureDimension::Texture1DArray: |
| 111 | case TextureDimension::Texture2D: |
| 112 | case TextureDimension::Texture2DArray: |
| 113 | case TextureDimension::TextureCube: |
| 114 | case TextureDimension::TextureCubeArray: |
| 115 | case TextureDimension::Texture2DMS: |
| 116 | case TextureDimension::Texture2DMSArray: |
| 117 | case TextureDimension::Texture3D: |
| 118 | break; |
| 119 | |
| 120 | case TextureDimension::Unknown: |
| 121 | default: |
| 122 | error("Unknown texture dimension"); |
| 123 | return nullptr; |
| 124 | } |
| 125 | |
| 126 | const char* dimensionStr = utils::TextureDimensionToString(d.dimension); |
| 127 | const char* debugName = utils::DebugNameToString(d.debugName); |
| 128 | |
| 129 | if (d.width == 0 || d.height == 0 || d.depth == 0 || d.arraySize == 0 || d.mipLevels == 0) |
| 130 | { |
| 131 | std::stringstream ss; |
| 132 | ss << dimensionStr << " " << debugName << ": width(" << d.width << "), height(" << d.height << "), depth(" << d.depth |
| 133 | << "), arraySize(" << d.arraySize << ") and mipLevels(" << d.mipLevels << ") must not be zero"; |
| 134 | error(ss.str()); |
| 135 | return nullptr; |
| 136 | } |
| 137 | |
| 138 | switch (d.dimension) // NOLINT(clang-diagnostic-switch-enum) |
| 139 | { |
| 140 | case TextureDimension::Texture1D: |
| 141 | case TextureDimension::Texture1DArray: |
| 142 | if (d.height != 1) |
| 143 | { |
| 144 | std::stringstream ss; |
| 145 | ss << dimensionStr << " " << debugName << ": height(" << d.height << ") must be equal to 1"; |
| 146 | error(ss.str()); |
| 147 | anyErrors = true; |
| 148 | } |
| 149 | break; |
| 150 | default:; |
| 151 | } |
| 152 | |
| 153 | switch (d.dimension) // NOLINT(clang-diagnostic-switch-enum) |
| 154 | { |
| 155 | case TextureDimension::Texture1D: |
| 156 | case TextureDimension::Texture1DArray: |
| 157 | case TextureDimension::Texture2D: |
| 158 | case TextureDimension::Texture2DArray: |
| 159 | case TextureDimension::TextureCube: |
| 160 | case TextureDimension::TextureCubeArray: |
nothing calls this directly
no test coverage detected