Ich habe die Mausauswahl in meiner App mithilfe eines Stencil-Puffers implementiert.Laden von Multisample-Textur schlägt auf einigen Intel-GPUs fehl
Hier ist der Pixel-Shader, der Wert unter der Maus liest:
Texture2DMS<uint2> depthStencilTexture : register(t0);
cbuffer ReadDepthInput : register(b2)
{
int2 readPosition;
}
// Produces vector3(x, y, stencilValue)
float4 main() : SV_Target0
{
uint2 res = depthStencilTexture.Load(readPosition, 1);
float stencil = res.y;
// Scale the result from integers to 0..1
stencil /= 255.0f;
return float4(float(readPosition.x)/65535.0f, float(readPosition.y)/65535.0f, stencil, 0);
}
Der Code funktioniert auf nVidia und AMD GPUs arbeitet auf Intel Iris 550.
Der Code schlägt auf Intel Haswell GPUs (Intel HD 5000, Intel HD 4600). Texture2DMS.Load gibt nur 0 zurück. Irgendwelche Ideen, was könnte falsch sein?
Update: geschieht nur mit 8x MSAA. Das Verringern auf 4x funktioniert auch auf den betroffenen Intel GPUs.
Haben Sie bestätigt, dass der Treiber die Unterstützung für '' D3D11_FORMAT_SUPPORT_MULTISAMPLE_LOAD'' mit '' CheckFormatSupport'' und 8x MSAA mit '' CheckMultisampleQualityLevels'' für dieses Format meldet? –
@ChuckWalbourn ja, ruft meine App sie beide beim Start, und deaktiviert MSAA/reduzieren Sie das Niveau. – Soonts