From 58702e533fc156a874f882e798e706ff676a8d8f Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Sun, 23 Aug 2026 10:51:48 -0700
Subject: [PATCH] GPU: D3D12: set MultisampleEnable for multisampled pipelines
(thanks @sailro!)
Closes https://github.com/libsdl-org/SDL/pull/16183
---
src/gpu/d3d12/SDL_gpu_d3d12.c | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/src/gpu/d3d12/SDL_gpu_d3d12.c b/src/gpu/d3d12/SDL_gpu_d3d12.c
index af9050441318f..b69307a8066ee 100644
--- a/src/gpu/d3d12/SDL_gpu_d3d12.c
+++ b/src/gpu/d3d12/SDL_gpu_d3d12.c
@@ -2000,25 +2000,25 @@ static D3D12_RESOURCE_STATES D3D12_INTERNAL_DefaultBufferResourceState(
if (buffer->container->usage & SDL_GPU_BUFFERUSAGE_VERTEX) {
states |= D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER;
- }
+ }
if (buffer->container->usage & SDL_GPU_BUFFERUSAGE_INDEX) {
states |= D3D12_RESOURCE_STATE_INDEX_BUFFER;
- }
+ }
if (buffer->container->usage & SDL_GPU_BUFFERUSAGE_INDIRECT) {
states |= D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT;
- }
+ }
if (buffer->container->usage & SDL_GPU_BUFFERUSAGE_GRAPHICS_STORAGE_READ) {
states |= D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE;
- }
+ }
if (buffer->container->usage & SDL_GPU_BUFFERUSAGE_COMPUTE_STORAGE_READ) {
states |= D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE;
}
-
+
// If no read flags are set, read-write can be the default.
if (!states && buffer->container->usage & SDL_GPU_BUFFERUSAGE_COMPUTE_STORAGE_WRITE) {
return D3D12_RESOURCE_STATE_UNORDERED_ACCESS;
- }
-
+ }
+
if (!states) {
SDL_LogError(SDL_LOG_CATEGORY_GPU, "Buffer has no default usage mode!");
return D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER;
@@ -3226,6 +3226,9 @@ static SDL_GPUGraphicsPipeline *D3D12_CreateGraphicsPipeline(
psoDesc.SampleMask = 0xFFFFFFFF;
psoDesc.SampleDesc.Count = SDLToD3D12_SampleCount[createinfo->multisample_state.sample_count];
psoDesc.SampleDesc.Quality = (createinfo->multisample_state.sample_count > SDL_GPU_SAMPLECOUNT_1) ? D3D12_STANDARD_MULTISAMPLE_PATTERN : 0;
+ if (createinfo->multisample_state.sample_count > SDL_GPU_SAMPLECOUNT_1) {
+ psoDesc.RasterizerState.MultisampleEnable = TRUE;
+ }
if (createinfo->target_info.has_depth_stencil_target) {
psoDesc.DSVFormat = SDLToD3D12_DepthFormat[createinfo->target_info.depth_stencil_format];