mirror of https://github.com/xemu-project/xemu.git
nv2a/vk: Fix mipmap filtering for _LOD0 min filters
This commit is contained in:
parent
bc066fdea9
commit
a3d0131a03
|
@ -1315,6 +1315,12 @@ static void create_texture(PGRAPHState *pg, int texture_idx)
|
||||||
vk_mag_filter = vk_min_filter = VK_FILTER_NEAREST;
|
vk_mag_filter = vk_min_filter = VK_FILTER_NEAREST;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool mipmap_en =
|
||||||
|
!f_basic.linear &&
|
||||||
|
!(min_filter == NV_PGRAPH_TEXFILTER0_MIN_BOX_LOD0 ||
|
||||||
|
min_filter == NV_PGRAPH_TEXFILTER0_MIN_TENT_LOD0 ||
|
||||||
|
min_filter == NV_PGRAPH_TEXFILTER0_MIN_CONVOLUTION_2D_LOD0);
|
||||||
|
|
||||||
bool mipmap_nearest =
|
bool mipmap_nearest =
|
||||||
f_basic.linear || image_create_info.mipLevels == 1 ||
|
f_basic.linear || image_create_info.mipLevels == 1 ||
|
||||||
min_filter == NV_PGRAPH_TEXFILTER0_MIN_BOX_NEARESTLOD ||
|
min_filter == NV_PGRAPH_TEXFILTER0_MIN_BOX_NEARESTLOD ||
|
||||||
|
@ -1342,8 +1348,8 @@ static void create_texture(PGRAPHState *pg, int texture_idx)
|
||||||
.compareOp = VK_COMPARE_OP_ALWAYS,
|
.compareOp = VK_COMPARE_OP_ALWAYS,
|
||||||
.mipmapMode = mipmap_nearest ? VK_SAMPLER_MIPMAP_MODE_NEAREST :
|
.mipmapMode = mipmap_nearest ? VK_SAMPLER_MIPMAP_MODE_NEAREST :
|
||||||
VK_SAMPLER_MIPMAP_MODE_LINEAR,
|
VK_SAMPLER_MIPMAP_MODE_LINEAR,
|
||||||
.minLod = 0.0,
|
.minLod = mipmap_en ? MIN(state.min_mipmap_level, state.levels - 1) : 0.0,
|
||||||
.maxLod = f_basic.linear ? 0.0 : image_create_info.mipLevels,
|
.maxLod = mipmap_en ? MIN(state.max_mipmap_level, state.levels - 1) : 0.0,
|
||||||
.mipLodBias = 0.0,
|
.mipLodBias = 0.0,
|
||||||
.pNext = sampler_next_struct,
|
.pNext = sampler_next_struct,
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue