Remove sampler border color from Dawn to match WebGPU

Bug: chromium:877147
Change-Id: I9760b3c6cb67a3ffa08feeaff8e8b24b80ec4200
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/6380
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
diff --git a/dawn.json b/dawn.json
index daa4872..ac048fb 100644
--- a/dawn.json
+++ b/dawn.json
@@ -19,8 +19,7 @@
         "values": [
             {"value": 0, "name": "repeat"},
             {"value": 1, "name": "mirrored repeat"},
-            {"value": 2, "name": "clamp to edge"},
-            {"value": 3, "name": "clamp to border color"}
+            {"value": 2, "name": "clamp to edge"}
         ]
     },
     "bind group": {
@@ -128,14 +127,6 @@
     "bool": {
         "category": "native"
     },
-    "border color": {
-        "category": "enum",
-        "values": [
-            {"value": 0, "name": "transparent black"},
-            {"value": 1, "name": "opaque black"},
-            {"value": 2, "name": "opaque white"}
-        ]
-    },
     "buffer": {
         "category": "object",
         "methods": [
@@ -855,8 +846,7 @@
             {"name": "mipmap filter", "type": "filter mode"},
             {"name": "lod min clamp", "type": "float"},
             {"name": "lod max clamp", "type": "float"},
-            {"name": "compare function", "type": "compare function"},
-            {"name": "border color", "type": "border color"}
+            {"name": "compare function", "type": "compare function"}
         ]
     },
     "shader module": {
diff --git a/src/dawn_native/Sampler.cpp b/src/dawn_native/Sampler.cpp
index 4d462a5..bbb224d 100644
--- a/src/dawn_native/Sampler.cpp
+++ b/src/dawn_native/Sampler.cpp
@@ -40,7 +40,6 @@
         DAWN_TRY(ValidateAddressMode(descriptor->addressModeV));
         DAWN_TRY(ValidateAddressMode(descriptor->addressModeW));
         DAWN_TRY(ValidateCompareFunction(descriptor->compareFunction));
-        DAWN_TRY(ValidateBorderColor(descriptor->borderColor));
         return {};
     }
 
diff --git a/src/dawn_native/d3d12/SamplerD3D12.cpp b/src/dawn_native/d3d12/SamplerD3D12.cpp
index 4b78c6c..68afa1a 100644
--- a/src/dawn_native/d3d12/SamplerD3D12.cpp
+++ b/src/dawn_native/d3d12/SamplerD3D12.cpp
@@ -28,8 +28,6 @@
                     return D3D12_TEXTURE_ADDRESS_MODE_MIRROR;
                 case dawn::AddressMode::ClampToEdge:
                     return D3D12_TEXTURE_ADDRESS_MODE_CLAMP;
-                case dawn::AddressMode::ClampToBorderColor:
-                    return D3D12_TEXTURE_ADDRESS_MODE_BORDER;
                 default:
                     UNREACHABLE();
             }
@@ -88,24 +86,6 @@
         mSamplerDesc.ComparisonFunc = ToD3D12ComparisonFunc(descriptor->compareFunction);
         mSamplerDesc.MinLOD = descriptor->lodMinClamp;
         mSamplerDesc.MaxLOD = descriptor->lodMaxClamp;
-
-        switch (descriptor->borderColor) {
-            case dawn::BorderColor::TransparentBlack:
-                mSamplerDesc.BorderColor[0] = mSamplerDesc.BorderColor[1] =
-                    mSamplerDesc.BorderColor[2] = mSamplerDesc.BorderColor[3] = 0;
-                break;
-            case dawn::BorderColor::OpaqueBlack:
-                mSamplerDesc.BorderColor[0] = mSamplerDesc.BorderColor[1] =
-                    mSamplerDesc.BorderColor[2] = 0;
-                mSamplerDesc.BorderColor[3] = 1;
-                break;
-            case dawn::BorderColor::OpaqueWhite:
-                mSamplerDesc.BorderColor[0] = mSamplerDesc.BorderColor[1] =
-                    mSamplerDesc.BorderColor[2] = mSamplerDesc.BorderColor[3] = 1;
-                break;
-            default:
-                UNREACHABLE();
-        }
     }
 
     const D3D12_SAMPLER_DESC& Sampler::GetSamplerDescriptor() const {
diff --git a/src/dawn_native/d3d12/SamplerD3D12.h b/src/dawn_native/d3d12/SamplerD3D12.h
index 46e82b5..0c52716 100644
--- a/src/dawn_native/d3d12/SamplerD3D12.h
+++ b/src/dawn_native/d3d12/SamplerD3D12.h
@@ -30,7 +30,7 @@
         const D3D12_SAMPLER_DESC& GetSamplerDescriptor() const;
 
       private:
-        D3D12_SAMPLER_DESC mSamplerDesc;
+        D3D12_SAMPLER_DESC mSamplerDesc = {};
     };
 
 }}  // namespace dawn_native::d3d12
diff --git a/src/dawn_native/metal/SamplerMTL.mm b/src/dawn_native/metal/SamplerMTL.mm
index 7f91a99..eff9c35 100644
--- a/src/dawn_native/metal/SamplerMTL.mm
+++ b/src/dawn_native/metal/SamplerMTL.mm
@@ -46,19 +46,6 @@
                     return MTLSamplerAddressModeMirrorRepeat;
                 case dawn::AddressMode::ClampToEdge:
                     return MTLSamplerAddressModeClampToEdge;
-                case dawn::AddressMode::ClampToBorderColor:
-                    return MTLSamplerAddressModeClampToBorderColor;
-            }
-        }
-
-        MTLSamplerBorderColor BorderColor(dawn::BorderColor color) {
-            switch (color) {
-                case dawn::BorderColor::TransparentBlack:
-                    return MTLSamplerBorderColorTransparentBlack;
-                case dawn::BorderColor::OpaqueBlack:
-                    return MTLSamplerBorderColorOpaqueBlack;
-                case dawn::BorderColor::OpaqueWhite:
-                    return MTLSamplerBorderColorOpaqueWhite;
             }
         }
     }
@@ -78,7 +65,6 @@
         mtlDesc.lodMinClamp = descriptor->lodMinClamp;
         mtlDesc.lodMaxClamp = descriptor->lodMaxClamp;
         mtlDesc.compareFunction = ToMetalCompareFunction(descriptor->compareFunction);
-        mtlDesc.borderColor = BorderColor(descriptor->borderColor);
 
         mMtlSamplerState = [device->GetMTLDevice() newSamplerStateWithDescriptor:mtlDesc];
 
diff --git a/src/dawn_native/opengl/SamplerGL.cpp b/src/dawn_native/opengl/SamplerGL.cpp
index cb2e0df..6500e42 100644
--- a/src/dawn_native/opengl/SamplerGL.cpp
+++ b/src/dawn_native/opengl/SamplerGL.cpp
@@ -65,17 +65,11 @@
                     return GL_MIRRORED_REPEAT;
                 case dawn::AddressMode::ClampToEdge:
                     return GL_CLAMP_TO_EDGE;
-                case dawn::AddressMode::ClampToBorderColor:
-                    return GL_CLAMP_TO_BORDER;
                 default:
                     UNREACHABLE();
             }
         }
 
-        static const float kTransparentBlack[4] = {0.0, 0.0, 0.0, 0.0};
-        static const float kOpaqueBlack[4] = {0.0, 0.0, 0.0, 1.0};
-        static const float kOpaqueWhite[4] = {1.0, 1.0, 1.0, 1.0};
-
     }  // namespace
 
     Sampler::Sampler(Device* device, const SamplerDescriptor* descriptor)
@@ -96,20 +90,6 @@
             glSamplerParameteri(mHandle, GL_TEXTURE_COMPARE_FUNC,
                                 ToOpenGLCompareFunction(descriptor->compareFunction));
         }
-
-        switch (descriptor->borderColor) {
-            case dawn::BorderColor::TransparentBlack:
-                glSamplerParameterfv(mHandle, GL_TEXTURE_BORDER_COLOR, kTransparentBlack);
-                break;
-            case dawn::BorderColor::OpaqueBlack:
-                glSamplerParameterfv(mHandle, GL_TEXTURE_BORDER_COLOR, kOpaqueBlack);
-                break;
-            case dawn::BorderColor::OpaqueWhite:
-                glSamplerParameterfv(mHandle, GL_TEXTURE_BORDER_COLOR, kOpaqueWhite);
-                break;
-            default:
-                UNREACHABLE();
-        }
     }
 
     GLuint Sampler::GetHandle() const {
diff --git a/src/dawn_native/vulkan/SamplerVk.cpp b/src/dawn_native/vulkan/SamplerVk.cpp
index aa23b3c..7f242d8 100644
--- a/src/dawn_native/vulkan/SamplerVk.cpp
+++ b/src/dawn_native/vulkan/SamplerVk.cpp
@@ -29,8 +29,6 @@
                     return VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT;
                 case dawn::AddressMode::ClampToEdge:
                     return VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE;
-                case dawn::AddressMode::ClampToBorderColor:
-                    return VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER;
                 default:
                     UNREACHABLE();
             }
@@ -57,24 +55,11 @@
                     UNREACHABLE();
             }
         }
-
-        VkBorderColor VulkanBorderColor(dawn::BorderColor color) {
-            switch (color) {
-                case dawn::BorderColor::TransparentBlack:
-                    return VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK;
-                case dawn::BorderColor::OpaqueBlack:
-                    return VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK;
-                case dawn::BorderColor::OpaqueWhite:
-                    return VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE;
-                default:
-                    UNREACHABLE();
-            }
-        }
     }  // anonymous namespace
 
     Sampler::Sampler(Device* device, const SamplerDescriptor* descriptor)
         : SamplerBase(device, descriptor), mDevice(device) {
-        VkSamplerCreateInfo createInfo;
+        VkSamplerCreateInfo createInfo = {};
         createInfo.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
         createInfo.pNext = nullptr;
         createInfo.flags = 0;
@@ -91,7 +76,6 @@
         createInfo.compareEnable = createInfo.compareOp == VK_COMPARE_OP_NEVER ? VK_FALSE : VK_TRUE;
         createInfo.minLod = descriptor->lodMinClamp;
         createInfo.maxLod = descriptor->lodMaxClamp;
-        createInfo.borderColor = VulkanBorderColor(descriptor->borderColor);
         createInfo.unnormalizedCoordinates = VK_FALSE;
 
         if (device->fn.CreateSampler(device->GetVkDevice(), &createInfo, nullptr, &mHandle) !=
diff --git a/src/tests/end2end/BindGroupTests.cpp b/src/tests/end2end/BindGroupTests.cpp
index ee77e69..96b978e 100644
--- a/src/tests/end2end/BindGroupTests.cpp
+++ b/src/tests/end2end/BindGroupTests.cpp
@@ -233,7 +233,6 @@
     samplerDescriptor.lodMinClamp = kLodMin;
     samplerDescriptor.lodMaxClamp = kLodMax;
     samplerDescriptor.compareFunction = dawn::CompareFunction::Never;
-    samplerDescriptor.borderColor = dawn::BorderColor::TransparentBlack;
 
     dawn::Sampler sampler = device.CreateSampler(&samplerDescriptor);
 
diff --git a/src/tests/end2end/SamplerTests.cpp b/src/tests/end2end/SamplerTests.cpp
index 315a3b2..215f91b 100644
--- a/src/tests/end2end/SamplerTests.cpp
+++ b/src/tests/end2end/SamplerTests.cpp
@@ -129,7 +129,6 @@
             descriptor.lodMinClamp = kLodMin;
             descriptor.lodMaxClamp = kLodMax;
             descriptor.compareFunction = dawn::CompareFunction::Never;
-            descriptor.borderColor = dawn::BorderColor::TransparentBlack;
             sampler = device.CreateSampler(&descriptor);
         }
 
diff --git a/src/tests/end2end/TextureViewTests.cpp b/src/tests/end2end/TextureViewTests.cpp
index 1a41d24..ac4f017 100644
--- a/src/tests/end2end/TextureViewTests.cpp
+++ b/src/tests/end2end/TextureViewTests.cpp
@@ -102,7 +102,6 @@
         samplerDescriptor.lodMinClamp = kLodMin;
         samplerDescriptor.lodMaxClamp = kLodMax;
         samplerDescriptor.compareFunction = dawn::CompareFunction::Never;
-        samplerDescriptor.borderColor = dawn::BorderColor::TransparentBlack;
         mSampler = device.CreateSampler(&samplerDescriptor);
 
         mPipelineLayout = utils::MakeBasicPipelineLayout(device, &mBindGroupLayout);
diff --git a/src/tests/unittests/wire/WireArgumentTests.cpp b/src/tests/unittests/wire/WireArgumentTests.cpp
index d6c5d73..e96ecd3 100644
--- a/src/tests/unittests/wire/WireArgumentTests.cpp
+++ b/src/tests/unittests/wire/WireArgumentTests.cpp
@@ -246,7 +246,6 @@
     descriptor.lodMinClamp = kLodMin;
     descriptor.lodMaxClamp = kLodMax;
     descriptor.compareFunction = DAWN_COMPARE_FUNCTION_NEVER;
-    descriptor.borderColor = DAWN_BORDER_COLOR_TRANSPARENT_BLACK;
 
     dawnDeviceCreateSampler(device, &descriptor);
 
@@ -261,7 +260,6 @@
                                     desc->addressModeV == DAWN_ADDRESS_MODE_REPEAT &&
                                     desc->addressModeW == DAWN_ADDRESS_MODE_MIRRORED_REPEAT &&
                                     desc->compareFunction == DAWN_COMPARE_FUNCTION_NEVER &&
-                                    desc->borderColor == DAWN_BORDER_COLOR_TRANSPARENT_BLACK &&
                                     desc->lodMinClamp == kLodMin && desc->lodMaxClamp == kLodMax;
                          })))
         .WillOnce(Return(apiDummySampler));
diff --git a/src/utils/DawnHelpers.cpp b/src/utils/DawnHelpers.cpp
index bea60a6..0aaa8a4 100644
--- a/src/utils/DawnHelpers.cpp
+++ b/src/utils/DawnHelpers.cpp
@@ -271,7 +271,6 @@
         desc.lodMinClamp = kLodMin;
         desc.lodMaxClamp = kLodMax;
         desc.compareFunction = dawn::CompareFunction::Never;
-        desc.borderColor = dawn::BorderColor::TransparentBlack;
 
         return desc;
     }