{"record":{"id":"2d307df7f0a1c4d1","repo":"stride3d/stride","slug":"unsupported-texture-format","errorCode":null,"errorMessage":"Unsupported texture format: ","messagePattern":"Unsupported texture format: ","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"sources/engine/Stride.Graphics/Vulkan/VulkanConvertExtensions.cs","lineNumber":287,"sourceCode":"            VkFormat.R32G32B32A32Sint => PixelFormat.R32G32B32A32_SInt,\n            VkFormat.R32G32B32A32Uint => PixelFormat.R32G32B32A32_UInt,\n            VkFormat.D16Unorm => PixelFormat.D16_UNorm,\n            VkFormat.D24UnormS8Uint => PixelFormat.D24_UNorm_S8_UInt,\n            VkFormat.D32Sfloat => PixelFormat.D32_Float,\n            VkFormat.D32SfloatS8Uint => PixelFormat.D32_Float_S8X24_UInt,\n            _ => throw new NotSupportedException($\"VkFormat '{inputFormat}' has no equivalent PixelFormat\"),\n        };\n\n        public static VkFormat ConvertPixelFormat(PixelFormat inputFormat)\n        {\n            ConvertPixelFormat(inputFormat, out var format, out _, out _);\n            return format;\n        }\n\n        public static void ConvertPixelFormat(PixelFormat inputFormat, out VkFormat format, out int pixelSize, out bool compressed)\n        {\n            if (!TryConvertPixelFormat(inputFormat, out format, out pixelSize, out compressed))\n                throw new InvalidOperationException(\"Unsupported texture format: \" + inputFormat);\n        }\n\n        /// <summary>\n        /// Converts a <see cref=\"PixelFormat\"/> to its Vulkan equivalent.\n        /// </summary>\n        /// <returns><c>true</c> if the format has a Vulkan equivalent; otherwise <c>false</c> and <paramref name=\"format\"/> is <see cref=\"VkFormat.Undefined\"/>.</returns>\n        public static bool TryConvertPixelFormat(PixelFormat inputFormat, out VkFormat format, out int pixelSize, out bool compressed)\n        {\n            compressed = false;\n\n            // TODO VULKAN: Complete supported formats\n            switch (inputFormat)\n            {\n                //case PixelFormat.A8_UNorm:\n                //    format = VkFormat.;\n                //    pixelSize = 1;\n                //    break;\n                case PixelFormat.R8_UNorm:","sourceCodeStart":269,"sourceCodeEnd":305,"githubUrl":"https://github.com/stride3d/stride/blob/96fad776d210c221682aac1ccdf4c79dc046fc38/sources/engine/Stride.Graphics/Vulkan/VulkanConvertExtensions.cs#L269-L305","documentation":"This ConvertPixelFormat overload converts a Stride PixelFormat to a VkFormat, pixel size, and compression flag. It delegates to TryConvertPixelFormat and throws InvalidOperationException with 'Unsupported texture format: <format>' when the PixelFormat has no Vulkan equivalent (e.g. certain compressed or legacy formats).","triggerScenarios":"Creating a texture or uploading data with a PixelFormat that TryConvertPixelFormat does not recognize — the throw happens during ConvertPixelFormat called from texture initialization.","commonSituations":"Requesting an unusual or legacy pixel format (e.g. some block-compressed or extended formats) on the Vulkan backend; loading assets authored for DirectX with formats Vulkan cannot express in this Stride version.","solutions":["Use a widely supported PixelFormat (e.g. R8G8B8A8_UNorm, BC1/BC3 where supported)","Pre-convert asset textures to a supported format at import time","Call TryConvertPixelFormat first to check support and fall back gracefully","Upgrade Stride for a broader format table"],"exampleFix":"// before\nvar vkFormat = VulkanConvertExtensions.ConvertPixelFormat(PixelFormat.BC2_UNorm);\n// after\nif (VulkanConvertExtensions.TryConvertPixelFormat(PixelFormat.BC3_UNorm, out _, out _, out _))\n    var vkFormat = VulkanConvertExtensions.ConvertPixelFormat(PixelFormat.BC3_UNorm);\nelse\n    /* transcode or choose another format */;","handlingStrategy":"try-catch","validationCode":"if (!VulkanConvertExtensions.TryConvertPixelFormat(inputFormat, out _, out var pixelSize, out var compressed))\n{\n    // choose alternate format or transcode asset\n}","typeGuard":null,"tryCatchPattern":"try { vkFormat = VulkanConvertExtensions.ConvertPixelFormat(inputFormat); }\ncatch (InvalidOperationException) { vkFormat = VulkanConvertExtensions.ConvertPixelFormat(PixelFormat.R8G8B8A8_UNorm); }","preventionTips":["Call TryConvertPixelFormat first to probe support","Normalize imported assets to commonly supported formats at build time","Keep a fallback PixelFormat table for the Vulkan backend"],"tags":["graphics","vulkan","pixel-format","enum"],"backgroundTag":"unsupported-enum-value","analyzedSha":"96fad776d210c221682aac1ccdf4c79dc046fc38","analyzedAt":"2026-09-14T02:59:31.279Z","contentChangedAt":"2026-09-14T02:59:31.279Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}