[d3d9] Force D3DTADDRESS_CLAMP for cubes.

This commit is contained in:
Georg Lehmann 2022-09-01 17:30:12 +02:00 committed by Joshie
parent 5babb29922
commit 1bc6f9660a
2 changed files with 14 additions and 0 deletions

View File

@ -3786,7 +3786,13 @@ namespace dxvk {
m_depthTextures &= ~(1u << StateSampler);
if (newDepth)
m_depthTextures |= 1u << StateSampler;
m_dirtySamplerStates |= 1u << StateSampler;
}
const bool oldCube = m_cubeTextures & (1u << StateSampler);
const bool newCube = newTexture->GetType() == D3DRTYPE_CUBETEXTURE;
if (oldCube != newCube) {
m_cubeTextures ^= 1u << StateSampler;
m_dirtySamplerStates |= 1u << StateSampler;
}
@ -5941,6 +5947,12 @@ namespace dxvk {
key.BorderColor = D3DCOLOR(state[D3DSAMP_BORDERCOLOR]);
key.Depth = m_depthTextures & (1u << Sampler);
if (m_cubeTextures & (1u << Sampler)) {
key.AddressU = D3DTADDRESS_CLAMP;
key.AddressV = D3DTADDRESS_CLAMP;
key.AddressW = D3DTADDRESS_CLAMP;
}
if (m_d3d9Options.samplerAnisotropy != -1) {
if (key.MagFilter == D3DTEXF_LINEAR)
key.MagFilter = D3DTEXF_ANISOTROPIC;
@ -7196,6 +7208,7 @@ namespace dxvk {
m_dirtyTextures = 0;
m_depthTextures = 0;
m_cubeTextures = 0;
auto& ss = m_state.samplerStates;
for (uint32_t i = 0; i < ss.size(); i++) {

View File

@ -1235,6 +1235,7 @@ namespace dxvk {
uint32_t m_instancedData = 0;
uint32_t m_depthTextures = 0;
uint32_t m_cubeTextures = 0;
uint32_t m_textureTypes = 0;
uint32_t m_projectionBitfield = 0;