Merge branch 'love2d:12.0-development' into 12.0-development

This commit is contained in:
nikeinikei
2022-09-21 14:03:39 +02:00
committed by GitHub
2 changed files with 15 additions and 8 deletions
+13 -6
View File
@@ -557,11 +557,11 @@ void Graphics::initCapabilities()
{
// fixme: unsure what the first few features are for.
capabilities.features[FEATURE_MULTI_RENDER_TARGET_FORMATS] = true;
capabilities.features[FEATURE_CLAMP_ZERO] = false;
capabilities.features[FEATURE_CLAMP_ONE] = false;
capabilities.features[FEATURE_BLEND_MINMAX] = false;
capabilities.features[FEATURE_LIGHTEN] = false;
capabilities.features[FEATURE_FULL_NPOT] = false;
capabilities.features[FEATURE_CLAMP_ZERO] = true;
capabilities.features[FEATURE_CLAMP_ONE] = true;
capabilities.features[FEATURE_BLEND_MINMAX] = true;
capabilities.features[FEATURE_LIGHTEN] = true;
capabilities.features[FEATURE_FULL_NPOT] = true;
capabilities.features[FEATURE_PIXEL_SHADER_HIGHP] = true;
capabilities.features[FEATURE_SHADER_DERIVATIVES] = true;
capabilities.features[FEATURE_GLSL3] = true;
@@ -2527,7 +2527,14 @@ VkSampler Graphics::createSampler(const SamplerState &samplerState)
samplerInfo.addressModeW = Vulkan::getWrapMode(samplerState.wrapW);
samplerInfo.anisotropyEnable = VK_TRUE;
samplerInfo.maxAnisotropy = static_cast<float>(samplerState.maxAnisotropy);
samplerInfo.borderColor = VK_BORDER_COLOR_INT_OPAQUE_BLACK;
// TODO: This probably needs to branch on a pixel format to determine whether
// it should be float vs int, and opaque vs transparent.
bool clampone = samplerState.wrapU == SamplerState::WRAP_CLAMP_ONE
|| samplerState.wrapV == SamplerState::WRAP_CLAMP_ONE
|| samplerState.wrapW == SamplerState::WRAP_CLAMP_ONE;
samplerInfo.borderColor = clampone ? VK_BORDER_COLOR_INT_OPAQUE_WHITE : VK_BORDER_COLOR_INT_OPAQUE_BLACK;
samplerInfo.unnormalizedCoordinates = VK_FALSE;
if (samplerState.depthSampleMode.hasValue)
{
+2 -2
View File
@@ -665,11 +665,11 @@ VkSamplerAddressMode Vulkan::getWrapMode(SamplerState::WrapMode mode)
{
switch (mode)
{
//fixme: not accounting for different clamps (how does that work in vulkan?)
case SamplerState::WRAP_CLAMP:
return VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
case SamplerState::WRAP_CLAMP_ZERO:
case SamplerState::WRAP_CLAMP_ONE:
return VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
return VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER;
case SamplerState::WRAP_REPEAT:
return VK_SAMPLER_ADDRESS_MODE_REPEAT;
case SamplerState::WRAP_MIRRORED_REPEAT: