mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-09-12 18:50:22 -07:00
tests/shader_runner: Correct the minification filter and mipmap mode calculations.
This commit is contained in:
Notes:
Henri Verbeet
2025-09-03 13:09:54 +02:00
Approved-by: Elizabeth Figura (@zfigura) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1698
@@ -540,13 +540,13 @@ static bool d3d9_runner_draw(struct shader_runner *r,
|
||||
ok(hr == D3D_OK, "Failed to set sampler state, hr %#lx.\n", hr);
|
||||
|
||||
hr = IDirect3DDevice9_SetSamplerState(device, sampler->slot, D3DSAMP_MINFILTER,
|
||||
(sampler->filter & 0x1) ? D3DTEXF_LINEAR : D3DTEXF_POINT);
|
||||
(sampler->filter & 0x10) ? D3DTEXF_LINEAR : D3DTEXF_POINT);
|
||||
ok(hr == D3D_OK, "Failed to set sampler state, hr %#lx.\n", hr);
|
||||
hr = IDirect3DDevice9_SetSamplerState(device, sampler->slot, D3DSAMP_MAGFILTER,
|
||||
(sampler->filter & 0x4) ? D3DTEXF_LINEAR : D3DTEXF_POINT);
|
||||
ok(hr == D3D_OK, "Failed to set sampler state, hr %#lx.\n", hr);
|
||||
hr = IDirect3DDevice9_SetSamplerState(device, sampler->slot, D3DSAMP_MIPFILTER,
|
||||
(sampler->filter & 0x10) ? D3DTEXF_LINEAR : D3DTEXF_POINT);
|
||||
(sampler->filter & 0x1) ? D3DTEXF_LINEAR : D3DTEXF_POINT);
|
||||
ok(hr == D3D_OK, "Failed to set sampler state, hr %#lx.\n", hr);
|
||||
}
|
||||
|
||||
|
@@ -1026,10 +1026,12 @@ static GLenum get_texture_filter_mag_gl(D3D12_FILTER filter)
|
||||
|
||||
static GLenum get_texture_filter_min_gl(D3D12_FILTER filter)
|
||||
{
|
||||
if (filter & 0x1)
|
||||
return filter & 0x10 ? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR_MIPMAP_NEAREST;
|
||||
bool min_linear = filter & 0x10, mip_linear = filter & 0x1;
|
||||
|
||||
if (min_linear)
|
||||
return mip_linear ? GL_LINEAR_MIPMAP_LINEAR : GL_LINEAR_MIPMAP_NEAREST;
|
||||
else
|
||||
return filter & 0x10 ? GL_NEAREST_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST;
|
||||
return mip_linear ? GL_NEAREST_MIPMAP_LINEAR : GL_NEAREST_MIPMAP_NEAREST;
|
||||
}
|
||||
|
||||
static GLenum get_compare_op_gl(D3D12_COMPARISON_FUNC op)
|
||||
|
@@ -818,9 +818,9 @@ static bool metal_runner_draw(struct shader_runner *r, D3D_PRIMITIVE_TOPOLOGY to
|
||||
sampler_desc.rAddressMode = get_metal_address_mode(sampler->w_address);
|
||||
sampler_desc.magFilter = (sampler->filter & 0x4)
|
||||
? MTLSamplerMinMagFilterLinear : MTLSamplerMinMagFilterNearest;
|
||||
sampler_desc.minFilter = (sampler->filter & 0x1)
|
||||
sampler_desc.minFilter = (sampler->filter & 0x10)
|
||||
? MTLSamplerMinMagFilterLinear : MTLSamplerMinMagFilterNearest;
|
||||
sampler_desc.mipFilter = (sampler->filter & 0x10)
|
||||
sampler_desc.mipFilter = (sampler->filter & 0x1)
|
||||
? MTLSamplerMipFilterLinear : MTLSamplerMipFilterNearest;
|
||||
sampler_desc.compareFunction = sampler->func
|
||||
? get_metal_compare_function(sampler->func) : MTLCompareFunctionNever;
|
||||
|
@@ -1003,8 +1003,8 @@ static VkDescriptorSetLayout create_descriptor_set_layout(struct vulkan_shader_r
|
||||
const struct sampler *sampler = &runner->r.samplers[i];
|
||||
|
||||
sampler_desc.magFilter = (sampler->filter & 0x4) ? VK_FILTER_LINEAR : VK_FILTER_NEAREST;
|
||||
sampler_desc.minFilter = (sampler->filter & 0x1) ? VK_FILTER_LINEAR : VK_FILTER_NEAREST;
|
||||
sampler_desc.mipmapMode = (sampler->filter & 0x10) ? VK_SAMPLER_MIPMAP_MODE_LINEAR : VK_SAMPLER_MIPMAP_MODE_NEAREST;
|
||||
sampler_desc.minFilter = (sampler->filter & 0x10) ? VK_FILTER_LINEAR : VK_FILTER_NEAREST;
|
||||
sampler_desc.mipmapMode = (sampler->filter & 0x1) ? VK_SAMPLER_MIPMAP_MODE_LINEAR : VK_SAMPLER_MIPMAP_MODE_NEAREST;
|
||||
sampler_desc.addressModeU = vk_address_mode_from_d3d12(sampler->u_address);
|
||||
sampler_desc.addressModeV = vk_address_mode_from_d3d12(sampler->v_address);
|
||||
sampler_desc.addressModeW = vk_address_mode_from_d3d12(sampler->w_address);
|
||||
|
Reference in New Issue
Block a user