Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(93)

Unified Diff: gpu/command_buffer/service/texture_manager.cc

Issue 2480203002: ui: Cleanup class/struct forward declarations (Closed)
Patch Set: Sync CL to position 430550 Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gpu/command_buffer/service/gpu_preferences.h ('k') | gpu/vulkan/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gpu/command_buffer/service/texture_manager.cc
diff --git a/gpu/command_buffer/service/texture_manager.cc b/gpu/command_buffer/service/texture_manager.cc
index 04ef8c10a981df5b4d57098708aaa15b92ca2620..dd7d59c5474322fc89ea5fda5158825e06723381 100644
--- a/gpu/command_buffer/service/texture_manager.cc
+++ b/gpu/command_buffer/service/texture_manager.cc
@@ -137,33 +137,6 @@ class FormatTypeValidator {
{GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE},
{GL_LUMINANCE, GL_LUMINANCE, GL_UNSIGNED_BYTE},
{GL_ALPHA, GL_ALPHA, GL_UNSIGNED_BYTE},
- // Exposed by GL_OES_texture_float and GL_OES_texture_half_float
- {GL_RGB, GL_RGB, GL_FLOAT},
- {GL_RGBA, GL_RGBA, GL_FLOAT},
- {GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_FLOAT},
- {GL_LUMINANCE, GL_LUMINANCE, GL_FLOAT},
- {GL_ALPHA, GL_ALPHA, GL_FLOAT},
- {GL_RGB, GL_RGB, GL_HALF_FLOAT_OES},
- {GL_RGBA, GL_RGBA, GL_HALF_FLOAT_OES},
- {GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_HALF_FLOAT_OES},
- {GL_LUMINANCE, GL_LUMINANCE, GL_HALF_FLOAT_OES},
- {GL_ALPHA, GL_ALPHA, GL_HALF_FLOAT_OES},
- // Exposed by GL_ANGLE_depth_texture
- {GL_DEPTH_COMPONENT, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT},
- {GL_DEPTH_COMPONENT, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT},
- {GL_DEPTH_STENCIL, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8},
- // Exposed by GL_EXT_sRGB
- {GL_SRGB, GL_SRGB, GL_UNSIGNED_BYTE},
- {GL_SRGB_ALPHA, GL_SRGB_ALPHA, GL_UNSIGNED_BYTE},
- // Exposed by GL_EXT_texture_format_BGRA8888
- {GL_BGRA_EXT, GL_BGRA_EXT, GL_UNSIGNED_BYTE},
- // Exposed by GL_EXT_texture_rg
- {GL_RED, GL_RED, GL_UNSIGNED_BYTE},
- {GL_RG, GL_RG, GL_UNSIGNED_BYTE},
- {GL_RED, GL_RED, GL_FLOAT},
- {GL_RG, GL_RG, GL_FLOAT},
- {GL_RED, GL_RED, GL_HALF_FLOAT_OES},
- {GL_RG, GL_RG, GL_HALF_FLOAT_OES},
// ES3.
{GL_R8, GL_RED, GL_UNSIGNED_BYTE},
@@ -234,19 +207,72 @@ class FormatTypeValidator {
{GL_DEPTH24_STENCIL8, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8},
{GL_DEPTH32F_STENCIL8, GL_DEPTH_STENCIL,
GL_FLOAT_32_UNSIGNED_INT_24_8_REV},
- // Exposed by GL_APPLE_texture_format_BGRA8888
+
+ // Exposed by GL_APPLE_texture_format_BGRA8888 for TexStorage*
+ // TODO(kainino): this actually exposes it for (Copy)TexImage* as well,
+ // which is incorrect. crbug.com/663086
{GL_BGRA8_EXT, GL_BGRA_EXT, GL_UNSIGNED_BYTE},
+
+ // Exposed by GL_APPLE_texture_format_BGRA8888 and
+ // GL_EXT_texture_format_BGRA8888
+ {GL_BGRA_EXT, GL_BGRA_EXT, GL_UNSIGNED_BYTE},
+ };
+
+ static const FormatType kSupportedFormatTypesES2Only[] = {
+ // Exposed by GL_OES_texture_float and GL_OES_texture_half_float
+ {GL_RGB, GL_RGB, GL_FLOAT},
+ {GL_RGBA, GL_RGBA, GL_FLOAT},
+ {GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_FLOAT},
+ {GL_LUMINANCE, GL_LUMINANCE, GL_FLOAT},
+ {GL_ALPHA, GL_ALPHA, GL_FLOAT},
+ {GL_RGB, GL_RGB, GL_HALF_FLOAT_OES},
+ {GL_RGBA, GL_RGBA, GL_HALF_FLOAT_OES},
+ {GL_LUMINANCE_ALPHA, GL_LUMINANCE_ALPHA, GL_HALF_FLOAT_OES},
+ {GL_LUMINANCE, GL_LUMINANCE, GL_HALF_FLOAT_OES},
+ {GL_ALPHA, GL_ALPHA, GL_HALF_FLOAT_OES},
+
+ // Exposed by GL_ANGLE_depth_texture
+ {GL_DEPTH_COMPONENT, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT},
+ {GL_DEPTH_COMPONENT, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT},
+ {GL_DEPTH_STENCIL, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8},
+
+ // Exposed by GL_EXT_sRGB
+ {GL_SRGB, GL_SRGB, GL_UNSIGNED_BYTE},
+ {GL_SRGB_ALPHA, GL_SRGB_ALPHA, GL_UNSIGNED_BYTE},
+
+ // Exposed by GL_EXT_texture_rg
+ {GL_RED, GL_RED, GL_UNSIGNED_BYTE},
+ {GL_RG, GL_RG, GL_UNSIGNED_BYTE},
+ {GL_RED, GL_RED, GL_FLOAT},
+ {GL_RG, GL_RG, GL_FLOAT},
+ {GL_RED, GL_RED, GL_HALF_FLOAT_OES},
+ {GL_RG, GL_RG, GL_HALF_FLOAT_OES},
};
for (size_t ii = 0; ii < arraysize(kSupportedFormatTypes); ++ii) {
supported_combinations_.insert(kSupportedFormatTypes[ii]);
}
+
+ for (size_t ii = 0; ii < arraysize(kSupportedFormatTypesES2Only); ++ii) {
+ supported_combinations_es2_only_.insert(kSupportedFormatTypesES2Only[ii]);
+ }
}
// This may be accessed from multiple threads.
- bool IsValid(GLenum internal_format, GLenum format, GLenum type) const {
+ bool IsValid(ContextType context_type, GLenum internal_format, GLenum format,
+ GLenum type) const {
FormatType query = { internal_format, format, type };
- return supported_combinations_.find(query) != supported_combinations_.end();
+ if (supported_combinations_.find(query) != supported_combinations_.end()) {
+ return true;
+ }
+ if (context_type == CONTEXT_TYPE_OPENGLES2 ||
+ context_type == CONTEXT_TYPE_WEBGL1) {
+ if (supported_combinations_es2_only_.find(query) !=
+ supported_combinations_es2_only_.end()) {
+ return true;
+ }
+ }
+ return false;
}
private:
@@ -271,6 +297,7 @@ class FormatTypeValidator {
// This class needs to be thread safe, so once supported_combinations_
// are initialized in the constructor, it should never be modified later.
std::set<FormatType, FormatTypeCompare> supported_combinations_;
+ std::set<FormatType, FormatTypeCompare> supported_combinations_es2_only_;
};
static const Texture::CompatibilitySwizzle kSwizzledFormats[] = {
@@ -2304,7 +2331,8 @@ bool TextureManager::ValidateTextureParameters(
msg.c_str());
return false;
}
- if (!g_format_type_validator.Get().IsValid(internal_format, format, type)) {
+ if (!g_format_type_validator.Get().IsValid(feature_info_->context_type(),
+ internal_format, format, type)) {
std::string msg = std::string(
"invalid internalformat/format/type combination ") +
GLES2Util::GetStringEnum(internal_format) + std::string("/") +
« no previous file with comments | « gpu/command_buffer/service/gpu_preferences.h ('k') | gpu/vulkan/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698