{"record":{"id":"58ba19c8dd0b67d5","repo":"stride3d/stride","slug":"multi-sampling-is-only-supported-for-2d-textures","errorCode":null,"errorMessage":"Multi-sampling is only supported for 2D Textures","messagePattern":"Multi-sampling is only supported for 2D Textures","errorType":"exception","errorClass":"NotSupportedException","httpStatus":null,"severity":"error","filePath":"sources/engine/Stride.Graphics/Direct3D11/Texture.Direct3D11.cs","lineNumber":516,"sourceCode":"\n            var srvDescription = new ShaderResourceViewDesc { Format = ComputeShaderResourceViewFormat() };\n\n            // Initialize for Texture Array or Texture Cube\n            if (ArraySize > 1)\n            {\n                if (ViewDimension == TextureDimension.TextureCube)\n                {\n                    srvDescription.ViewDimension = D3DSrvDimension.D3D101SrvDimensionTexturecube;\n                    srvDescription.TextureCube.MipLevels = (uint) mipCount;\n                    srvDescription.TextureCube.MostDetailedMip = (uint) mipIndex;\n                }\n                else // Regular Texture Array\n                {\n                    if (IsMultiSampled)\n                    {\n                        if (Dimension != TextureDimension.Texture2D)\n                        {\n                            throw new NotSupportedException(\"Multi-sampling is only supported for 2D Textures\");\n                        }\n\n                        srvDescription.ViewDimension = D3DSrvDimension.D3D101SrvDimensionTexture2Dmsarray;\n                        srvDescription.Texture2DMSArray.ArraySize = (uint) arrayCount;\n                        srvDescription.Texture2DMSArray.FirstArraySlice = (uint) arrayOrDepthSlice;\n                    }\n                    else // Not multi-sampled\n                    {\n                        if (ViewDimension == TextureDimension.Texture2D)\n                        {\n                            srvDescription.ViewDimension = D3DSrvDimension.D3D101SrvDimensionTexture2Darray;\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                        else if (ViewDimension != TextureDimension.Texture1D)\n                        {","sourceCodeStart":498,"sourceCodeEnd":534,"githubUrl":"https://github.com/stride3d/stride/blob/96fad776d210c221682aac1ccdf4c79dc046fc38/sources/engine/Stride.Graphics/Direct3D11/Texture.Direct3D11.cs#L498-L534","documentation":"When building a shader resource view for a multi-sampled texture array on D3D11, the code checks that the texture dimension is Texture2D. Multi-sample resources in Direct3D only exist as 2D textures, so requesting an MS SRV for a 1D or 3D array texture throws NotSupportedException.","triggerScenarios":"Texture created with MultisampleCount > 1, an array slice range (TextureDimension.Texture1D or Texture3D array), while InitializeFromImpl builds the SRV via GetShaderResourceView.","commonSituations":"Copying a description from a 2D MSAA texture and changing only the dimension; generator code that sets MultisampleCount unconditionally; MSAA flags left enabled on 3D volume textures.","solutions":["Set MultisampleCount to 1 (non-multi-sampled) for non-2D textures.","Change the texture dimension to Texture2D if multi-sampling is required.","Sanitize the TextureDescription in a helper that clears MSAA flags for non-2D dimensions before creating textures."],"exampleFix":"// before\nvar desc = new TextureDescription { Dimension = TextureDimension.Texture3D, MultisampleCount = 4 };\n// after\nvar desc = new TextureDescription { Dimension = TextureDimension.Texture3D, MultisampleCount = 1 };","handlingStrategy":"validation","validationCode":"if (desc.MultisampleCount > 1 && desc.Dimension != TextureDimension.Texture2D)\n    desc.MultisampleCount = 1; // or reject the description\nvar tex = new Texture(device, desc);","typeGuard":"static bool IsMsaaValid(TextureDescription d) => d.MultisampleCount <= 1 || d.Dimension == TextureDimension.Texture2D;","tryCatchPattern":"try { tex = new Texture(device, desc); }\ncatch (NotSupportedException ex) when (ex.Message.Contains(\"Multi-sampling\")) { desc.MultisampleCount = 1; tex = new Texture(device, desc); }","preventionTips":["Clear MultisampleCount whenever the texture dimension is not Texture2D","Sanitize descriptions in a single factory function","Add asserts for MSAA/dimension consistency in texture creation helpers"],"tags":["direct3d11","texture","multisampling","notsupported"],"backgroundTag":"invalid-argument-value","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"}