{"record":{"id":"5f89fb058152b518","repo":"stride3d/stride","slug":"multisample-is-only-supported-for-2d-textures","errorCode":null,"errorMessage":"Multisample is only supported for 2D Textures","messagePattern":"Multisample is only supported for 2D Textures","errorType":"exception","errorClass":"NotSupportedException","httpStatus":null,"severity":"error","filePath":"sources/engine/Stride.Graphics/Direct3D12/Texture.Direct3D12.cs","lineNumber":600,"sourceCode":"                };\n\n                // Initialize for Texture Arrays or Texture Cube\n                if (ArraySize > 1)\n                {\n                    // If Texture Cube\n                    if (Dimension == TextureDimension.TextureCube && viewType == ViewType.Full)\n                    {\n                        srvDescription.ViewDimension = SrvDimension.Texturecube;\n                        srvDescription.TextureCube.MipLevels = (uint) mipCount;\n                        srvDescription.TextureCube.MostDetailedMip = (uint) mipIndex;\n                    }\n                    else // Texture array\n                    {\n                        if (IsMultiSampled)\n                        {\n                            if (Dimension != TextureDimension.Texture2D)\n                            {\n                                throw new NotSupportedException(\"Multisample is only supported for 2D Textures\");\n                            }\n                            srvDescription.ViewDimension = SrvDimension.Texture2Dmsarray;\n                            srvDescription.Texture2DMSArray.ArraySize = (uint) arrayCount;\n                            srvDescription.Texture2DMSArray.FirstArraySlice = (uint) arrayOrDepthSlice;\n                        }\n                        else\n                        {\n                            srvDescription.ViewDimension = Dimension is TextureDimension.Texture2D or TextureDimension.TextureCube\n                                ? SrvDimension.Texture2Darray\n                                : SrvDimension.Texture1Darray;\n\n                            srvDescription.Texture2DArray.ArraySize = (uint) arrayCount;\n                            srvDescription.Texture2DArray.FirstArraySlice = (uint) arrayOrDepthSlice;\n                            srvDescription.Texture2DArray.MipLevels = (uint) mipCount;\n                            srvDescription.Texture2DArray.MostDetailedMip = (uint) mipIndex;\n                        }\n                    }\n                }","sourceCodeStart":582,"sourceCodeEnd":618,"githubUrl":"https://github.com/stride3d/stride/blob/96fad776d210c221682aac1ccdf4c79dc046fc38/sources/engine/Stride.Graphics/Direct3D12/Texture.Direct3D12.cs#L582-L618","documentation":"When creating an SRV for a texture array, multisampling is only representable for 2D textures (Texture2DMSArray). If the texture is multisampled but its Dimension is not Texture2D, the backend throws NotSupportedException because D3D12 has no MS texture-array view for 1D/3D dimensions.","triggerScenarios":"Initializing a multisampled Texture with Dimension Texture1D or Texture3D and a specific arrayOrDepthSlice (texture-array branch of InitializeFromImpl).","commonSituations":"Configuring MSAA on non-2D resources by mistake; porting code from APIs that silently ignore multisample counts on 1D/3D textures.","solutions":["Remove MultisampleCount (make the texture non-multisampled) for 1D/3D textures","Change Dimension to Texture2D if MSAA is required","Verify texture factory parameters (Dimension, MultisampleCount) before creating the texture"],"exampleFix":"// before\nvar tex = Texture.New2D(device, 512, 512, PixelFormat.R8G8B8A8.UNorm, TextureFlags.ShaderResource, 1, TextureDimension.Texture3D); tex.MultisampleCount = 4;\n// after\nvar tex = Texture.New2D(device, 512, 512, PixelFormat.R8G8B8A8.UNorm, TextureFlags.ShaderResource); // Dimension Texture2D with MS allowed","handlingStrategy":"validation","validationCode":"if (desc.MultisampleCount > 1 && desc.Dimension != TextureDimension.Texture2D) throw new InvalidOperationException(\"Multisampling requires Texture2D\");","typeGuard":"bool CanBeMultisampled(TextureDescription d) => d.MultisampleCount <= 1 || d.Dimension == TextureDimension.Texture2D;","tryCatchPattern":"try { texture = new Texture(device, desc); } catch (NotSupportedException) { desc.MultisampleCount = 1; texture = new Texture(device, desc); }","preventionTips":["Never set MultisampleCount > 1 on 1D/3D textures","Centralize texture factory code to clamp MSAA by dimension"],"tags":["direct3d12","texture","msaa"],"backgroundTag":"unsupported-operation","analyzedSha":"96fad776d210c221682aac1ccdf4c79dc046fc38","analyzedAt":"2026-09-14T02:59:31.279Z","contentChangedAt":"2026-09-14T02:59:31.279Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}