зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1388565 - Fix WEBGL_compressed_texture_s3tc_srgb driver requirements. - r=daoshengmu
MozReview-Commit-ID: 5k7m1ebzlCx
This commit is contained in:
Родитель
62b3bdf68b
Коммит
cfccc12f18
|
@ -143,8 +143,7 @@ WebGLContext::IsExtensionSupported(WebGLExtensionID ext) const
|
|||
case WebGLExtensionID::WEBGL_compressed_texture_s3tc:
|
||||
return WebGLExtensionCompressedTextureS3TC::IsSupported(this);
|
||||
case WebGLExtensionID::WEBGL_compressed_texture_s3tc_srgb:
|
||||
return WebGLExtensionCompressedTextureS3TC::IsSupported(this) &&
|
||||
gl->IsExtensionSupported(gl::GLContext::EXT_texture_sRGB);
|
||||
return WebGLExtensionCompressedTextureS3TC_SRGB::IsSupported(this);
|
||||
case WebGLExtensionID::WEBGL_debug_renderer_info:
|
||||
return Preferences::GetBool("webgl.enable-debug-renderer-info", false);
|
||||
case WebGLExtensionID::WEBGL_debug_shaders:
|
||||
|
|
|
@ -45,13 +45,13 @@ WebGLExtensionCompressedTextureS3TC::~WebGLExtensionCompressedTextureS3TC()
|
|||
bool
|
||||
WebGLExtensionCompressedTextureS3TC::IsSupported(const WebGLContext* webgl)
|
||||
{
|
||||
gl::GLContext* gl = webgl->GL();
|
||||
if (gl->IsExtensionSupported(gl::GLContext::EXT_texture_compression_s3tc))
|
||||
return true;
|
||||
gl::GLContext* gl = webgl->GL();
|
||||
if (gl->IsExtensionSupported(gl::GLContext::EXT_texture_compression_s3tc))
|
||||
return true;
|
||||
|
||||
return gl->IsExtensionSupported(gl::GLContext::EXT_texture_compression_dxt1) &&
|
||||
gl->IsExtensionSupported(gl::GLContext::ANGLE_texture_compression_dxt3) &&
|
||||
gl->IsExtensionSupported(gl::GLContext::ANGLE_texture_compression_dxt5);
|
||||
return gl->IsExtensionSupported(gl::GLContext::EXT_texture_compression_dxt1) &&
|
||||
gl->IsExtensionSupported(gl::GLContext::ANGLE_texture_compression_dxt3) &&
|
||||
gl->IsExtensionSupported(gl::GLContext::ANGLE_texture_compression_dxt5);
|
||||
}
|
||||
|
||||
IMPL_WEBGL_EXTENSION_GOOP(WebGLExtensionCompressedTextureS3TC, WEBGL_compressed_texture_s3tc)
|
||||
|
|
|
@ -42,6 +42,19 @@ WebGLExtensionCompressedTextureS3TC_SRGB::~WebGLExtensionCompressedTextureS3TC_S
|
|||
{
|
||||
}
|
||||
|
||||
bool
|
||||
WebGLExtensionCompressedTextureS3TC_SRGB::IsSupported(const WebGLContext* webgl)
|
||||
{
|
||||
gl::GLContext* gl = webgl->GL();
|
||||
if (gl->IsGLES())
|
||||
return gl->IsExtensionSupported(gl::GLContext::EXT_texture_compression_s3tc_srgb);
|
||||
|
||||
// Desktop GL is more complicated: It's EXT_texture_sRGB, when
|
||||
// EXT_texture_compression_s3tc is supported, that enables srgb+s3tc.
|
||||
return gl->IsExtensionSupported(gl::GLContext::EXT_texture_sRGB) &&
|
||||
gl->IsExtensionSupported(gl::GLContext::EXT_texture_compression_s3tc);
|
||||
}
|
||||
|
||||
IMPL_WEBGL_EXTENSION_GOOP(WebGLExtensionCompressedTextureS3TC_SRGB, WEBGL_compressed_texture_s3tc_srgb)
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -138,6 +138,8 @@ public:
|
|||
explicit WebGLExtensionCompressedTextureS3TC_SRGB(WebGLContext*);
|
||||
virtual ~WebGLExtensionCompressedTextureS3TC_SRGB();
|
||||
|
||||
static bool IsSupported(const WebGLContext*);
|
||||
|
||||
DECL_WEBGL_EXTENSION_GOOP
|
||||
};
|
||||
|
||||
|
|
|
@ -151,6 +151,7 @@ static const char* const sExtensionNames[] = {
|
|||
"GL_EXT_texture3D",
|
||||
"GL_EXT_texture_compression_dxt1",
|
||||
"GL_EXT_texture_compression_s3tc",
|
||||
"GL_EXT_texture_compression_s3tc_srgb",
|
||||
"GL_EXT_texture_filter_anisotropic",
|
||||
"GL_EXT_texture_format_BGRA8888",
|
||||
"GL_EXT_texture_sRGB",
|
||||
|
@ -1739,6 +1740,13 @@ GLContext::InitExtensions()
|
|||
{
|
||||
MarkExtensionUnsupported(EXT_texture_compression_s3tc);
|
||||
}
|
||||
|
||||
// OSX supports EXT_texture_sRGB in Legacy contexts, but not in Core contexts.
|
||||
// Though EXT_texture_sRGB was included into GL2.1, it *excludes* the interactions
|
||||
// with s3tc. Strictly speaking, you must advertize support for EXT_texture_sRGB
|
||||
// in order to allow for srgb+s3tc on desktop GL. The omission of EXT_texture_sRGB
|
||||
// in OSX Core contexts appears to be a bug.
|
||||
MarkExtensionSupported(EXT_texture_sRGB);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -417,6 +417,7 @@ public:
|
|||
EXT_texture3D,
|
||||
EXT_texture_compression_dxt1,
|
||||
EXT_texture_compression_s3tc,
|
||||
EXT_texture_compression_s3tc_srgb,
|
||||
EXT_texture_filter_anisotropic,
|
||||
EXT_texture_format_BGRA8888,
|
||||
EXT_texture_sRGB,
|
||||
|
|
Загрузка…
Ссылка в новой задаче