Use a finite maxSamplerLodBias limit
We previously set this device limit to infinity to avoid having to
clamp the sum of the sampler and shader provided bias values to the
[-maxSamplerLodBias, maxSamplerLodBias] range. Unfortunately infinity
is not supported/allowed by JSON and the android.graphics.cts.VulkanFeaturesTest
tests which parse the output of the vkjson tool produce a failure.
This change works around it by setting maxSamplerLodBias to a finite
value (15, which is very common according to https://vulkan.gpuinfo.org/),
and performing the clamping required by Vulkan 1.1.117 section 15.6.7.
Fortunately this cost only has to be incurred when an optional Bias
operand is used in the SPIR-V image sampling instruction. When an Lod
operand is used, which is mutually exclusive with Bias because the
former is for explicit-lod instructions and the latter for implicit-lod,
no clamping is required because the explicit LOD is not part of this
clamping equation and the sampler LOD bias must already be clamped as
specified by the spec: "The absolute value of mipLodBias must be less
than or equal to VkPhysicalDeviceLimits::maxSamplerLodBias".
Bug: b/138670766
Change-Id: Iebd6a1fef1c993ec86ac8cc38f8d9a992ba9bc47
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/34510Tested-by:
Nicolas Capens <nicolascapens@google.com>
Reviewed-by:
Ben Clayton <bclayton@google.com>
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Showing
Please
register
or
sign in
to comment