diff --git a/tests/shader_runner_d3d9.c b/tests/shader_runner_d3d9.c index 2709c2d9f..ccf7f879b 100644 --- a/tests/shader_runner_d3d9.c +++ b/tests/shader_runner_d3d9.c @@ -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); } diff --git a/tests/shader_runner_gl.c b/tests/shader_runner_gl.c index 72e58b6c3..634ebca75 100644 --- a/tests/shader_runner_gl.c +++ b/tests/shader_runner_gl.c @@ -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) diff --git a/tests/shader_runner_metal.m b/tests/shader_runner_metal.m index 862735a48..97360d151 100644 --- a/tests/shader_runner_metal.m +++ b/tests/shader_runner_metal.m @@ -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; diff --git a/tests/shader_runner_vulkan.c b/tests/shader_runner_vulkan.c index 7bf2d020b..411f9abaf 100644 --- a/tests/shader_runner_vulkan.c +++ b/tests/shader_runner_vulkan.c @@ -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);