diff --git a/GPU/D3D11/GPU_D3D11.cpp b/GPU/D3D11/GPU_D3D11.cpp index 2410a057e3..a70aec0adb 100644 --- a/GPU/D3D11/GPU_D3D11.cpp +++ b/GPU/D3D11/GPU_D3D11.cpp @@ -506,10 +506,9 @@ void GPU_D3D11::CheckGPUFeatures() { features |= GPU_SUPPORTS_TEXTURE_LOD_CONTROL; features |= GPU_PREFER_CPU_DOWNLOAD; features |= GPU_SUPPORTS_ACCURATE_DEPTH; - ///features |= GPU_SUPPORTS_ANISOTROPY; + features |= GPU_SUPPORTS_ANISOTROPY; features |= GPU_SUPPORTS_OES_TEXTURE_NPOT; features |= GPU_SUPPORTS_DUALSOURCE_BLEND; - // features |= GPU_SUPPORTS_ANY_COPY_IMAGE; if (!g_Config.bHighQualityDepth) { diff --git a/GPU/D3D11/TextureCacheD3D11.cpp b/GPU/D3D11/TextureCacheD3D11.cpp index d1a8da24b7..9b6364cf0d 100644 --- a/GPU/D3D11/TextureCacheD3D11.cpp +++ b/GPU/D3D11/TextureCacheD3D11.cpp @@ -94,7 +94,11 @@ ID3D11SamplerState *SamplerCacheD3D11::GetOrCreateSampler(ID3D11Device *device, D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT, D3D11_FILTER_MIN_MAG_MIP_LINEAR, }; - samp.Filter = filters[filterKey]; + // Only switch to aniso if linear min and mag are set. + if (samp.MaxAnisotropy > 1.0f && key.magFilt != 0 && key.minFilt != 0) + samp.Filter = D3D11_FILTER_ANISOTROPIC; + else + samp.Filter = filters[filterKey]; samp.MaxLOD = key.maxLevel; samp.MinLOD = 0.0f; samp.MipLODBias = 0.0f; @@ -115,7 +119,6 @@ TextureCacheD3D11::TextureCacheD3D11(Draw::DrawContext *draw) HRESULT result = 0; - maxAnisotropyLevel = 16; SetupTextureDecoder(); nextTexture_ = nullptr; diff --git a/GPU/D3D11/TextureCacheD3D11.h b/GPU/D3D11/TextureCacheD3D11.h index 8d5effafd0..4c4f2e2d66 100644 --- a/GPU/D3D11/TextureCacheD3D11.h +++ b/GPU/D3D11/TextureCacheD3D11.h @@ -115,7 +115,6 @@ private: u32 clutHash_; ID3D11ShaderResourceView *lastBoundTexture; - float maxAnisotropyLevel; int decimationCounter_; int texelsScaledThisFrame_;