fix(agc): accept the sampler ANISO_OVERRIDE bit
Mesa sets ANISO_OVERRIDE (S# word 2, bit 29) on every GFX10+ sampler unless aniso_single_level is on; it turns anisotropic filtering off for single-level views. Samplers carrying it were rejected. Accept and ignore it: host samplers are built from the S# alone and shared between images, so single-level views keep the sampler's anisotropy. The gap is recorded in TechnicalDebt. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
c9f9e0f139
commit
d8bb441118
|
|
@ -111,7 +111,7 @@ GuestSamplerResource DecodeSamplerResource(std::span<const std::uint32_t> words,
|
|||
Require(!disableDegamma, "guest sampler descriptor disables degamma which is not implemented");
|
||||
Require(lodBiasSec == 0, "guest sampler descriptor uses a secondary LOD bias which is not implemented");
|
||||
Require(!pointPreclamp, "guest sampler descriptor uses point preclamping which is not implemented");
|
||||
Require(!anisoOverride, "guest sampler descriptor uses an anisotropy override which is not implemented");
|
||||
static_cast<void>(anisoOverride);
|
||||
Require(!blendZeroPrt, "guest sampler descriptor uses PRT blend-zero which is not implemented");
|
||||
if (mipFilter > 2u) Require(false, "guest sampler descriptor uses an unknown mip filter " + std::to_string(mipFilter));
|
||||
Require(mipFilter != 2u || reductionMode == VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT, "guest sampler descriptor combines a min or max reduction with a linear mip filter, which is not implemented");
|
||||
|
|
|
|||
|
|
@ -449,9 +449,15 @@ void RunGuestSamplerResourceTests() {
|
|||
badPreclamp.pointPreclamp = true;
|
||||
rejectFields(badPreclamp, "point preclamping");
|
||||
|
||||
Fields badAnisoOverride = base;
|
||||
badAnisoOverride.anisoOverride = true;
|
||||
rejectFields(badAnisoOverride, "anisotropy override");
|
||||
Fields anisoOverride = base;
|
||||
anisoOverride.xyMagFilter = 2;
|
||||
anisoOverride.xyMinFilter = 2;
|
||||
anisoOverride.zFilter = 2;
|
||||
anisoOverride.maxAnisoRatio = 3;
|
||||
const auto withoutOverride = DecodeSamplerResource(pack(anisoOverride));
|
||||
anisoOverride.anisoOverride = true;
|
||||
const auto withOverride = DecodeSamplerResource(pack(anisoOverride));
|
||||
Require(withOverride.anisotropyEnable == withoutOverride.anisotropyEnable && withOverride.maxAnisotropy == withoutOverride.maxAnisotropy && withOverride.magFilter == withoutOverride.magFilter && withOverride.minFilter == withoutOverride.minFilter, "ANISO_OVERRIDE changed the decoded sampler");
|
||||
|
||||
Fields badBlendZero = base;
|
||||
badBlendZero.blendZeroPrt = true;
|
||||
|
|
|
|||
Loading…
Reference in New Issue