Commit 3b82fdcf by Tim Van Patten Committed by Commit Bot

Revert "Add support for GL_CHROMIUM_texture_filtering"

This reverts commit 38780ae3. Reason for revert: Breaks SWANGLE-VK: 05-12 23:42:28.612 22836 22861 D libEGL : dlopen_ext from APK (libEGL_angle.so) success at 0x79f4485a10 05-12 23:42:28.617 22836 22861 D libEGL : dlopen_ext from APK (libGLESv1_CM_angle.so) success at 0x79f4485eb0 05-12 23:42:28.619 22836 22861 D libEGL : dlopen_ext from APK (libGLESv2_angle.so) success at 0x79f4485c60 05-12 23:42:28.624 14223 14223 D StatusBar: disable<e i a s b h r c s > disable2<q i n > 05-12 23:42:28.633 14014 14057 V DisplayPowerController: Brightness [0.19986142] reason changing to: 'automatic', previous reason: 'automatic [ dim ]'. 05-12 23:42:28.635 22836 22861 D vulkan : searching for layers in '/data/app/~~0AfWfBsFEO78tqKlnanevg==/org.khronos.gl_cts-NOs3SGclHqlbcqe-08gHrw==/lib/arm64' 05-12 23:42:28.635 22836 22861 D vulkan : searching for layers in '/data/app/~~0AfWfBsFEO78tqKlnanevg==/org.khronos.gl_cts-NOs3SGclHqlbcqe-08gHrw==/base.apk!/lib/arm64-v8a' 05-12 23:42:28.632 22836 22836 W .khronos.gl_cts: type=1400 audit(0.0:218): avc: denied { ptrace } for scontext=u:r:zygote:s0 tcontext=u:r:untrusted_app_25:s0:c512,c768 tclass=process permissive=0 b/77925912 app=org.khronos.gl_cts 05-12 23:42:28.636 14014 14034 I EventSequenceValidator: Transition from ACTIVITY_LAUNCHED to ACTIVITY_FINISHED 05-12 23:42:28.637 22836 22861 F SwiftShader: external/swiftshader/src/Vulkan/libVulkan.cpp:425 vkCreateInstance TRACE_ASSERT: pCreateInfo->pNext sType = 1000247000 --------- beginning of crash 05-12 23:42:28.637 22836 22861 F libc : Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 22861 (.khronos.gl_cts), pid 22836 (.khronos.gl_cts) Original change's description: > Add support for GL_CHROMIUM_texture_filtering > > Chromium enables a custom extension, GL_CHROMIUM_texture_filtering, when > using SwiftShaderGL, to enable high precision filtering. This change > makes it so ANGLE also handles this same extension when using the > SwiftShaderVK backend, by enabling the new > VK_GOOGLE_sampler_filtering_precision custom extension. > > Bug: b/146423360 > Bug: b/154620295 > Change-Id: I69cafc1ccf5970a3d220ac7e13ec3c8fdd4a9643 > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2185822 > Commit-Queue: Antonio Maiorano <amaiorano@google.com> > Commit-Queue: Jamie Madill <jmadill@chromium.org> > Reviewed-by: Jamie Madill <jmadill@chromium.org> TBR=geofflang@chromium.org,jmadill@chromium.org,amaiorano@google.com # Not skipping CQ checks because original CL landed > 1 day ago. Bug: b/146423360, b/154620295 Change-Id: I803d7a7baac81cf178b59c4bf2789346ec1d3f87 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2197168Reviewed-by: 's avatarTim Van Patten <timvp@google.com> Commit-Queue: Tim Van Patten <timvp@google.com>
parent d0146e07
......@@ -510,11 +510,6 @@ GL_APICALL void GL_APIENTRY glImportSemaphoreZirconHandleANGLE(GLuint memory,
#endif
#endif /* GL_ANGLE_semaphore_fuchsia */
#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 */
// clang-format on
#endif // INCLUDE_GLES2_GL2EXT_ANGLE_H_
......@@ -120,10 +120,6 @@ struct FeaturesVk : FeatureSetBase
"supports_external_memory_fuchsia", FeatureCategory::VulkanFeatures,
"VkDevice supports the VK_FUCHSIA_external_memory extension", &members};
angle::Feature supportsFilteringPrecision = {
"supports_filtering_precision_google", FeatureCategory::VulkanFeatures,
"VkDevice supports the VK_GOOGLE_sampler_filtering_precision extension", &members};
// Whether the VkDevice supports the VK_KHR_external_fence_capabilities extension.
Feature supportsExternalFenceCapabilities = {
"supports_external_fence_capabilities", FeatureCategory::VulkanFeatures,
......
......@@ -1004,7 +1004,6 @@ const ExtensionInfoMap &GetExtensionInfoMap()
map["GL_ANGLE_texture_multisample"] = enableableExtension(&Extensions::textureMultisample);
map["GL_ANGLE_multi_draw"] = enableableExtension(&Extensions::multiDraw);
map["GL_ANGLE_provoking_vertex"] = enableableExtension(&Extensions::provokingVertex);
map["GL_CHROMIUM_texture_filtering_hint"] = enableableExtension(&Extensions::textureFilteringCHROMIUM);
map["GL_CHROMIUM_lose_context"] = enableableExtension(&Extensions::loseContextCHROMIUM);
map["GL_ANGLE_texture_external_update"] = enableableExtension(&Extensions::textureExternalUpdateANGLE);
map["GL_ANGLE_base_vertex_base_instance"] = enableableExtension(&Extensions::baseVertexBaseInstance);
......
......@@ -585,9 +585,6 @@ struct Extensions
// GL_ANGLE_provoking_vertex
bool provokingVertex = false;
// GL_CHROMIUM_texture_filtering_hint
bool textureFilteringCHROMIUM = false;
// GL_CHROMIUM_lose_context
bool loseContextCHROMIUM = false;
......
......@@ -4782,9 +4782,6 @@ void Context::hint(GLenum target, GLenum mode)
case GL_FOG_HINT:
mState.gles1().setHint(target, mode);
break;
case GL_TEXTURE_FILTERING_HINT_CHROMIUM:
mState.setTextureFilteringHint(mode);
break;
default:
UNREACHABLE();
return;
......
......@@ -352,7 +352,6 @@ State::State(const State *shareContextState,
mStencilBackRef(0),
mLineWidth(0),
mGenerateMipmapHint(GL_NONE),
mTextureFilteringHint(GL_NONE),
mFragmentShaderDerivativeHint(GL_NONE),
mBindGeneratesResource(bindGeneratesResource),
mClientArraysEnabled(clientArraysEnabled),
......@@ -420,7 +419,6 @@ void State::initialize(Context *context)
mSampleMaskValues.fill(~GLbitfield(0));
mGenerateMipmapHint = GL_DONT_CARE;
mTextureFilteringHint = GL_DONT_CARE;
mFragmentShaderDerivativeHint = GL_DONT_CARE;
mLineWidth = 1.0f;
......@@ -1430,18 +1428,6 @@ void State::setGenerateMipmapHint(GLenum hint)
mDirtyBits.set(DIRTY_BIT_EXTENDED);
}
void State::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.
}
GLenum State::getTextureFilteringHint() const
{
return mTextureFilteringHint;
}
void State::setFragmentShaderDerivativeHint(GLenum hint)
{
mFragmentShaderDerivativeHint = hint;
......@@ -2491,9 +2477,6 @@ angle::Result State::getIntegerv(const Context *context, GLenum pname, GLint *pa
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;
......
......@@ -255,8 +255,6 @@ class State : angle::NonCopyable
// Hint setters
void setGenerateMipmapHint(GLenum hint);
void setTextureFilteringHint(GLenum hint);
GLenum getTextureFilteringHint() const;
void setFragmentShaderDerivativeHint(GLenum hint);
// GL_CHROMIUM_bind_generates_resource
......@@ -897,7 +895,6 @@ class State : angle::NonCopyable
GLfloat mLineWidth;
GLenum mGenerateMipmapHint;
GLenum mTextureFilteringHint;
GLenum mFragmentShaderDerivativeHint;
const bool mBindGeneratesResource;
......
......@@ -2973,7 +2973,6 @@ bool GetQueryParameterInfo(const State &glState,
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:
......
......@@ -87,7 +87,6 @@ _vulkan_backend_sources = [
"vk_format_table_autogen.cpp",
"vk_format_utils.cpp",
"vk_format_utils.h",
"vk_google_filtering_precision.h",
"vk_helpers.cpp",
"vk_helpers.h",
"vk_internal_shaders_autogen.cpp",
......
......@@ -32,7 +32,6 @@
#include "libANGLE/renderer/vulkan/VertexArrayVk.h"
#include "libANGLE/renderer/vulkan/vk_caps_utils.h"
#include "libANGLE/renderer/vulkan/vk_format_utils.h"
#include "libANGLE/renderer/vulkan/vk_google_filtering_precision.h"
#include "libANGLE/trace.h"
#include "platform/Platform.h"
......@@ -702,17 +701,6 @@ angle::Result RendererVk::initialize(DisplayVk *displayVk,
enabledInstanceExtensions.empty() ? nullptr : enabledInstanceExtensions.data();
instanceInfo.enabledLayerCount = static_cast<uint32_t>(enabledInstanceLayerNames.size());
instanceInfo.ppEnabledLayerNames = enabledInstanceLayerNames.data();
// Disable certain validation features, specifically:
// * Unique handles so that 'pNext' isn't cleared for pre-release or custom extensions
VkValidationFeatureDisableEXT disabledFeatures[] = {
VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT};
VkValidationFeaturesEXT validationFeatures = {};
validationFeatures.sType = VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT;
validationFeatures.disabledValidationFeatureCount = 1;
validationFeatures.pDisabledValidationFeatures = disabledFeatures;
vk::AddToPNextChain(&instanceInfo, &validationFeatures);
ANGLE_VK_TRY(displayVk, vkCreateInstance(&instanceInfo, nullptr, &mInstance));
#if defined(ANGLE_SHARED_LIBVULKAN)
// Load volk if we are linking dynamically
......@@ -1606,10 +1594,6 @@ void RendererVk::initFeatures(DisplayVk *displayVk, const ExtensionNameList &dev
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, supportsExternalFenceCapabilities,
ExtensionFound(VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME, deviceExtensionNames));
......
......@@ -18,7 +18,6 @@
#include "libANGLE/renderer/vulkan/RendererVk.h"
#include "libANGLE/renderer/vulkan/VertexArrayVk.h"
#include "libANGLE/renderer/vulkan/vk_format_utils.h"
#include "libANGLE/renderer/vulkan/vk_google_filtering_precision.h"
#include "libANGLE/renderer/vulkan/vk_helpers.h"
#include <type_traits>
......@@ -1775,7 +1774,7 @@ void SamplerDesc::update(const gl::SamplerState &samplerState, bool stencilMode)
mReserved = 0;
}
angle::Result SamplerDesc::init(ContextVk *contextVk, vk::Sampler *sampler) const
VkSamplerCreateInfo SamplerDesc::unpack(ContextVk *contextVk) const
{
const gl::Extensions &extensions = contextVk->getExtensions();
......@@ -1800,23 +1799,7 @@ angle::Result SamplerDesc::init(ContextVk *contextVk, vk::Sampler *sampler) cons
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.textureFilteringCHROMIUM);
filteringInfo.sType = VK_STRUCTURE_TYPE_SAMPLER_FILTERING_PRECISION_GOOGLE;
filteringInfo.samplerFilteringPrecisionMode =
VK_SAMPLER_FILTERING_PRECISION_MODE_HIGH_GOOGLE;
vk::AddToPNextChain(&createInfo, &filteringInfo);
}
ANGLE_VK_TRY(contextVk, sampler->init(contextVk->getDevice(), createInfo));
return angle::Result::Continue;
return createInfo;
}
size_t SamplerDesc::hash() const
......@@ -2175,8 +2158,10 @@ angle::Result SamplerCache::getSampler(ContextVk *contextVk,
return angle::Result::Continue;
}
VkSamplerCreateInfo createInfo = desc.unpack(contextVk);
vk::Sampler sampler;
ANGLE_TRY(desc.init(contextVk, &sampler));
ANGLE_VK_TRY(contextVk, sampler.init(contextVk->getDevice(), createInfo));
auto insertedItem = mPayload.emplace(desc, vk::RefCountedSampler(std::move(sampler)));
vk::RefCountedSampler &insertedSampler = insertedItem.first->second;
......
......@@ -609,7 +609,7 @@ class SamplerDesc final
void update(const gl::SamplerState &samplerState, bool stencilMode);
void reset();
angle::Result init(ContextVk *contextVk, vk::Sampler *sampler) const;
VkSamplerCreateInfo unpack(ContextVk *contextVk) const;
size_t hash() const;
bool operator==(const SamplerDesc &other) const;
......
......@@ -183,8 +183,6 @@ void RendererVk::ensureCapsInitialized() const
mNativeExtensions.gpuShader5EXT = vk::CanSupportGPUShader5EXT(mPhysicalDeviceFeatures);
mNativeExtensions.textureFilteringCHROMIUM = getFeatures().supportsFilteringPrecision.enabled;
// https://vulkan.lunarg.com/doc/view/1.0.30.0/linux/vkspec.chunked/ch31s02.html
mNativeCaps.maxElementIndex = std::numeric_limits<GLuint>::max() - 1;
mNativeCaps.max3DTextureSize = LimitToInt(limitsVk.maxImageDimension3D);
......
// 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.
#include "libANGLE/renderer/vulkan/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_precisions 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;
......@@ -5059,14 +5059,6 @@ bool ValidateHint(const Context *context, GLenum target, GLenum mode)
case GL_GENERATE_MIPMAP_HINT:
break;
case GL_TEXTURE_FILTERING_HINT_CHROMIUM:
if (!context->getExtensions().textureFilteringCHROMIUM)
{
context->validationError(GL_INVALID_ENUM, kEnumNotSupported);
return false;
}
break;
case GL_FRAGMENT_SHADER_DERIVATIVE_HINT:
if (context->getClientVersion() < ES_3_0 &&
!context->getExtensions().standardDerivativesOES)
......
......@@ -118,7 +118,6 @@ angle_end2end_tests_sources = [
"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",
......
//
// 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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment