mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-03 22:14:02 +00:00
d3d12: use CELL_GCM suffix for filter
This commit is contained in:
parent
224503d2dc
commit
48e6db3a2f
@ -35,7 +35,8 @@ u32 LinearToSwizzleAddress(u32 x, u32 y, u32 z, u32 log2_width, u32 log2_height,
|
|||||||
return offset;
|
return offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
static D3D12_COMPARISON_FUNC ComparisonFunc[] =
|
static
|
||||||
|
D3D12_COMPARISON_FUNC getSamplerCompFunc[] =
|
||||||
{
|
{
|
||||||
D3D12_COMPARISON_FUNC_NEVER,
|
D3D12_COMPARISON_FUNC_NEVER,
|
||||||
D3D12_COMPARISON_FUNC_LESS,
|
D3D12_COMPARISON_FUNC_LESS,
|
||||||
@ -47,7 +48,8 @@ static D3D12_COMPARISON_FUNC ComparisonFunc[] =
|
|||||||
D3D12_COMPARISON_FUNC_ALWAYS
|
D3D12_COMPARISON_FUNC_ALWAYS
|
||||||
};
|
};
|
||||||
|
|
||||||
size_t D3D12GSRender::GetMaxAniso(size_t aniso)
|
static
|
||||||
|
size_t getSamplerMaxAniso(size_t aniso)
|
||||||
{
|
{
|
||||||
switch (aniso)
|
switch (aniso)
|
||||||
{
|
{
|
||||||
@ -64,7 +66,8 @@ size_t D3D12GSRender::GetMaxAniso(size_t aniso)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
D3D12_TEXTURE_ADDRESS_MODE D3D12GSRender::GetWrap(size_t wrap)
|
static
|
||||||
|
D3D12_TEXTURE_ADDRESS_MODE getSamplerWrap(size_t wrap)
|
||||||
{
|
{
|
||||||
switch (wrap)
|
switch (wrap)
|
||||||
{
|
{
|
||||||
@ -82,45 +85,48 @@ D3D12_TEXTURE_ADDRESS_MODE D3D12GSRender::GetWrap(size_t wrap)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static D3D12_FILTER getSamplerFilter(u32 minFilter, u32 magFilter)
|
|
||||||
|
static
|
||||||
|
D3D12_FILTER getSamplerFilter(u32 minFilter, u32 magFilter)
|
||||||
{
|
{
|
||||||
D3D12_FILTER_TYPE min, mag, mip;
|
D3D12_FILTER_TYPE min, mag, mip;
|
||||||
switch (minFilter)
|
switch (minFilter)
|
||||||
{
|
{
|
||||||
case 1: //GL_NEAREST
|
case CELL_GCM_TEXTURE_NEAREST:
|
||||||
min = D3D12_FILTER_TYPE_POINT;
|
min = D3D12_FILTER_TYPE_POINT;
|
||||||
mip = D3D12_FILTER_TYPE_POINT;
|
mip = D3D12_FILTER_TYPE_POINT;
|
||||||
break;
|
break;
|
||||||
case 2: // GL_LINEAR
|
case CELL_GCM_TEXTURE_LINEAR:
|
||||||
min = D3D12_FILTER_TYPE_LINEAR;
|
min = D3D12_FILTER_TYPE_LINEAR;
|
||||||
mip = D3D12_FILTER_TYPE_POINT;
|
mip = D3D12_FILTER_TYPE_POINT;
|
||||||
break;
|
break;
|
||||||
case 3: //GL_NEAREST_MIPMAP_NEAREST
|
case CELL_GCM_TEXTURE_NEAREST_NEAREST:
|
||||||
min = D3D12_FILTER_TYPE_POINT;
|
min = D3D12_FILTER_TYPE_POINT;
|
||||||
mip = D3D12_FILTER_TYPE_POINT;
|
mip = D3D12_FILTER_TYPE_POINT;
|
||||||
break;
|
break;
|
||||||
case 4: // GL_LINEAR_MIPMAP_NEAREST
|
case CELL_GCM_TEXTURE_LINEAR_NEAREST:
|
||||||
min = D3D12_FILTER_TYPE_LINEAR;
|
min = D3D12_FILTER_TYPE_LINEAR;
|
||||||
mip = D3D12_FILTER_TYPE_POINT;
|
mip = D3D12_FILTER_TYPE_POINT;
|
||||||
break;
|
break;
|
||||||
case 5: // GL_NEAREST_MIPMAP_LINEAR
|
case CELL_GCM_TEXTURE_NEAREST_LINEAR:
|
||||||
min = D3D12_FILTER_TYPE_POINT;
|
min = D3D12_FILTER_TYPE_POINT;
|
||||||
mip = D3D12_FILTER_TYPE_LINEAR;
|
mip = D3D12_FILTER_TYPE_LINEAR;
|
||||||
break;
|
break;
|
||||||
case 6: //GL_LINEAR_MIPMAP_LINEAR
|
case CELL_GCM_TEXTURE_LINEAR_LINEAR:
|
||||||
min = D3D12_FILTER_TYPE_LINEAR;
|
min = D3D12_FILTER_TYPE_LINEAR;
|
||||||
mip = D3D12_FILTER_TYPE_LINEAR;
|
mip = D3D12_FILTER_TYPE_LINEAR;
|
||||||
break;
|
break;
|
||||||
|
case CELL_GCM_TEXTURE_CONVOLUTION_MIN:
|
||||||
default:
|
default:
|
||||||
LOG_ERROR(RSX, "Unknow min filter %x", minFilter);
|
LOG_ERROR(RSX, "Unknow min filter %x", minFilter);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (magFilter)
|
switch (magFilter)
|
||||||
{
|
{
|
||||||
case 1: // GL_NEAREST
|
case CELL_GCM_TEXTURE_NEAREST:
|
||||||
mag = D3D12_FILTER_TYPE_POINT;
|
mag = D3D12_FILTER_TYPE_POINT;
|
||||||
break;
|
break;
|
||||||
case 2: // GL_LINEAR
|
case CELL_GCM_TEXTURE_LINEAR:
|
||||||
mag = D3D12_FILTER_TYPE_LINEAR;
|
mag = D3D12_FILTER_TYPE_LINEAR;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -560,11 +566,11 @@ size_t D3D12GSRender::UploadTextures()
|
|||||||
|
|
||||||
D3D12_SAMPLER_DESC samplerDesc = {};
|
D3D12_SAMPLER_DESC samplerDesc = {};
|
||||||
samplerDesc.Filter = getSamplerFilter(m_textures[i].GetMinFilter(), m_textures[i].GetMagFilter());
|
samplerDesc.Filter = getSamplerFilter(m_textures[i].GetMinFilter(), m_textures[i].GetMagFilter());
|
||||||
samplerDesc.AddressU = GetWrap(m_textures[i].GetWrapS());
|
samplerDesc.AddressU = getSamplerWrap(m_textures[i].GetWrapS());
|
||||||
samplerDesc.AddressV = GetWrap(m_textures[i].GetWrapT());
|
samplerDesc.AddressV = getSamplerWrap(m_textures[i].GetWrapT());
|
||||||
samplerDesc.AddressW = GetWrap(m_textures[i].GetWrapR());
|
samplerDesc.AddressW = getSamplerWrap(m_textures[i].GetWrapR());
|
||||||
samplerDesc.ComparisonFunc = ComparisonFunc[m_textures[i].GetZfunc()];
|
samplerDesc.ComparisonFunc = getSamplerCompFunc[m_textures[i].GetZfunc()];
|
||||||
samplerDesc.MaxAnisotropy = (UINT)GetMaxAniso(m_textures[i].GetMaxAniso());
|
samplerDesc.MaxAnisotropy = (UINT)getSamplerMaxAniso(m_textures[i].GetMaxAniso());
|
||||||
samplerDesc.MipLODBias = m_textures[i].GetBias();
|
samplerDesc.MipLODBias = m_textures[i].GetBias();
|
||||||
samplerDesc.BorderColor[4] = (FLOAT)m_textures[i].GetBorderColor();
|
samplerDesc.BorderColor[4] = (FLOAT)m_textures[i].GetBorderColor();
|
||||||
samplerDesc.MinLOD = (FLOAT)(m_textures[i].GetMinLOD() >> 8);
|
samplerDesc.MinLOD = (FLOAT)(m_textures[i].GetMinLOD() >> 8);
|
||||||
|
@ -206,6 +206,15 @@ enum
|
|||||||
// Cull Face
|
// Cull Face
|
||||||
CELL_GCM_CW = 0x0900,
|
CELL_GCM_CW = 0x0900,
|
||||||
CELL_GCM_CCW = 0x0901,
|
CELL_GCM_CCW = 0x0901,
|
||||||
|
|
||||||
|
// Texture Filter
|
||||||
|
CELL_GCM_TEXTURE_NEAREST = 1,
|
||||||
|
CELL_GCM_TEXTURE_LINEAR = 2,
|
||||||
|
CELL_GCM_TEXTURE_NEAREST_NEAREST = 3,
|
||||||
|
CELL_GCM_TEXTURE_LINEAR_NEAREST = 4,
|
||||||
|
CELL_GCM_TEXTURE_NEAREST_LINEAR = 5,
|
||||||
|
CELL_GCM_TEXTURE_LINEAR_LINEAR = 6,
|
||||||
|
CELL_GCM_TEXTURE_CONVOLUTION_MIN = 7,
|
||||||
};
|
};
|
||||||
|
|
||||||
// GCM Surface
|
// GCM Surface
|
||||||
|
Loading…
x
Reference in New Issue
Block a user