{"record":{"id":"b2ae578faaee6fde","repo":"stride3d/stride","slug":"multi-sampling-is-only-supported-for-2d-render-target","errorCode":null,"errorMessage":"Multi-sampling is only supported for 2D Render Target Textures","messagePattern":"Multi-sampling is only supported for 2D Render Target Textures","errorType":"exception","errorClass":"NotSupportedException","httpStatus":null,"severity":"error","filePath":"sources/engine/Stride.Graphics/Direct3D11/Texture.Direct3D11.cs","lineNumber":649,"sourceCode":"                    }\n\n                    rtvDescription.ViewDimension = Dimension is TextureDimension.Texture2D or TextureDimension.TextureCube\n                        ? RtvDimension.Texture2Darray\n                        : RtvDimension.Texture1Darray;\n\n                    // Use rtvDescription.Texture1DArray as it matches also Texture2DArray memory layout\n                    rtvDescription.Texture1DArray.ArraySize = (uint) arrayCount;\n                    rtvDescription.Texture1DArray.FirstArraySlice = (uint) arrayOrDepthSlice;\n                    rtvDescription.Texture1DArray.MipSlice = (uint) mipIndex;\n                }\n            }\n            else // Regular Texture Array\n            {\n                if (IsMultiSampled)\n                {\n                    if (ViewDimension != TextureDimension.Texture2D)\n                    {\n                        throw new NotSupportedException(\"Multi-sampling is only supported for 2D Render Target Textures\");\n                    }\n\n                    rtvDescription.ViewDimension = RtvDimension.Texture2Dms;\n                }\n                else // Not multi-sampled\n                {\n                    switch (ViewDimension)\n                    {\n                        case TextureDimension.Texture1D:\n                            rtvDescription.ViewDimension = RtvDimension.Texture1D;\n                            rtvDescription.Texture1D.MipSlice = (uint) mipIndex;\n                            break;\n\n                        case TextureDimension.Texture2D:\n                            rtvDescription.ViewDimension = RtvDimension.Texture2D;\n                            rtvDescription.Texture2D.MipSlice = (uint) mipIndex;\n                            break;\n","sourceCodeStart":631,"sourceCodeEnd":667,"githubUrl":"https://github.com/stride3d/stride/blob/96fad776d210c221682aac1ccdf4c79dc046fc38/sources/engine/Stride.Graphics/Direct3D11/Texture.Direct3D11.cs#L631-L667","documentation":"For a regular texture (ArraySize <= 1) bound as a render target, multi-sampling is only representable in D3D11 via the Texture2DMS RTV dimension. Stride throws this NotSupportedException when an RTV is requested for a multi-sampled texture whose ViewDimension is not Texture2D.","triggerScenarios":"Creating a multi-sampled texture (MultisampleCount > None) with ViewDimension = Texture1D or Texture3D and ArraySize <= 1, then using it as a render target; a description where Dimension and MultisampleCount are set inconsistently.","commonSituations":"Hand-built TextureDescription for a post-process MSAA target where the Dimension field was copied from another texture; changing MultisampleCount on an existing description without checking the dimension; serialization round-trips that lost the Texture2D dimension.","solutions":["Set ViewDimension/Dimension to TextureDimension.Texture2D for any multi-sampled render target.","Remove multi-sampling (MultisampleCount.None) if a 1D/3D render target is genuinely required."],"exampleFix":"// before\ndesc.Dimension = TextureDimension.Texture1D;\ndesc.MultisampleCount = MultisampleCount.X8;\ndesc.Flags = TextureFlags.RenderTarget;\n// after\ndesc.Dimension = TextureDimension.Texture2D;\ndesc.MultisampleCount = MultisampleCount.X8;\ndesc.Flags = TextureFlags.RenderTarget;","handlingStrategy":"validation","validationCode":"if (desc.MultisampleCount > MultisampleCount.None && desc.Dimension != TextureDimension.Texture2D && (desc.Flags & TextureFlags.RenderTarget) != 0)\n    throw new InvalidOperationException(\"MSAA render targets must be 2D\");","typeGuard":"bool IsMsaaRenderTargetSafe(TextureDescription d) =>\n    d.MultisampleCount == MultisampleCount.None ||\n    (d.Dimension == TextureDimension.Texture2D && (d.Flags & TextureFlags.RenderTarget) != 0) ||\n    (d.Flags & TextureFlags.RenderTarget) == 0;","tryCatchPattern":null,"preventionTips":["Validate dimension when changing MultisampleCount on existing descriptions.","Centralize MSAA render-target creation in one helper that enforces Texture2D."],"tags":["direct3d11","textures","multisampling","render-target"],"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"}