Remove GL_CHROMIUM_texture_filtering_hint

This was using an unregistered Vulkan extension to set the precision of
SwiftShader's internal filtering for the sake of Chrome.  That's baked
in at build instead.

Bug: angleproject:8349
Bug: chromium:726075
Change-Id: I12849d2d29d99626f22a92ee9d74366f78658476
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5063344
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
diff --git a/doc/ExtensionSupport.md b/doc/ExtensionSupport.md
index ccc210f..1029fca 100644
--- a/doc/ExtensionSupport.md
+++ b/doc/ExtensionSupport.md
@@ -247,7 +247,6 @@
 | [GL_ANGLE_texture_compression_dxt3](https://chromium.googlesource.com/angle/angle/+/refs/heads/main/extensions/ANGLE_texture_compression_dxt3.txt) | &#x2714; | &#x2714; | &#x2714; | &#x2714; | &#x2714; |  |  |
 | [GL_ANGLE_texture_compression_dxt5](https://chromium.googlesource.com/angle/angle/+/refs/heads/main/extensions/ANGLE_texture_compression_dxt5.txt) | &#x2714; | &#x2714; | &#x2714; | &#x2714; | &#x2714; |  |  |
 | [GL_ANGLE_texture_external_update](https://chromium.googlesource.com/angle/angle/+/refs/heads/main/extensions/ANGLE_texture_external_update.txt) |  |  |  |  |  |  |  |
-| [GL_CHROMIUM_texture_filtering_hint](https://chromium.googlesource.com/angle/angle/+/refs/heads/main/extensions/CHROMIUM_texture_filtering_hint.txt) |  |  |  |  | &#x2714; |  |  |
 | [GL_ANGLE_texture_multisample](https://chromium.googlesource.com/angle/angle/+/refs/heads/main/extensions/ANGLE_texture_multisample.txt) | &#x2714; | &#x2714; | &#x2714; | &#x2714; | &#x2714; | &#x2714; | &#x2714; |
 | [GL_ANGLE_texture_rectangle](https://chromium.googlesource.com/angle/angle/+/refs/heads/main/extensions/ANGLE_texture_rectangle.txt) |  |  |  |  |  |  |  |
 | [GL_ANGLE_vulkan_image](https://chromium.googlesource.com/angle/angle/+/refs/heads/main/extensions/ANGLE_vulkan_image.txt) | &#x2714; | &#x2714; | &#x2714; | &#x2714; | &#x2714; | &#x2714; | &#x2714; |
diff --git a/include/GLES2/gl2ext_angle.h b/include/GLES2/gl2ext_angle.h
index cef3f51..7e08b1c 100644
--- a/include/GLES2/gl2ext_angle.h
+++ b/include/GLES2/gl2ext_angle.h
@@ -601,11 +601,6 @@
 #endif
 #endif /* GL_ANGLE_vulkan_image */
 
-#ifndef GL_CHROMIUM_texture_filtering_hint
-#define GL_CHROMIUM_texture_filtering_hint
-#define GL_TEXTURE_FILTERING_HINT_CHROMIUM 0x8AF0
-#endif /* GL_CHROMIUM_texture_filtering_hint */
-
 #ifndef GL_NV_robustness_video_memory
 #define GL_NV_robustness_video_memory
 #define GL_PURGED_CONTEXT_RESET_NV 0x92BB
diff --git a/include/platform/autogen/FeaturesVk_autogen.h b/include/platform/autogen/FeaturesVk_autogen.h
index 6696d3b..ced2028 100644
--- a/include/platform/autogen/FeaturesVk_autogen.h
+++ b/include/platform/autogen/FeaturesVk_autogen.h
@@ -139,13 +139,6 @@
         &members,
     };
 
-    FeatureInfo supportsFilteringPrecision = {
-        "supportsFilteringPrecision",
-        FeatureCategory::VulkanFeatures,
-        "VkDevice supports the VK_GOOGLE_sampler_filtering_precision extension",
-        &members,
-    };
-
     FeatureInfo supportsExternalFenceCapabilities = {
         "supportsExternalFenceCapabilities",
         FeatureCategory::VulkanFeatures,
diff --git a/include/platform/vk_features.json b/include/platform/vk_features.json
index dafe445..16cec02 100644
--- a/include/platform/vk_features.json
+++ b/include/platform/vk_features.json
@@ -133,13 +133,6 @@
             ]
         },
         {
-            "name": "supports_filtering_precision",
-            "category": "Features",
-            "description": [
-                "VkDevice supports the VK_GOOGLE_sampler_filtering_precision extension"
-            ]
-        },
-        {
             "name": "supports_external_fence_capabilities",
             "category": "Features",
             "description": [
diff --git a/scripts/code_generation_hashes/Extension_files.json b/scripts/code_generation_hashes/Extension_files.json
index 39019b0..c41f019 100644
--- a/scripts/code_generation_hashes/Extension_files.json
+++ b/scripts/code_generation_hashes/Extension_files.json
@@ -1,6 +1,6 @@
 {
   "doc/ExtensionSupport.md":
-    "95d3899d5d322d0c28a39bcf033fd31a",
+    "e6028169e287a20efa4686f661c3ad63",
   "scripts/egl_angle_ext.xml":
     "89e7586fbfed61f7b1500f2dd90c1a2e",
   "scripts/extension_data/intel_630_linux.json":
@@ -22,13 +22,13 @@
   "scripts/gl_angle_ext.xml":
     "3d6d9529c6d0da797652c366ddaa9087",
   "scripts/registry_xml.py":
-    "47ea795fada7b13232c7c9445ccfadb6",
+    "d68e6d8d31eafb11d33eb88f51d7457e",
   "src/libANGLE/gen_extensions.py":
     "6ea1cb1733c4df98b527bbf2752e118b",
   "src/libANGLE/gles_extensions_autogen.cpp":
-    "950a6f60a7e0886a5a6e41d21cc53eb9",
+    "a721438742cf9df4cf01263c9d61fb2f",
   "src/libANGLE/gles_extensions_autogen.h":
-    "a30c1a9423cb0a52cbf4ed742e612df9",
+    "c5d442ac9e933232f2b992327d75b2d0",
   "third_party/EGL-Registry/src/api/egl.xml":
     "2056d54ea07156f1988ca1366bdee21a",
   "third_party/OpenCL-Docs/src/xml/cl.xml":
diff --git a/scripts/code_generation_hashes/GL_EGL_WGL_loader.json b/scripts/code_generation_hashes/GL_EGL_WGL_loader.json
index ae8297b..3181b81 100644
--- a/scripts/code_generation_hashes/GL_EGL_WGL_loader.json
+++ b/scripts/code_generation_hashes/GL_EGL_WGL_loader.json
@@ -6,7 +6,7 @@
   "scripts/gl_angle_ext.xml":
     "3d6d9529c6d0da797652c366ddaa9087",
   "scripts/registry_xml.py":
-    "47ea795fada7b13232c7c9445ccfadb6",
+    "d68e6d8d31eafb11d33eb88f51d7457e",
   "src/libEGL/egl_loader_autogen.cpp":
     "a41c368dc25edc7ceda29b17cb45b854",
   "src/libEGL/egl_loader_autogen.h":
diff --git a/scripts/code_generation_hashes/GL_EGL_entry_points.json b/scripts/code_generation_hashes/GL_EGL_entry_points.json
index 9c1af94..8de74d3 100644
--- a/scripts/code_generation_hashes/GL_EGL_entry_points.json
+++ b/scripts/code_generation_hashes/GL_EGL_entry_points.json
@@ -10,7 +10,7 @@
   "scripts/gl_angle_ext.xml":
     "3d6d9529c6d0da797652c366ddaa9087",
   "scripts/registry_xml.py":
-    "47ea795fada7b13232c7c9445ccfadb6",
+    "d68e6d8d31eafb11d33eb88f51d7457e",
   "src/common/entry_points_enum_autogen.cpp":
     "1c7b8562eebccb8c980dbb664bb9ff3b",
   "src/common/entry_points_enum_autogen.h":
@@ -38,7 +38,7 @@
   "src/libANGLE/Context_gles_3_2_autogen.h":
     "cf9900e0067812fc6773e8ae4664da33",
   "src/libANGLE/Context_gles_ext_autogen.h":
-    "b0c882fbdb59cbb5a70443cc97508562",
+    "21a91ccacddfd58dbc5ab872f2def8ae",
   "src/libANGLE/capture/capture_egl_autogen.cpp":
     "13734e23717732184a23fe7c872a0016",
   "src/libANGLE/capture/capture_egl_autogen.h":
diff --git a/scripts/code_generation_hashes/GLenum_value_to_string_map.json b/scripts/code_generation_hashes/GLenum_value_to_string_map.json
index 97be780..bc25170 100644
--- a/scripts/code_generation_hashes/GLenum_value_to_string_map.json
+++ b/scripts/code_generation_hashes/GLenum_value_to_string_map.json
@@ -4,7 +4,7 @@
   "scripts/gl_angle_ext.xml":
     "3d6d9529c6d0da797652c366ddaa9087",
   "scripts/registry_xml.py":
-    "47ea795fada7b13232c7c9445ccfadb6",
+    "d68e6d8d31eafb11d33eb88f51d7457e",
   "src/common/gl_enum_utils_autogen.cpp":
     "034602dc70b0ddb2325bc8b9b13de233",
   "src/common/gl_enum_utils_autogen.h":
diff --git a/scripts/code_generation_hashes/interpreter_utils.json b/scripts/code_generation_hashes/interpreter_utils.json
index 4b24a66..bbab800 100644
--- a/scripts/code_generation_hashes/interpreter_utils.json
+++ b/scripts/code_generation_hashes/interpreter_utils.json
@@ -6,7 +6,7 @@
   "scripts/gl_angle_ext.xml":
     "3d6d9529c6d0da797652c366ddaa9087",
   "scripts/registry_xml.py":
-    "47ea795fada7b13232c7c9445ccfadb6",
+    "d68e6d8d31eafb11d33eb88f51d7457e",
   "third_party/EGL-Registry/src/api/egl.xml":
     "2056d54ea07156f1988ca1366bdee21a",
   "third_party/OpenCL-Docs/src/xml/cl.xml":
diff --git a/scripts/code_generation_hashes/proc_table.json b/scripts/code_generation_hashes/proc_table.json
index 71c4c1c..e15bd82 100644
--- a/scripts/code_generation_hashes/proc_table.json
+++ b/scripts/code_generation_hashes/proc_table.json
@@ -6,7 +6,7 @@
   "scripts/gl_angle_ext.xml":
     "3d6d9529c6d0da797652c366ddaa9087",
   "scripts/registry_xml.py":
-    "47ea795fada7b13232c7c9445ccfadb6",
+    "d68e6d8d31eafb11d33eb88f51d7457e",
   "src/libGLESv2/proc_table_cl_autogen.cpp":
     "ed003b0f041aaaa35b67d3fe07e61f91",
   "src/libGLESv2/proc_table_egl_autogen.cpp":
diff --git a/scripts/registry_xml.py b/scripts/registry_xml.py
index f97e32b..68c0eaf 100644
--- a/scripts/registry_xml.py
+++ b/scripts/registry_xml.py
@@ -79,7 +79,6 @@
     "GL_CHROMIUM_color_buffer_float_rgba",
     "GL_CHROMIUM_lose_context",
     "GL_CHROMIUM_sync_query",
-    "GL_CHROMIUM_texture_filtering_hint",
 ]
 
 gles_requestable_extensions = [
diff --git a/src/common/vulkan/BUILD.gn b/src/common/vulkan/BUILD.gn
index 8e0f34b..afde774 100644
--- a/src/common/vulkan/BUILD.gn
+++ b/src/common/vulkan/BUILD.gn
@@ -48,10 +48,7 @@
   }
 
   angle_source_set("angle_vulkan_headers") {
-    sources = [
-      "vk_google_filtering_precision.h",
-      "vk_headers.h",
-    ]
+    sources = [ "vk_headers.h" ]
     if (angle_shared_libvulkan) {
       public_deps = [ "$angle_root/src/third_party/volk:volk" ]
     } else {
diff --git a/src/common/vulkan/vk_google_filtering_precision.h b/src/common/vulkan/vk_google_filtering_precision.h
deleted file mode 100644
index 934dc79..0000000
--- a/src/common/vulkan/vk_google_filtering_precision.h
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2020 The SwiftShader Authors. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//    http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#ifndef CUSTOM_VK_GOOGLE_SAMPLER_FILTERING_PRECISION_H_
-#define CUSTOM_VK_GOOGLE_SAMPLER_FILTERING_PRECISION_H_
-
-#include "vk_headers.h"
-
-// THIS FILE SHOULD BE DELETED IF VK_GOOGLE_sampler_filtering_precision IS EVER ADDED TO THE VULKAN
-// HEADERS
-#ifdef VK_GOOGLE_sampler_filtering_precision
-#    error \
-        "VK_GOOGLE_sampler_filtering_precision is already defined in the Vulkan headers, you can delete this file"
-#endif
-
-static constexpr VkStructureType VK_STRUCTURE_TYPE_SAMPLER_FILTERING_PRECISION_GOOGLE =
-    static_cast<VkStructureType>(1000264000);
-
-#define VK_GOOGLE_sampler_filtering_precision 1
-#define VK_GOOGLE_SAMPLER_FILTERING_PRECISION_SPEC_VERSION 1
-#define VK_GOOGLE_SAMPLER_FILTERING_PRECISION_EXTENSION_NAME "VK_GOOGLE_sampler_filtering_precision"
-
-const int TEXTURE_FILTERING_HINT_CHROMIUM = 0x8AF0;
-
-typedef enum VkSamplerFilteringPrecisionModeGOOGLE
-{
-    VK_SAMPLER_FILTERING_PRECISION_MODE_LOW_GOOGLE  = 0,
-    VK_SAMPLER_FILTERING_PRECISION_MODE_HIGH_GOOGLE = 1,
-    VK_SAMPLER_FILTERING_PRECISION_MODE_BEGIN_RANGE_GOOGLE =
-        VK_SAMPLER_FILTERING_PRECISION_MODE_LOW_GOOGLE,
-    VK_SAMPLER_FILTERING_PRECISION_MODE_END_RANGE_GOOGLE =
-        VK_SAMPLER_FILTERING_PRECISION_MODE_HIGH_GOOGLE,
-    VK_SAMPLER_FILTERING_PRECISION_MODE_RANGE_SIZE_GOOGLE =
-        (VK_SAMPLER_FILTERING_PRECISION_MODE_HIGH_GOOGLE -
-         VK_SAMPLER_FILTERING_PRECISION_MODE_LOW_GOOGLE + 1),
-    VK_SAMPLER_FILTERING_PRECISION_MODE_MAX_ENUM_GOOGLE = 0x7FFFFFFF
-} VkSamplerFilteringPrecisionModeGOOGLE;
-
-typedef struct VkSamplerFilteringPrecisionGOOGLE
-{
-    VkStructureType sType;
-    const void *pNext;
-    VkSamplerFilteringPrecisionModeGOOGLE samplerFilteringPrecisionMode;
-} VkSamplerFilteringPrecisionGOOGLE;
-
-#endif  // CUSTOM_VK_GOOGLE_SAMPLER_FILTERING_PRECISION_H_
diff --git a/src/common/vulkan/vulkan_icd.cpp b/src/common/vulkan/vulkan_icd.cpp
index 130cc82..56cda19 100644
--- a/src/common/vulkan/vulkan_icd.cpp
+++ b/src/common/vulkan/vulkan_icd.cpp
@@ -16,8 +16,6 @@
 #include "common/debug.h"
 #include "common/system_utils.h"
 
-#include "common/vulkan/vk_google_filtering_precision.h"
-
 namespace
 {
 void ResetEnvironmentVar(const char *variableName, const Optional<std::string> &value)
@@ -178,12 +176,6 @@
             ERR() << "Error setting synchronization validation environment for Vulkan validation "
                      "layers init.";
         }
-
-        if (!setCustomExtensionsEnvironment())
-        {
-            ERR() << "Error setting custom list for custom extensions for Vulkan layers init.";
-            mEnableValidationLayers = false;
-        }
     }
 #endif  // !defined(ANGLE_PLATFORM_ANDROID)
 
@@ -233,38 +225,6 @@
     return mChangedICDEnv;
 }
 
-bool ScopedVkLoaderEnvironment::setCustomExtensionsEnvironment()
-{
-    struct CustomExtension
-    {
-        VkStructureType type;
-        size_t size;
-    };
-
-    CustomExtension customExtensions[] = {
-
-        {VK_STRUCTURE_TYPE_SAMPLER_FILTERING_PRECISION_GOOGLE,
-         sizeof(VkSamplerFilteringPrecisionGOOGLE)},
-
-    };
-
-    mPreviousCustomExtensionsEnv = angle::GetEnvironmentVar(kValidationLayersCustomSTypeListEnv);
-
-    std::stringstream strstr;
-    for (CustomExtension &extension : customExtensions)
-    {
-        if (strstr.tellp() != std::streampos(0))
-        {
-            strstr << angle::GetPathSeparatorForEnvironmentVar();
-        }
-
-        strstr << extension.type << angle::GetPathSeparatorForEnvironmentVar() << extension.size;
-    }
-
-    return angle::PrependPathToEnvironmentVar(kValidationLayersCustomSTypeListEnv,
-                                              strstr.str().c_str());
-}
-
 void ChoosePhysicalDevice(PFN_vkGetPhysicalDeviceProperties pGetPhysicalDeviceProperties,
                           const std::vector<VkPhysicalDevice> &physicalDevices,
                           vk::ICD preferredICD,
diff --git a/src/common/vulkan/vulkan_icd.h b/src/common/vulkan/vulkan_icd.h
index b2921f8..cc8f2cc 100644
--- a/src/common/vulkan/vulkan_icd.h
+++ b/src/common/vulkan/vulkan_icd.h
@@ -44,7 +44,6 @@
 
   private:
     bool setICDEnvironment(const char *icd);
-    bool setCustomExtensionsEnvironment();
 
     bool mEnableValidationLayers;
     vk::ICD mICD;
diff --git a/src/libANGLE/Context.cpp b/src/libANGLE/Context.cpp
index 10c1f7f..fbddd32 100644
--- a/src/libANGLE/Context.cpp
+++ b/src/libANGLE/Context.cpp
@@ -3920,7 +3920,6 @@
         mSupportedExtensions.textureCompressionRgtcEXT                       = false;
         mSupportedExtensions.textureCompressionS3tcSrgbEXT                   = false;
         mSupportedExtensions.textureCompressionAstcSliced3dKHR               = false;
-        mSupportedExtensions.textureFilteringHintCHROMIUM                    = false;
 
         caps->compressedTextureFormats.clear();
     }
diff --git a/src/libANGLE/Context_gles_ext_autogen.h b/src/libANGLE/Context_gles_ext_autogen.h
index 5fcb3e4..ab1a5a0 100644
--- a/src/libANGLE/Context_gles_ext_autogen.h
+++ b/src/libANGLE/Context_gles_ext_autogen.h
@@ -633,7 +633,6 @@
     /* GL_CHROMIUM_framebuffer_mixed_samples */                                                    \
     /* GL_CHROMIUM_lose_context */                                                                 \
     void loseContext(GraphicsResetStatus currentPacked, GraphicsResetStatus otherPacked);          \
-    /* GL_CHROMIUM_sync_query */                                                                   \
-    /* GL_CHROMIUM_texture_filtering_hint */
+    /* GL_CHROMIUM_sync_query */
 
 #endif  // ANGLE_CONTEXT_API_EXT_AUTOGEN_H_
diff --git a/src/libANGLE/State.cpp b/src/libANGLE/State.cpp
index 9f1b74a..1aefc07 100644
--- a/src/libANGLE/State.cpp
+++ b/src/libANGLE/State.cpp
@@ -355,7 +355,6 @@
       mStencilBackRef(0),
       mLineWidth(0),
       mGenerateMipmapHint(GL_NONE),
-      mTextureFilteringHint(GL_NONE),
       mFragmentShaderDerivativeHint(GL_NONE),
       mNearZ(0),
       mFarZ(0),
@@ -426,7 +425,6 @@
     mSampleMaskValues.fill(~GLbitfield(0));
 
     mGenerateMipmapHint           = GL_DONT_CARE;
-    mTextureFilteringHint         = GL_DONT_CARE;
     mFragmentShaderDerivativeHint = GL_DONT_CARE;
 
     mLineWidth = 1.0f;
@@ -1157,13 +1155,6 @@
     mExtendedDirtyBits.set(state::EXTENDED_DIRTY_BIT_MIPMAP_GENERATION_HINT);
 }
 
-void PrivateState::setTextureFilteringHint(GLenum hint)
-{
-    mTextureFilteringHint = hint;
-    // Note: we don't add a dirty bit for this flag as it's not expected to be toggled at
-    // runtime.
-}
-
 void PrivateState::setFragmentShaderDerivativeHint(GLenum hint)
 {
     mFragmentShaderDerivativeHint = hint;
@@ -1919,9 +1910,6 @@
         case GL_GENERATE_MIPMAP_HINT:
             *params = mGenerateMipmapHint;
             break;
-        case GL_TEXTURE_FILTERING_HINT_CHROMIUM:
-            *params = mTextureFilteringHint;
-            break;
         case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES:
             *params = mFragmentShaderDerivativeHint;
             break;
diff --git a/src/libANGLE/State.h b/src/libANGLE/State.h
index 00a6d56..2c77343 100644
--- a/src/libANGLE/State.h
+++ b/src/libANGLE/State.h
@@ -481,8 +481,6 @@
     // Hint setters
     void setGenerateMipmapHint(GLenum hint);
     GLenum getGenerateMipmapHint() const { return mGenerateMipmapHint; }
-    void setTextureFilteringHint(GLenum hint);
-    GLenum getTextureFilteringHint() const { return mTextureFilteringHint; }
     GLenum getFragmentShaderDerivativeHint() const { return mFragmentShaderDerivativeHint; }
     void setFragmentShaderDerivativeHint(GLenum hint);
 
@@ -639,7 +637,6 @@
     GLfloat mLineWidth;
 
     GLenum mGenerateMipmapHint;
-    GLenum mTextureFilteringHint;
     GLenum mFragmentShaderDerivativeHint;
 
     Rectangle mViewport;
@@ -1347,7 +1344,6 @@
     float getLineWidth() const { return mPrivateState.getLineWidth(); }
     unsigned int getActiveSampler() const { return mPrivateState.getActiveSampler(); }
     GLenum getGenerateMipmapHint() const { return mPrivateState.getGenerateMipmapHint(); }
-    GLenum getTextureFilteringHint() const { return mPrivateState.getTextureFilteringHint(); }
     GLenum getFragmentShaderDerivativeHint() const
     {
         return mPrivateState.getFragmentShaderDerivativeHint();
diff --git a/src/libANGLE/capture/serialize.cpp b/src/libANGLE/capture/serialize.cpp
index 68b1692..9e11e1d 100644
--- a/src/libANGLE/capture/serialize.cpp
+++ b/src/libANGLE/capture/serialize.cpp
@@ -572,7 +572,6 @@
     json->addScalar("StencilBackRef", state.getStencilBackRef());
     json->addScalar("LineWidth", state.getLineWidth());
     json->addScalar("GenerateMipmapHint", state.getGenerateMipmapHint());
-    json->addScalar("TextureFilteringHint", state.getTextureFilteringHint());
     json->addScalar("FragmentShaderDerivativeHint", state.getFragmentShaderDerivativeHint());
     json->addScalar("BindGeneratesResourceEnabled", state.isBindGeneratesResourceEnabled());
     json->addScalar("ClientArraysEnabled", state.areClientArraysEnabled());
diff --git a/src/libANGLE/context_private_call_gles.cpp b/src/libANGLE/context_private_call_gles.cpp
index 337fe32..a26b16d 100644
--- a/src/libANGLE/context_private_call_gles.cpp
+++ b/src/libANGLE/context_private_call_gles.cpp
@@ -770,9 +770,6 @@
         case GL_FOG_HINT:
             privateState->getMutableGLES1State()->setHint(target, mode);
             break;
-        case GL_TEXTURE_FILTERING_HINT_CHROMIUM:
-            privateState->setTextureFilteringHint(mode);
-            break;
         default:
             UNREACHABLE();
             return;
diff --git a/src/libANGLE/gles_extensions_autogen.cpp b/src/libANGLE/gles_extensions_autogen.cpp
index 963f6b0..08705a0 100644
--- a/src/libANGLE/gles_extensions_autogen.cpp
+++ b/src/libANGLE/gles_extensions_autogen.cpp
@@ -259,7 +259,6 @@
         map["GL_ANGLE_texture_compression_dxt3"] = enableableExtension(&Extensions::textureCompressionDxt3ANGLE);
         map["GL_ANGLE_texture_compression_dxt5"] = enableableExtension(&Extensions::textureCompressionDxt5ANGLE);
         map["GL_ANGLE_texture_external_update"] = enableableExtension(&Extensions::textureExternalUpdateANGLE);
-        map["GL_CHROMIUM_texture_filtering_hint"] = enableableExtension(&Extensions::textureFilteringHintCHROMIUM);
         map["GL_ANGLE_texture_multisample"] = enableableExtension(&Extensions::textureMultisampleANGLE);
         map["GL_ANGLE_texture_rectangle"] = enableableDisablableExtension(&Extensions::textureRectangleANGLE);
         map["GL_ANGLE_vulkan_image"] = enableableExtension(&Extensions::vulkanImageANGLE);
diff --git a/src/libANGLE/gles_extensions_autogen.h b/src/libANGLE/gles_extensions_autogen.h
index 2c9545f..f0bb628 100644
--- a/src/libANGLE/gles_extensions_autogen.h
+++ b/src/libANGLE/gles_extensions_autogen.h
@@ -734,9 +734,6 @@
     // GL_ANGLE_texture_external_update
     bool textureExternalUpdateANGLE = false;
 
-    // GL_CHROMIUM_texture_filtering_hint
-    bool textureFilteringHintCHROMIUM = false;
-
     // GL_ANGLE_texture_multisample
     bool textureMultisampleANGLE = false;
 
diff --git a/src/libANGLE/queryutils.cpp b/src/libANGLE/queryutils.cpp
index 75e5d46..2ad01de 100644
--- a/src/libANGLE/queryutils.cpp
+++ b/src/libANGLE/queryutils.cpp
@@ -3179,7 +3179,6 @@
         case GL_PACK_ALIGNMENT:
         case GL_UNPACK_ALIGNMENT:
         case GL_GENERATE_MIPMAP_HINT:
-        case GL_TEXTURE_FILTERING_HINT_CHROMIUM:
         case GL_RED_BITS:
         case GL_GREEN_BITS:
         case GL_BLUE_BITS:
diff --git a/src/libANGLE/renderer/vulkan/RendererVk.cpp b/src/libANGLE/renderer/vulkan/RendererVk.cpp
index 789398b..ce4dde5 100644
--- a/src/libANGLE/renderer/vulkan/RendererVk.cpp
+++ b/src/libANGLE/renderer/vulkan/RendererVk.cpp
@@ -18,7 +18,6 @@
 #include "common/platform.h"
 #include "common/system_utils.h"
 #include "common/vulkan/libvulkan_loader.h"
-#include "common/vulkan/vk_google_filtering_precision.h"
 #include "common/vulkan/vulkan_icd.h"
 #include "gpu_info_util/SystemInfo.h"
 #include "libANGLE/Context.h"
@@ -265,8 +264,6 @@
     "VUID-vkCmdDrawIndexed-None-09003",
     // https://anglebug.com/8334
     "VUID-VkDescriptorImageInfo-imageView-07796",
-    // https://anglebug.com/8349
-    "VUID-VkSamplerCreateInfo-pNext-pNext",
     // https://issuetracker.google.com/303441816
     "VUID-VkRenderPassBeginInfo-renderPass-00904",
     // http://anglebug.com/8401
@@ -4071,10 +4068,6 @@
         ExtensionFound(VK_FUCHSIA_EXTERNAL_MEMORY_EXTENSION_NAME, deviceExtensionNames));
 
     ANGLE_FEATURE_CONDITION(
-        &mFeatures, supportsFilteringPrecision,
-        ExtensionFound(VK_GOOGLE_SAMPLER_FILTERING_PRECISION_EXTENSION_NAME, deviceExtensionNames));
-
-    ANGLE_FEATURE_CONDITION(
         &mFeatures, supportsExternalSemaphoreFd,
         ExtensionFound(VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME, deviceExtensionNames));
 
diff --git a/src/libANGLE/renderer/vulkan/vk_cache_utils.cpp b/src/libANGLE/renderer/vulkan/vk_cache_utils.cpp
index a0c5404..0504f11 100644
--- a/src/libANGLE/renderer/vulkan/vk_cache_utils.cpp
+++ b/src/libANGLE/renderer/vulkan/vk_cache_utils.cpp
@@ -12,7 +12,6 @@
 
 #include "common/aligned_memory.h"
 #include "common/system_utils.h"
-#include "common/vulkan/vk_google_filtering_precision.h"
 #include "libANGLE/BlobCache.h"
 #include "libANGLE/VertexAttribute.h"
 #include "libANGLE/renderer/vulkan/DisplayVk.h"
@@ -4972,20 +4971,6 @@
     createInfo.borderColor             = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK;
     createInfo.unnormalizedCoordinates = VK_FALSE;
 
-    // Note: because we don't detect changes to this hint (no dirty bit), if a sampler is created
-    // with the hint enabled, and then the hint gets disabled, the next render will do so with the
-    // hint enabled.
-    VkSamplerFilteringPrecisionGOOGLE filteringInfo = {};
-    GLenum hint = contextVk->getState().getTextureFilteringHint();
-    if (hint == GL_NICEST)
-    {
-        ASSERT(extensions.textureFilteringHintCHROMIUM);
-        filteringInfo.sType = VK_STRUCTURE_TYPE_SAMPLER_FILTERING_PRECISION_GOOGLE;
-        filteringInfo.samplerFilteringPrecisionMode =
-            VK_SAMPLER_FILTERING_PRECISION_MODE_HIGH_GOOGLE;
-        AddToPNextChain(&createInfo, &filteringInfo);
-    }
-
     VkSamplerYcbcrConversionInfo samplerYcbcrConversionInfo = {};
     if (mYcbcrConversionDesc.valid())
     {
diff --git a/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp b/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp
index 82a968d..6d4b2f5 100644
--- a/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp
+++ b/src/libANGLE/renderer/vulkan/vk_caps_utils.cpp
@@ -449,9 +449,6 @@
 
     mNativeExtensions.gpuShader5EXT = vk::CanSupportGPUShader5EXT(mPhysicalDeviceFeatures);
 
-    mNativeExtensions.textureFilteringHintCHROMIUM =
-        getFeatures().supportsFilteringPrecision.enabled;
-
     // Only expose texture cubemap array if the physical device supports it.
     mNativeExtensions.textureCubeMapArrayOES = getFeatures().supportsImageCubeArray.enabled;
     mNativeExtensions.textureCubeMapArrayEXT = mNativeExtensions.textureCubeMapArrayOES;
diff --git a/src/libANGLE/validationES2.cpp b/src/libANGLE/validationES2.cpp
index 6be6174..2517264 100644
--- a/src/libANGLE/validationES2.cpp
+++ b/src/libANGLE/validationES2.cpp
@@ -4677,14 +4677,6 @@
         case GL_GENERATE_MIPMAP_HINT:
             break;
 
-        case GL_TEXTURE_FILTERING_HINT_CHROMIUM:
-            if (!state.getExtensions().textureFilteringHintCHROMIUM)
-            {
-                errors->validationErrorF(entryPoint, GL_INVALID_ENUM, kEnumNotSupported, target);
-                return false;
-            }
-            break;
-
         case GL_FRAGMENT_SHADER_DERIVATIVE_HINT:
             if (state.getClientVersion() < ES_3_0 && !state.getExtensions().standardDerivativesOES)
             {
diff --git a/src/tests/angle_end2end_tests.gni b/src/tests/angle_end2end_tests.gni
index 044cc9d..0f4a64a 100644
--- a/src/tests/angle_end2end_tests.gni
+++ b/src/tests/angle_end2end_tests.gni
@@ -154,7 +154,6 @@
   "gl_tests/SwizzleTest.cpp",
   "gl_tests/SyncQueriesTest.cpp",
   "gl_tests/TextureExternalUpdateTest.cpp",
-  "gl_tests/TextureFilteringHintTest.cpp",
   "gl_tests/TextureMultisampleTest.cpp",
   "gl_tests/TextureRectangleTest.cpp",
   "gl_tests/TextureTest.cpp",
diff --git a/src/tests/gl_tests/TextureFilteringHintTest.cpp b/src/tests/gl_tests/TextureFilteringHintTest.cpp
deleted file mode 100644
index cc105fd..0000000
--- a/src/tests/gl_tests/TextureFilteringHintTest.cpp
+++ /dev/null
@@ -1,64 +0,0 @@
-//
-// Copyright 2020 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-
-// TextureFilteringHintTest.cpp : Tests of the GL_CHROMIUM_texture_filtering_hint extension.
-
-#include "test_utils/ANGLETest.h"
-
-#include "test_utils/gl_raii.h"
-
-namespace angle
-{
-
-class TextureFilteringHintTest : public ANGLETest<>
-{
-  protected:
-    TextureFilteringHintTest()
-    {
-        setWindowWidth(128);
-        setWindowHeight(128);
-        setConfigRedBits(8);
-        setConfigGreenBits(8);
-        setConfigBlueBits(8);
-        setConfigAlphaBits(8);
-    }
-};
-
-// Test that setting the hint works only when the extension is enabled
-TEST_P(TextureFilteringHintTest, Validation)
-{
-    if (IsGLExtensionEnabled("GL_CHROMIUM_texture_filtering_hint"))
-    {
-        GLint intValue = 0;
-        glGetIntegerv(GL_TEXTURE_FILTERING_HINT_CHROMIUM, &intValue);
-        EXPECT_GL_NO_ERROR();
-        EXPECT_GLENUM_EQ(GL_DONT_CARE, intValue);
-
-        glHint(GL_TEXTURE_FILTERING_HINT_CHROMIUM, GL_FASTEST);
-        glGetIntegerv(GL_TEXTURE_FILTERING_HINT_CHROMIUM, &intValue);
-        EXPECT_GL_NO_ERROR();
-        EXPECT_GLENUM_EQ(GL_FASTEST, intValue);
-
-        glHint(GL_TEXTURE_FILTERING_HINT_CHROMIUM, GL_NICEST);
-        glGetIntegerv(GL_TEXTURE_FILTERING_HINT_CHROMIUM, &intValue);
-        EXPECT_GL_NO_ERROR();
-        EXPECT_GLENUM_EQ(GL_NICEST, intValue);
-
-        glHint(GL_TEXTURE_FILTERING_HINT_CHROMIUM, GL_TEXTURE_2D);
-        glGetIntegerv(GL_TEXTURE_FILTERING_HINT_CHROMIUM, &intValue);
-        EXPECT_GL_ERROR(GL_INVALID_ENUM);
-    }
-    else
-    {
-        glHint(GL_TEXTURE_FILTERING_HINT_CHROMIUM, GL_FASTEST);
-        EXPECT_GL_ERROR(GL_INVALID_ENUM);
-    }
-}
-
-// Use this to select which configurations (e.g. which renderer, which GLES major version) these
-// tests should be run against.
-ANGLE_INSTANTIATE_TEST_ES2_AND_ES3(TextureFilteringHintTest);
-}  // namespace angle
diff --git a/util/autogen/angle_features_autogen.cpp b/util/autogen/angle_features_autogen.cpp
index d5f9e0a..395b59d 100644
--- a/util/autogen/angle_features_autogen.cpp
+++ b/util/autogen/angle_features_autogen.cpp
@@ -293,7 +293,6 @@
     {Feature::SupportsExternalSemaphoreCapabilities, "supportsExternalSemaphoreCapabilities"},
     {Feature::SupportsExternalSemaphoreFd, "supportsExternalSemaphoreFd"},
     {Feature::SupportsExternalSemaphoreFuchsia, "supportsExternalSemaphoreFuchsia"},
-    {Feature::SupportsFilteringPrecision, "supportsFilteringPrecision"},
     {Feature::SupportsFormatFeatureFlags2, "supportsFormatFeatureFlags2"},
     {Feature::SupportsFragmentShaderInterlockARB, "supportsFragmentShaderInterlockARB"},
     {Feature::SupportsFragmentShaderInterlockNV, "supportsFragmentShaderInterlockNV"},
diff --git a/util/autogen/angle_features_autogen.h b/util/autogen/angle_features_autogen.h
index c510da5..65dfed0 100644
--- a/util/autogen/angle_features_autogen.h
+++ b/util/autogen/angle_features_autogen.h
@@ -293,7 +293,6 @@
     SupportsExternalSemaphoreCapabilities,
     SupportsExternalSemaphoreFd,
     SupportsExternalSemaphoreFuchsia,
-    SupportsFilteringPrecision,
     SupportsFormatFeatureFlags2,
     SupportsFragmentShaderInterlockARB,
     SupportsFragmentShaderInterlockNV,