зеркало из https://github.com/mozilla/gecko-dev.git
Backed out 8 changesets (bug 1656813) for reftest failures on bipbop_300_215kbps.mp4.lastframe.html.
Backed out changeset 92e0209dc7f1 (bug 1656813) Backed out changeset 1b3842f2ca27 (bug 1656813) Backed out changeset efed1b35fe47 (bug 1656813) Backed out changeset d1c313ebe358 (bug 1656813) Backed out changeset 4d6a3bf61345 (bug 1656813) Backed out changeset 060254b3ad73 (bug 1656813) Backed out changeset 37e5e5e6593a (bug 1656813) Backed out changeset 12c0e9554a5f (bug 1656813)
This commit is contained in:
Родитель
abfa3262b8
Коммит
38cd82e194
|
@ -1883,7 +1883,6 @@ dependencies = [
|
|||
"mozglue-static",
|
||||
"mozilla-central-workspace-hack",
|
||||
"stylo_tests",
|
||||
"swgl",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -1896,7 +1895,6 @@ dependencies = [
|
|||
"mozglue-static",
|
||||
"mp4parse-gtest",
|
||||
"nsstring-gtest",
|
||||
"swgl",
|
||||
"xpcom-gtest",
|
||||
]
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
skip-if(Android) fuzzy-if(OSX,0-68,0-76800) fuzzy-if(winWidget,0-62,0-76799) fuzzy-if(gtkWidget&&layersGPUAccelerated,0-70,0-600) HTTP(..) == short.mp4.firstframe.html short.mp4.firstframe-ref.html
|
||||
skip-if(Android) fuzzy-if(OSX,0-60,0-76797) fuzzy-if(winWidget,0-60,0-76797) fuzzy-if(gtkWidget&&layersGPUAccelerated,0-60,0-1800) HTTP(..) == short.mp4.lastframe.html short.mp4.lastframe-ref.html
|
||||
skip-if(Android) skip-if(winWidget) fuzzy-if(gtkWidget&&layersGPUAccelerated,0-56,0-4281) fuzzy-if(OSX,55-55,4173-4173) HTTP(..) == bipbop_300_215kbps.mp4.lastframe.html bipbop_300_215kbps.mp4.lastframe-ref.html
|
||||
skip-if(Android) skip-if(winWidget) fuzzy-if(gtkWidget&&layersGPUAccelerated,0-55,0-4281) fuzzy-if(OSX,55-80,4173-4417) HTTP(..) == bipbop_300_215kbps.mp4.lastframe.html bipbop_300_215kbps.mp4.lastframe-ref.html
|
||||
skip-if(Android) fuzzy-if(OSX,0-25,0-175921) fuzzy-if(winWidget,0-71,0-179198) fuzzy-if((/^Windows\x20NT\x2010\.0/.test(http.oscpu))&&(/^aarch64-msvc/.test(xulRuntime.XPCOMABI)),0-255,0-179500) HTTP(..) == gizmo.mp4.seek.html gizmo.mp4.55thframe-ref.html
|
||||
skip-if(Android) fuzzy-if((/^Windows\x20NT\x2010\.0/.test(http.oscpu))&&(/^aarch64-msvc/.test(xulRuntime.XPCOMABI)),0-136,0-427680) == vtt_update_display_after_removed_cue.html vtt_update_display_after_removed_cue_ref.html
|
||||
skip-if(Android) fuzzy-if(winWidget,0-170,0-170) == vtt_overlapping_time.html vtt_overlapping_time-ref.html
|
||||
|
|
|
@ -3,11 +3,11 @@
|
|||
# First make sure that we are actually drawing scrollbars
|
||||
skip-if(!asyncPan) pref(apz.allow_zooming,true) != async-scrollbar-1-v.html about:blank
|
||||
skip-if(!asyncPan) pref(apz.allow_zooming,true) != async-scrollbar-1-v-ref.html about:blank
|
||||
fuzzy-if(Android,0-1,0-2) fuzzy-if(webrender&>kWidget,7-8,24-32) fuzzy-if(webrender&&cocoaWidget,23-23,44-44) skip-if(!asyncPan) pref(apz.allow_zooming,true) == async-scrollbar-1-v.html async-scrollbar-1-v-ref.html
|
||||
fuzzy-if(Android,0-4,0-5) fuzzy-if(webrender&>kWidget,28-28,30-32) fuzzy-if(webrender&&cocoaWidget,22-22,44-44) skip-if(!asyncPan) pref(apz.allow_zooming,true) == async-scrollbar-1-h.html async-scrollbar-1-h-ref.html
|
||||
fuzzy-if(Android,0-6,0-6) fuzzy-if(webrender&>kWidget,2-2,19-20) fuzzy-if(webrender&&cocoaWidget,18-18,79-79) skip-if(!asyncPan) pref(apz.allow_zooming,true) == async-scrollbar-1-vh.html async-scrollbar-1-vh-ref.html
|
||||
fuzzy-if(Android,0-1,0-2) fuzzy-if(webrender&>kWidget,7-8,24-32) fuzzy-if(webrender&&cocoaWidget,23-23,44-44) skip-if(!asyncPan) pref(apz.allow_zooming,true) == async-scrollbar-1-v-rtl.html async-scrollbar-1-v-rtl-ref.html
|
||||
fuzzy-if(Android,0-14,0-5) fuzzy-if(webrender&>kWidget,28-28,30-32) fuzzy-if(webrender&&cocoaWidget,22-22,44-44) skip-if(!asyncPan) pref(apz.allow_zooming,true) == async-scrollbar-1-h-rtl.html async-scrollbar-1-h-rtl-ref.html
|
||||
fuzzy-if(Android,0-1,0-2) fuzzy-if(webrender&>kWidget,7-7,24-24) fuzzy-if(webrender&&cocoaWidget,23-23,44-44) skip-if(!asyncPan) pref(apz.allow_zooming,true) == async-scrollbar-1-v.html async-scrollbar-1-v-ref.html
|
||||
fuzzy-if(Android,0-4,0-5) fuzzy-if(webrender&>kWidget,28-28,32-32) fuzzy-if(webrender&&cocoaWidget,22-22,44-44) skip-if(!asyncPan) pref(apz.allow_zooming,true) == async-scrollbar-1-h.html async-scrollbar-1-h-ref.html
|
||||
fuzzy-if(Android,0-6,0-6) fuzzy-if(webrender&>kWidget,2-2,19-19) fuzzy-if(webrender&&cocoaWidget,18-18,79-79) skip-if(!asyncPan) pref(apz.allow_zooming,true) == async-scrollbar-1-vh.html async-scrollbar-1-vh-ref.html
|
||||
fuzzy-if(Android,0-1,0-2) fuzzy-if(webrender&>kWidget,7-7,24-24) fuzzy-if(webrender&&cocoaWidget,23-23,44-44) skip-if(!asyncPan) pref(apz.allow_zooming,true) == async-scrollbar-1-v-rtl.html async-scrollbar-1-v-rtl-ref.html
|
||||
fuzzy-if(Android,0-14,0-5) fuzzy-if(webrender&>kWidget,28-28,32-32) fuzzy-if(webrender&&cocoaWidget,22-22,44-44) skip-if(!asyncPan) pref(apz.allow_zooming,true) == async-scrollbar-1-h-rtl.html async-scrollbar-1-h-rtl-ref.html
|
||||
fuzzy-if(Android,0-8,0-8) fuzzy-if(webrender&>kWidget,13-13,32-32) fuzzy-if(webrender&&cocoaWidget,18-18,43-43) skip-if(!asyncPan) pref(apz.allow_zooming,true) == async-scrollbar-1-vh-rtl.html async-scrollbar-1-vh-rtl-ref.html
|
||||
|
||||
# Different async zoom levels. Since the scrollthumb gets async-scaled in the
|
||||
|
|
|
@ -14,7 +14,7 @@ fuzzy(0-100,0-30) == 1149923.html 1149923-ref.html # use fuzzy due to few distor
|
|||
== 1444904.html 1444904-ref.html
|
||||
fuzzy-if(winWidget&&webrender,90-95,1000-1100) == 1451168.html 1451168-ref.html
|
||||
== 1461313.html 1461313-ref.html
|
||||
fuzzy(5-32,21908-26621) fuzzy-if(webrender,4-5,868-1039) == 1463802.html 1463802-ref.html
|
||||
fuzzy(5-32,21908-26621) fuzzy-if(webrender,5-5,868-1039) == 1463802.html 1463802-ref.html
|
||||
fuzzy(0-11,0-4) == 1474722.html 1474722-ref.html
|
||||
== 1501195.html 1501195-ref.html
|
||||
== 1519754.html 1519754-ref.html
|
||||
|
|
|
@ -398,26 +398,27 @@ struct Program {
|
|||
FragmentShaderImpl* frag_impl = nullptr;
|
||||
bool deleted = false;
|
||||
|
||||
~Program() { delete impl; }
|
||||
~Program() {
|
||||
delete impl;
|
||||
}
|
||||
};
|
||||
|
||||
// clang-format off
|
||||
// for GL defines to fully expand
|
||||
#define CONCAT_KEY(prefix, x, y, z, w, ...) prefix##x##y##z##w
|
||||
#define BLEND_KEY(...) CONCAT_KEY(BLEND_, __VA_ARGS__, 0, 0)
|
||||
#define FOR_EACH_BLEND_KEY(macro) \
|
||||
macro(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA) \
|
||||
macro(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE) \
|
||||
macro(GL_ONE, GL_ONE_MINUS_SRC_ALPHA, 0, 0) \
|
||||
macro(GL_ZERO, GL_ONE_MINUS_SRC_COLOR, 0, 0) \
|
||||
macro(GL_ZERO, GL_ONE_MINUS_SRC_COLOR, GL_ZERO, GL_ONE) \
|
||||
macro(GL_ZERO, GL_ONE_MINUS_SRC_ALPHA, 0, 0) \
|
||||
macro(GL_ZERO, GL_SRC_COLOR, 0, 0) macro(GL_ONE, GL_ONE, 0, 0) \
|
||||
macro(GL_ZERO, GL_SRC_COLOR, 0, 0) \
|
||||
macro(GL_ONE, GL_ONE, 0, 0) \
|
||||
macro(GL_ONE, GL_ONE, GL_ONE, GL_ONE_MINUS_SRC_ALPHA) \
|
||||
macro(GL_ONE, GL_ZERO, 0, 0) \
|
||||
macro(GL_ONE_MINUS_DST_ALPHA, GL_ONE, GL_ZERO, GL_ONE) \
|
||||
macro(GL_CONSTANT_COLOR, GL_ONE_MINUS_SRC_COLOR, 0, 0) \
|
||||
macro(GL_ONE, GL_ONE_MINUS_SRC1_COLOR, 0, 0)
|
||||
// clang-format on
|
||||
|
||||
#define DEFINE_BLEND_KEY(...) BLEND_KEY(__VA_ARGS__),
|
||||
enum BlendKey : uint8_t {
|
||||
|
@ -487,10 +488,8 @@ struct ObjectStore {
|
|||
|
||||
O* find(size_t i) const { return i < size ? objects[i] : nullptr; }
|
||||
|
||||
template <typename T>
|
||||
void on_erase(T*, ...) {}
|
||||
template <typename T>
|
||||
void on_erase(T* o, decltype(&T::on_erase)) {
|
||||
template <typename T> void on_erase(T*, ...) {}
|
||||
template <typename T> void on_erase(T* o, decltype(&T::on_erase)) {
|
||||
o->on_erase();
|
||||
}
|
||||
|
||||
|
@ -657,12 +656,9 @@ static inline void init_sampler(S* s, Texture& t) {
|
|||
s->height = t.height;
|
||||
s->stride = t.stride();
|
||||
int bpp = t.bpp();
|
||||
if (bpp >= 4)
|
||||
s->stride /= 4;
|
||||
else if (bpp == 2)
|
||||
s->stride /= 2;
|
||||
else
|
||||
assert(bpp == 1);
|
||||
if (bpp >= 4) s->stride /= 4;
|
||||
else if (bpp == 2) s->stride /= 2;
|
||||
else assert(bpp == 1);
|
||||
// Use uint32_t* for easier sampling, but need to cast to uint8_t* or
|
||||
// uint16_t* for formats with bpp < 4.
|
||||
s->buf = (uint32_t*)t.buf;
|
||||
|
@ -776,11 +772,13 @@ void load_attrib(T& attrib, VertexAttrib& va, uint32_t start, int instance,
|
|||
if (!count) return;
|
||||
assert(count == 3 || count == 4);
|
||||
char* src = (char*)va.buf + va.stride * start + va.offset;
|
||||
attrib = (T){load_attrib_scalar<scalar_type>(va, src),
|
||||
attrib = (T){
|
||||
load_attrib_scalar<scalar_type>(va, src),
|
||||
load_attrib_scalar<scalar_type>(va, src + va.stride),
|
||||
load_attrib_scalar<scalar_type>(
|
||||
va, src + va.stride * 2 + (count > 3 ? va.stride : 0)),
|
||||
load_attrib_scalar<scalar_type>(va, src + va.stride * 2)};
|
||||
load_attrib_scalar<scalar_type>(va, src + va.stride * 2 +
|
||||
(count > 3 ? va.stride : 0)),
|
||||
load_attrib_scalar<scalar_type>(va, src + va.stride * 2)
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1336,10 +1334,10 @@ void TexStorage3D(GLenum target, GLint levels, GLenum internal_format,
|
|||
t.allocate(changed);
|
||||
}
|
||||
|
||||
static void set_tex_storage(Texture& t, GLenum internal_format, GLsizei width,
|
||||
GLsizei height, void* buf = nullptr,
|
||||
GLsizei stride = 0, GLsizei min_width = 0,
|
||||
GLsizei min_height = 0) {
|
||||
static void set_tex_storage(Texture& t, GLenum internal_format,
|
||||
GLsizei width, GLsizei height,
|
||||
void* buf = nullptr, GLsizei stride = 0,
|
||||
GLsizei min_width = 0, GLsizei min_height = 0) {
|
||||
internal_format = remap_internal_format(internal_format);
|
||||
bool changed = false;
|
||||
if (t.width != width || t.height != height || t.depth != 0 ||
|
||||
|
@ -1377,7 +1375,7 @@ GLenum internal_format_for_data(GLenum format, GLenum ty) {
|
|||
if (format == GL_RED && ty == GL_UNSIGNED_BYTE) {
|
||||
return GL_R8;
|
||||
} else if ((format == GL_RGBA || format == GL_BGRA) &&
|
||||
(ty == GL_UNSIGNED_BYTE || ty == GL_UNSIGNED_INT_8_8_8_8_REV)) {
|
||||
ty == GL_UNSIGNED_BYTE) {
|
||||
return GL_RGBA8;
|
||||
} else if (format == GL_RGBA && ty == GL_FLOAT) {
|
||||
return GL_RGBA32F;
|
||||
|
@ -1435,10 +1433,7 @@ static void* get_pixel_unpack_buffer_data(void* data) {
|
|||
void TexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
||||
GLsizei width, GLsizei height, GLenum format, GLenum ty,
|
||||
void* data) {
|
||||
if (level != 0) {
|
||||
assert(false);
|
||||
return;
|
||||
}
|
||||
if (level != 0) { assert(false); return; }
|
||||
data = get_pixel_unpack_buffer_data(data);
|
||||
if (!data) return;
|
||||
Texture& t = ctx->textures[ctx->get_binding(target)];
|
||||
|
@ -1469,10 +1464,7 @@ void TexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
|||
void TexImage2D(GLenum target, GLint level, GLint internal_format,
|
||||
GLsizei width, GLsizei height, GLint border, GLenum format,
|
||||
GLenum ty, void* data) {
|
||||
if (level != 0) {
|
||||
assert(false);
|
||||
return;
|
||||
}
|
||||
if (level != 0) { assert(false); return; }
|
||||
assert(border == 0);
|
||||
TexStorage2D(target, 1, internal_format, width, height);
|
||||
TexSubImage2D(target, 0, 0, 0, width, height, format, ty, data);
|
||||
|
@ -1481,10 +1473,7 @@ void TexImage2D(GLenum target, GLint level, GLint internal_format,
|
|||
void TexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
||||
GLint zoffset, GLsizei width, GLsizei height, GLsizei depth,
|
||||
GLenum format, GLenum ty, void* data) {
|
||||
if (level != 0) {
|
||||
assert(false);
|
||||
return;
|
||||
}
|
||||
if (level != 0) { assert(false); return; }
|
||||
data = get_pixel_unpack_buffer_data(data);
|
||||
if (!data) return;
|
||||
Texture& t = ctx->textures[ctx->get_binding(target)];
|
||||
|
@ -1493,7 +1482,8 @@ void TexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
|||
GLsizei row_length =
|
||||
ctx->unpack_row_length != 0 ? ctx->unpack_row_length : width;
|
||||
if (format == GL_BGRA) {
|
||||
assert(ty == GL_UNSIGNED_BYTE || ty == GL_UNSIGNED_INT_8_8_8_8_REV);
|
||||
assert(ty == GL_UNSIGNED_BYTE ||
|
||||
ty == GL_UNSIGNED_INT_8_8_8_8_REV);
|
||||
assert(t.internal_format == GL_RGBA8);
|
||||
} else {
|
||||
assert(t.internal_format == internal_format_for_data(format, ty));
|
||||
|
@ -1522,10 +1512,7 @@ void TexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset,
|
|||
void TexImage3D(GLenum target, GLint level, GLint internal_format,
|
||||
GLsizei width, GLsizei height, GLsizei depth, GLint border,
|
||||
GLenum format, GLenum ty, void* data) {
|
||||
if (level != 0) {
|
||||
assert(false);
|
||||
return;
|
||||
}
|
||||
if (level != 0) { assert(false); return; }
|
||||
assert(border == 0);
|
||||
TexStorage3D(target, 1, internal_format, width, height, depth);
|
||||
TexSubImage3D(target, 0, 0, 0, 0, width, height, depth, format, ty, data);
|
||||
|
@ -1705,8 +1692,7 @@ void VertexAttribDivisor(GLuint index, GLuint divisor) {
|
|||
va.divisor = divisor;
|
||||
}
|
||||
|
||||
void BufferData(GLenum target, GLsizeiptr size, void* data,
|
||||
UNUSED GLenum usage) {
|
||||
void BufferData(GLenum target, GLsizeiptr size, void* data, UNUSED GLenum usage) {
|
||||
Buffer& b = ctx->buffers[ctx->get_binding(target)];
|
||||
if (b.allocate(size)) {
|
||||
ctx->validate_vertex_array = true;
|
||||
|
@ -1839,7 +1825,9 @@ static inline uint32_t clear_chunk(uint16_t value) {
|
|||
return uint32_t(value) | (uint32_t(value) << 16);
|
||||
}
|
||||
|
||||
static inline uint32_t clear_chunk(uint32_t value) { return value; }
|
||||
static inline uint32_t clear_chunk(uint32_t value) {
|
||||
return value;
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
static inline void clear_row(T* buf, size_t len, T value, uint32_t chunk) {
|
||||
|
@ -1942,8 +1930,8 @@ static void force_clear(Texture& t, const IntRect* skip = nullptr) {
|
|||
int count = __builtin_ctz(mask);
|
||||
if (count > 0) {
|
||||
clear_buffer<T>(t, t.clear_val, 0,
|
||||
IntRect{0, start, t.width, start + count}, skip_start,
|
||||
skip_end);
|
||||
IntRect{0, start, t.width, start + count},
|
||||
skip_start, skip_end);
|
||||
t.delay_clear -= count;
|
||||
start += count;
|
||||
mask >>= count;
|
||||
|
@ -1955,8 +1943,8 @@ static void force_clear(Texture& t, const IntRect* skip = nullptr) {
|
|||
int count = (i + 1) * 32 - start;
|
||||
if (count > 0) {
|
||||
clear_buffer<T>(t, t.clear_val, 0,
|
||||
IntRect{0, start, t.width, start + count}, skip_start,
|
||||
skip_end);
|
||||
IntRect{0, start, t.width, start + count},
|
||||
skip_start, skip_end);
|
||||
t.delay_clear -= count;
|
||||
}
|
||||
}
|
||||
|
@ -2049,8 +2037,8 @@ void SetTextureBuffer(GLuint texid, GLenum internal_format, GLsizei width,
|
|||
GLsizei height, GLsizei stride, void* buf,
|
||||
GLsizei min_width, GLsizei min_height) {
|
||||
Texture& t = ctx->textures[texid];
|
||||
set_tex_storage(t, internal_format, width, height, buf, stride, min_width,
|
||||
min_height);
|
||||
set_tex_storage(t, internal_format, width, height, buf, stride,
|
||||
min_width, min_height);
|
||||
}
|
||||
|
||||
GLenum CheckFramebufferStatus(GLenum target) {
|
||||
|
@ -2147,9 +2135,9 @@ void ReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format,
|
|||
|
||||
void CopyImageSubData(GLuint srcName, GLenum srcTarget, UNUSED GLint srcLevel,
|
||||
GLint srcX, GLint srcY, GLint srcZ, GLuint dstName,
|
||||
GLenum dstTarget, UNUSED GLint dstLevel, GLint dstX,
|
||||
GLint dstY, GLint dstZ, GLsizei srcWidth,
|
||||
GLsizei srcHeight, GLsizei srcDepth) {
|
||||
GLenum dstTarget, UNUSED GLint dstLevel, GLint dstX, GLint dstY,
|
||||
GLint dstZ, GLsizei srcWidth, GLsizei srcHeight,
|
||||
GLsizei srcDepth) {
|
||||
assert(srcLevel == 0 && dstLevel == 0);
|
||||
if (srcTarget == GL_RENDERBUFFER) {
|
||||
Renderbuffer& rb = ctx->renderbuffers[srcName];
|
||||
|
@ -2191,9 +2179,9 @@ void CopyImageSubData(GLuint srcName, GLenum srcTarget, UNUSED GLint srcLevel,
|
|||
}
|
||||
}
|
||||
|
||||
void CopyTexSubImage3D(GLenum target, UNUSED GLint level, GLint xoffset,
|
||||
GLint yoffset, GLint zoffset, GLint x, GLint y,
|
||||
GLsizei width, GLsizei height) {
|
||||
void CopyTexSubImage3D(GLenum target, UNUSED GLint level, GLint xoffset, GLint yoffset,
|
||||
GLint zoffset, GLint x, GLint y, GLsizei width,
|
||||
GLsizei height) {
|
||||
assert(level == 0);
|
||||
Framebuffer* fb = get_framebuffer(GL_READ_FRAMEBUFFER);
|
||||
if (!fb) return;
|
||||
|
@ -2202,9 +2190,8 @@ void CopyTexSubImage3D(GLenum target, UNUSED GLint level, GLint xoffset,
|
|||
zoffset, width, height, 1);
|
||||
}
|
||||
|
||||
void CopyTexSubImage2D(GLenum target, UNUSED GLint level, GLint xoffset,
|
||||
GLint yoffset, GLint x, GLint y, GLsizei width,
|
||||
GLsizei height) {
|
||||
void CopyTexSubImage2D(GLenum target, UNUSED GLint level, GLint xoffset, GLint yoffset,
|
||||
GLint x, GLint y, GLsizei width, GLsizei height) {
|
||||
assert(level == 0);
|
||||
Framebuffer* fb = get_framebuffer(GL_READ_FRAMEBUFFER);
|
||||
if (!fb) return;
|
||||
|
@ -2475,11 +2462,11 @@ static inline WideRGBA8 blend_pixels_RGBA8(PackedRGBA8 pdst, WideRGBA8 src) {
|
|||
switch (blend_key) {
|
||||
case BLEND_KEY_NONE:
|
||||
return src;
|
||||
case BLEND_KEY(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE,
|
||||
GL_ONE_MINUS_SRC_ALPHA):
|
||||
// dst + src.a*(src.rgb1 - dst)
|
||||
case BLEND_KEY(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE):
|
||||
// dst + src.a*(src.rgb1 - dst.rgb0)
|
||||
// use addlow for signed overflow
|
||||
return addlow(dst, muldiv255(alphas(src), (src | ALPHA_OPAQUE) - dst));
|
||||
return addlow(dst,
|
||||
muldiv255(alphas(src), (src | ALPHA_OPAQUE) - (dst & RGB_MASK)));
|
||||
case BLEND_KEY(GL_ONE, GL_ONE_MINUS_SRC_ALPHA):
|
||||
return src + dst - muldiv255(dst, alphas(src));
|
||||
case BLEND_KEY(GL_ZERO, GL_ONE_MINUS_SRC_COLOR):
|
||||
|
@ -2502,8 +2489,8 @@ static inline WideRGBA8 blend_pixels_RGBA8(PackedRGBA8 pdst, WideRGBA8 src) {
|
|||
case BLEND_KEY(GL_CONSTANT_COLOR, GL_ONE_MINUS_SRC_COLOR):
|
||||
// src*k + (1-src)*dst = src*k + dst - src*dst = dst + src*(k - dst)
|
||||
// use addlow for signed overflow
|
||||
return addlow(
|
||||
dst, muldiv255(src, combine(ctx->blendcolor, ctx->blendcolor) - dst));
|
||||
return addlow(dst,
|
||||
muldiv255(src, combine(ctx->blendcolor, ctx->blendcolor) - dst));
|
||||
case BLEND_KEY(GL_ONE, GL_ONE_MINUS_SRC1_COLOR): {
|
||||
WideRGBA8 secondary =
|
||||
pack_pixels_RGBA8(fragment_shader->gl_SecondaryFragColor);
|
||||
|
@ -2544,7 +2531,9 @@ static inline PackedRGBA8 span_mask(uint32_t*, int span) {
|
|||
return span_mask_RGBA8(span);
|
||||
}
|
||||
|
||||
static inline WideR8 pack_pixels_R8(Float c) { return packR8(round_pixel(c)); }
|
||||
static inline WideR8 pack_pixels_R8(Float c) {
|
||||
return packR8(round_pixel(c));
|
||||
}
|
||||
|
||||
static inline WideR8 pack_pixels_R8() {
|
||||
return pack_pixels_R8(fragment_shader->gl_FragColor.x);
|
||||
|
@ -2697,8 +2686,7 @@ UNUSED static inline void commit_solid_span(uint8_t* buf, PackedR8 r, int len) {
|
|||
}
|
||||
}
|
||||
|
||||
#define DISPATCH_DRAW_SPAN(self, buf, len) \
|
||||
do { \
|
||||
#define DISPATCH_DRAW_SPAN(self, buf, len) do { \
|
||||
int drawn = self->draw_span(buf, len); \
|
||||
if (drawn) self->step_interp_inputs(drawn >> 2); \
|
||||
for (buf += drawn; drawn < len; drawn += 4, buf += 4) { \
|
||||
|
@ -2963,21 +2951,22 @@ static inline void draw_quad_spans(int nump, Point2D p[4], uint16_t z,
|
|||
// r1.x, r1.y);
|
||||
}
|
||||
|
||||
struct Edge {
|
||||
struct Edge
|
||||
{
|
||||
float yScale;
|
||||
float xSlope;
|
||||
float x;
|
||||
Interpolants interpSlope;
|
||||
Interpolants interp;
|
||||
|
||||
Edge(float y, const Point2D& p0, const Point2D& p1, const Interpolants& i0,
|
||||
const Interpolants& i1)
|
||||
: // Inverse Y scale for slope calculations. Avoid divide on 0-length
|
||||
// edge. Later checks below ensure that Y <= p1.y, or otherwise we
|
||||
// don't use this edge. We just need to guard against Y == p1.y ==
|
||||
// p0.y. In that case, Y - p0.y == 0 and will cancel out the slopes
|
||||
// below, except if yScale is Inf for some reason (or worse, NaN),
|
||||
// which 1/(p1.y-p0.y) might produce if we don't bound it.
|
||||
Edge(float y, const Point2D& p0, const Point2D& p1,
|
||||
const Interpolants& i0, const Interpolants& i1) :
|
||||
// Inverse Y scale for slope calculations. Avoid divide on 0-length edge.
|
||||
// Later checks below ensure that Y <= p1.y, or otherwise we don't use
|
||||
// this edge. We just need to guard against Y == p1.y == p0.y. In that
|
||||
// case, Y - p0.y == 0 and will cancel out the slopes below, except if
|
||||
// yScale is Inf for some reason (or worse, NaN), which 1/(p1.y-p0.y)
|
||||
// might produce if we don't bound it.
|
||||
yScale(1.0f / max(p1.y - p0.y, 1.0f / 256)),
|
||||
// Calculate dX/dY slope
|
||||
xSlope((p1.x - p0.x) * yScale),
|
||||
|
@ -2986,7 +2975,8 @@ static inline void draw_quad_spans(int nump, Point2D p[4], uint16_t z,
|
|||
// Calculate change in interpolants per change in Y
|
||||
interpSlope((i1 - i0) * yScale),
|
||||
// Initialize current interpolants based on Y and slope
|
||||
interp(i0 + (y - p0.y) * interpSlope) {}
|
||||
interp(i0 + (y - p0.y) * interpSlope)
|
||||
{}
|
||||
|
||||
void nextRow() {
|
||||
// step current X and interpolants to next row from slope
|
||||
|
@ -3030,17 +3020,13 @@ static inline void draw_quad_spans(int nump, Point2D p[4], uint16_t z,
|
|||
// Check if Y advanced past the end of the left edge
|
||||
if (y > l1.y) {
|
||||
// Step to next left edge past Y and reset edge interpolants.
|
||||
do {
|
||||
STEP_EDGE(l0i, l0, l1i, l1, NEXT_POINT, r1i);
|
||||
} while (y > l1.y);
|
||||
do { STEP_EDGE(l0i, l0, l1i, l1, NEXT_POINT, r1i); } while (y > l1.y);
|
||||
left = Edge(y, l0, l1, interp_outs[l0i], interp_outs[l1i]);
|
||||
}
|
||||
// Check if Y advanced past the end of the right edge
|
||||
if (y > r1.y) {
|
||||
// Step to next right edge past Y and reset edge interpolants.
|
||||
do {
|
||||
STEP_EDGE(r0i, r0, r1i, r1, PREV_POINT, l1i);
|
||||
} while (y > r1.y);
|
||||
do { STEP_EDGE(r0i, r0, r1i, r1, PREV_POINT, l1i); } while (y > r1.y);
|
||||
right = Edge(y, r0, r1, interp_outs[r0i], interp_outs[r1i]);
|
||||
}
|
||||
// Reset check condition for next time around.
|
||||
|
@ -3251,7 +3237,8 @@ static inline void draw_perspective_spans(int nump, Point3D* p,
|
|||
r1 = p[r1i]; // End of right edge
|
||||
}
|
||||
|
||||
struct Edge {
|
||||
struct Edge
|
||||
{
|
||||
float yScale;
|
||||
// Current coordinates for edge. Where in the 2D case of draw_quad_spans,
|
||||
// it is enough to just track the X coordinate as we advance along the rows,
|
||||
|
@ -3262,22 +3249,22 @@ static inline void draw_perspective_spans(int nump, Point3D* p,
|
|||
Interpolants interpSlope;
|
||||
Interpolants interp;
|
||||
|
||||
Edge(float y, const Point3D& p0, const Point3D& p1, const Interpolants& i0,
|
||||
const Interpolants& i1)
|
||||
: // Inverse Y scale for slope calculations. Avoid divide on 0-length
|
||||
// edge.
|
||||
Edge(float y, const Point3D& p0, const Point3D& p1,
|
||||
const Interpolants& i0, const Interpolants& i1) :
|
||||
// Inverse Y scale for slope calculations. Avoid divide on 0-length edge.
|
||||
yScale(1.0f / max(p1.y - p0.y, 1.0f / 256)),
|
||||
// Calculate dX/dY slope
|
||||
pSlope((p1 - p0) * yScale),
|
||||
// Initialize current coords based on Y and slope
|
||||
p(p0 + (y - p0.y) * pSlope),
|
||||
// Crucially, these interpolants must be scaled by the point's 1/w
|
||||
// value, which allows linear interpolation in a perspective-correct
|
||||
// manner. This will be canceled out inside the fragment shader later.
|
||||
// Crucially, these interpolants must be scaled by the point's 1/w value,
|
||||
// which allows linear interpolation in a perspective-correct manner.
|
||||
// This will be canceled out inside the fragment shader later.
|
||||
// Calculate change in interpolants per change in Y
|
||||
interpSlope((i1 * p1.w - i0 * p0.w) * yScale),
|
||||
// Initialize current interpolants based on Y and slope
|
||||
interp(i0 * p0.w + (y - p0.y) * interpSlope) {}
|
||||
interp(i0 * p0.w + (y - p0.y) * interpSlope)
|
||||
{}
|
||||
|
||||
float x() const { return p.x; }
|
||||
vec2_scalar zw() const { return {p.z, p.w}; }
|
||||
|
@ -3309,17 +3296,13 @@ static inline void draw_perspective_spans(int nump, Point3D* p,
|
|||
// Check if Y advanced past the end of the left edge
|
||||
if (y > l1.y) {
|
||||
// Step to next left edge past Y and reset edge interpolants.
|
||||
do {
|
||||
STEP_EDGE(l0i, l0, l1i, l1, NEXT_POINT, r1i);
|
||||
} while (y > l1.y);
|
||||
do { STEP_EDGE(l0i, l0, l1i, l1, NEXT_POINT, r1i); } while (y > l1.y);
|
||||
left = Edge(y, l0, l1, interp_outs[l0i], interp_outs[l1i]);
|
||||
}
|
||||
// Check if Y advanced past the end of the right edge
|
||||
if (y > r1.y) {
|
||||
// Step to next right edge past Y and reset edge interpolants.
|
||||
do {
|
||||
STEP_EDGE(r0i, r0, r1i, r1, PREV_POINT, l1i);
|
||||
} while (y > r1.y);
|
||||
do { STEP_EDGE(r0i, r0, r1i, r1, PREV_POINT, l1i); } while (y > r1.y);
|
||||
right = Edge(y, r0, r1, interp_outs[r0i], interp_outs[r1i]);
|
||||
}
|
||||
// Reset check condition for next time around.
|
||||
|
@ -3498,11 +3481,11 @@ static inline void draw_perspective_clipped(int nump, Point3D* p_clip,
|
|||
|
||||
// Finally draw perspective-correct spans for the polygon.
|
||||
if (colortex.internal_format == GL_RGBA8) {
|
||||
draw_perspective_spans<uint32_t>(nump, p_clip, interp_clip, colortex, layer,
|
||||
depthtex, clipRect);
|
||||
draw_perspective_spans<uint32_t>(nump, p_clip, interp_clip, colortex,
|
||||
layer, depthtex, clipRect);
|
||||
} else if (colortex.internal_format == GL_R8) {
|
||||
draw_perspective_spans<uint8_t>(nump, p_clip, interp_clip, colortex, layer,
|
||||
depthtex, clipRect);
|
||||
draw_perspective_spans<uint8_t>(nump, p_clip, interp_clip, colortex,
|
||||
layer, depthtex, clipRect);
|
||||
} else {
|
||||
assert(false);
|
||||
}
|
||||
|
@ -3519,8 +3502,10 @@ static inline void draw_perspective_clipped(int nump, Point3D* p_clip,
|
|||
// by W again to produce the final correct attribute value for each fragment.
|
||||
// This process is expensive and should be avoided if possible for primitive
|
||||
// batches that are known ahead of time to not need perspective-correction.
|
||||
static void draw_perspective(int nump, Interpolants interp_outs[4],
|
||||
Texture& colortex, int layer, Texture& depthtex) {
|
||||
static void draw_perspective(int nump,
|
||||
Interpolants interp_outs[4],
|
||||
Texture& colortex, int layer,
|
||||
Texture& depthtex) {
|
||||
// Convert output of vertex shader to screen space.
|
||||
vec4 pos = vertex_shader->gl_Position;
|
||||
vec3_scalar scale =
|
||||
|
@ -3532,18 +3517,22 @@ static void draw_perspective(int nump, Interpolants interp_outs[4],
|
|||
// Just divide coords by W and convert to viewport.
|
||||
Float w = 1.0f / pos.w;
|
||||
vec3 screen = pos.sel(X, Y, Z) * w * scale + offset;
|
||||
Point3D p[4] = {{screen.x.x, screen.y.x, screen.z.x, w.x},
|
||||
Point3D p[4] = {
|
||||
{screen.x.x, screen.y.x, screen.z.x, w.x},
|
||||
{screen.x.y, screen.y.y, screen.z.y, w.y},
|
||||
{screen.x.z, screen.y.z, screen.z.z, w.z},
|
||||
{screen.x.w, screen.y.w, screen.z.w, w.w}};
|
||||
{screen.x.w, screen.y.w, screen.z.w, w.w}
|
||||
};
|
||||
draw_perspective_clipped(nump, p, interp_outs, colortex, layer, depthtex);
|
||||
} else {
|
||||
// Points cross the near or far planes, so we need to clip.
|
||||
// Start with the original 3 or 4 points...
|
||||
Point3D p[4] = {{pos.x.x, pos.y.x, pos.z.x, pos.w.x},
|
||||
Point3D p[4] = {
|
||||
{pos.x.x, pos.y.x, pos.z.x, pos.w.x},
|
||||
{pos.x.y, pos.y.y, pos.z.y, pos.w.y},
|
||||
{pos.x.z, pos.y.z, pos.z.z, pos.w.z},
|
||||
{pos.x.w, pos.y.w, pos.z.w, pos.w.w}};
|
||||
{pos.x.w, pos.y.w, pos.z.w, pos.w.w}
|
||||
};
|
||||
// Clipping can expand the points by 1 for each of 6 view frustum planes.
|
||||
Point3D p_clip[4 + 6];
|
||||
Interpolants interp_clip[4 + 6];
|
||||
|
@ -3609,7 +3598,8 @@ static void draw_quad(int nump, Texture& colortex, int layer,
|
|||
// Convert output of vertex shader to screen space.
|
||||
// Divide coords by W and convert to viewport.
|
||||
float w = 1.0f / pos.w.x;
|
||||
vec2 screen = (pos.sel(X, Y) * w + 1) * 0.5f *
|
||||
vec2 screen =
|
||||
(pos.sel(X, Y) * w + 1) * 0.5f *
|
||||
vec2_scalar(ctx->viewport.width(), ctx->viewport.height()) +
|
||||
vec2_scalar(ctx->viewport.x0, ctx->viewport.y0);
|
||||
Point2D p[4] = {{screen.x.x, screen.y.x},
|
||||
|
@ -3673,7 +3663,8 @@ static inline void draw_elements(GLsizei count, GLsizei instancecount,
|
|||
Texture& depthtex) {
|
||||
assert((offset & (sizeof(INDEX) - 1)) == 0);
|
||||
INDEX* indices = (INDEX*)(indices_buf.buf + offset);
|
||||
count = min(count, (GLsizei)((indices_buf.size - offset) / sizeof(INDEX)));
|
||||
count = min(count,
|
||||
(GLsizei)((indices_buf.size - offset) / sizeof(INDEX)));
|
||||
// Triangles must be indexed at offsets 0, 1, 2.
|
||||
// Quads must be successive triangles indexed at offsets 0, 1, 2, 2, 1, 3.
|
||||
if (count == 6 && indices[1] == indices[0] + 1 &&
|
||||
|
@ -3809,8 +3800,8 @@ static void scale_blit(Texture& srctex, const IntRect& srcReq, int srcZ,
|
|||
IntRect dstBounds = dsttex.sample_bounds(dstReq, invertY);
|
||||
// Compute valid source bounds
|
||||
// Scale source to dest, rounding inward to avoid sampling outside source
|
||||
IntRect srcBounds = srctex.sample_bounds(srcReq).scale(
|
||||
srcWidth, srcHeight, dstWidth, dstHeight, true);
|
||||
IntRect srcBounds = srctex.sample_bounds(srcReq)
|
||||
.scale(srcWidth, srcHeight, dstWidth, dstHeight, true);
|
||||
// Limit dest sampling bounds to overlap source bounds
|
||||
dstBounds.intersect(srcBounds);
|
||||
// Check if sampling bounds are empty
|
||||
|
@ -3818,8 +3809,8 @@ static void scale_blit(Texture& srctex, const IntRect& srcReq, int srcZ,
|
|||
return;
|
||||
}
|
||||
// Compute final source bounds from clamped dest sampling bounds
|
||||
srcBounds =
|
||||
IntRect(dstBounds).scale(dstWidth, dstHeight, srcWidth, srcHeight);
|
||||
srcBounds = IntRect(dstBounds)
|
||||
.scale(dstWidth, dstHeight, srcWidth, srcHeight);
|
||||
// Calculate source and dest pointers from clamped offsets
|
||||
int bpp = srctex.bpp();
|
||||
int srcStride = srctex.stride();
|
||||
|
@ -3916,7 +3907,8 @@ static void linear_blit(Texture& srctex, const IntRect& srcReq, int srcZ,
|
|||
Texture& dsttex, const IntRect& dstReq, int dstZ,
|
||||
bool invertY) {
|
||||
assert(srctex.internal_format == GL_RGBA8 ||
|
||||
srctex.internal_format == GL_R8 || srctex.internal_format == GL_RG8);
|
||||
srctex.internal_format == GL_R8 ||
|
||||
srctex.internal_format == GL_RG8);
|
||||
// Compute valid dest bounds
|
||||
IntRect dstBounds = dsttex.sample_bounds(dstReq, invertY);
|
||||
// Check if sampling bounds are empty
|
||||
|
@ -3950,7 +3942,8 @@ static void linear_blit(Texture& srctex, const IntRect& srcReq, int srcZ,
|
|||
for (int rows = dstBounds.height(); rows > 0; rows--) {
|
||||
switch (bpp) {
|
||||
case 1:
|
||||
linear_row((uint8_t*)dest, span, srcUV, srcDUV.x, srcZOffset, &sampler);
|
||||
linear_row((uint8_t*)dest, span, srcUV, srcDUV.x, srcZOffset,
|
||||
&sampler);
|
||||
break;
|
||||
case 2:
|
||||
linear_row((uint16_t*)dest, span, srcUV, srcDUV.x, srcZOffset,
|
||||
|
@ -4005,7 +3998,8 @@ void BlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
|
|||
prepare_texture(srctex);
|
||||
prepare_texture(dsttex, &dstReq);
|
||||
if (!srcReq.same_size(dstReq) && filter == GL_LINEAR &&
|
||||
(srctex.internal_format == GL_RGBA8 || srctex.internal_format == GL_R8 ||
|
||||
(srctex.internal_format == GL_RGBA8 ||
|
||||
srctex.internal_format == GL_R8 ||
|
||||
srctex.internal_format == GL_RG8)) {
|
||||
linear_blit(srctex, srcReq, srcfb->layer, dsttex, dstReq, dstfb->layer,
|
||||
invertY);
|
||||
|
|
|
@ -418,7 +418,6 @@ fn calculate_length(width: GLsizei, height: GLsizei, format: GLenum, pixel_type:
|
|||
UNSIGNED_SHORT => 2,
|
||||
SHORT => 2,
|
||||
FLOAT => 4,
|
||||
UNSIGNED_INT_8_8_8_8_REV => 1,
|
||||
_ => panic!("unsupported pixel_type for read_pixels: {:?}", pixel_type),
|
||||
};
|
||||
|
||||
|
|
|
@ -466,7 +466,7 @@ impl CompositeState {
|
|||
opaque_tiles: Vec::new(),
|
||||
alpha_tiles: Vec::new(),
|
||||
clear_tiles: Vec::new(),
|
||||
z_generator: ZBufferIdGenerator::new(max_depth_ids),
|
||||
z_generator: ZBufferIdGenerator::new(0, max_depth_ids),
|
||||
dirty_rects_are_valid,
|
||||
compositor_kind,
|
||||
picture_caching_is_enabled,
|
||||
|
|
|
@ -3532,7 +3532,7 @@ impl Device {
|
|||
pub fn set_blend_mode_alpha(&mut self) {
|
||||
self.set_blend_factors(
|
||||
(gl::SRC_ALPHA, gl::ONE_MINUS_SRC_ALPHA),
|
||||
(gl::ONE, gl::ONE_MINUS_SRC_ALPHA),
|
||||
(gl::ONE, gl::ONE),
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -579,7 +579,7 @@ impl FrameBuilder {
|
|||
);
|
||||
|
||||
// Used to generated a unique z-buffer value per primitive.
|
||||
let mut z_generator = ZBufferIdGenerator::new(scene.config.max_depth_ids);
|
||||
let mut z_generator = ZBufferIdGenerator::new(layer, scene.config.max_depth_ids);
|
||||
let use_dual_source_blending = scene.config.dual_source_blending_is_enabled &&
|
||||
scene.config.dual_source_blending_is_supported;
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use api::{AlphaType, PremultipliedColorF, YuvFormat, YuvColorSpace};
|
||||
use api::{AlphaType, DocumentLayer, PremultipliedColorF, YuvFormat, YuvColorSpace};
|
||||
use api::EdgeAaSegmentMask;
|
||||
use api::units::*;
|
||||
use crate::spatial_tree::{SpatialTree, ROOT_SPATIAL_NODE_INDEX, SpatialNodeIndex};
|
||||
|
@ -25,6 +25,10 @@ pub const VECS_PER_TRANSFORM: usize = 8;
|
|||
#[cfg_attr(feature = "replay", derive(Deserialize))]
|
||||
pub struct ZBufferId(pub i32);
|
||||
|
||||
const MAX_DOCUMENT_LAYERS : i8 = 1 << 3;
|
||||
const MAX_DOCUMENT_LAYER_VALUE : i8 = MAX_DOCUMENT_LAYERS / 2 - 1;
|
||||
const MIN_DOCUMENT_LAYER_VALUE : i8 = -MAX_DOCUMENT_LAYERS / 2;
|
||||
|
||||
impl ZBufferId {
|
||||
pub fn invalid() -> Self {
|
||||
ZBufferId(i32::MAX)
|
||||
|
@ -35,21 +39,26 @@ impl ZBufferId {
|
|||
#[cfg_attr(feature = "capture", derive(Serialize))]
|
||||
#[cfg_attr(feature = "replay", derive(Deserialize))]
|
||||
pub struct ZBufferIdGenerator {
|
||||
base: i32,
|
||||
next: i32,
|
||||
max_depth_ids: i32,
|
||||
max_items_per_document_layer: i32,
|
||||
}
|
||||
|
||||
impl ZBufferIdGenerator {
|
||||
pub fn new(max_depth_ids: i32) -> Self {
|
||||
pub fn new(layer: DocumentLayer, max_depth_ids: i32) -> Self {
|
||||
debug_assert!(layer >= MIN_DOCUMENT_LAYER_VALUE);
|
||||
debug_assert!(layer <= MAX_DOCUMENT_LAYER_VALUE);
|
||||
let max_items_per_document_layer = max_depth_ids / MAX_DOCUMENT_LAYERS as i32;
|
||||
ZBufferIdGenerator {
|
||||
base: layer as i32 * max_items_per_document_layer,
|
||||
next: 0,
|
||||
max_depth_ids,
|
||||
max_items_per_document_layer,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn next(&mut self) -> ZBufferId {
|
||||
debug_assert!(self.next < self.max_depth_ids);
|
||||
let id = ZBufferId(self.next);
|
||||
debug_assert!(self.next < self.max_items_per_document_layer);
|
||||
let id = ZBufferId(self.next + self.base);
|
||||
self.next += 1;
|
||||
id
|
||||
}
|
||||
|
|
|
@ -96,7 +96,7 @@ fuzzy(0-17,0-3221) fuzzy-if(gtkWidget&&!webrender,4-4,2616-2616) fuzzy-if(gtkWid
|
|||
|
||||
# Non-transparent and transparent ICO images
|
||||
== downscale-16px.html?ff-0RGB.ico downscale-16px.html?ff-0RGB.png
|
||||
fuzzy(0-1,0-1) fuzzy-if(gtkWidget&&webrender&&swgl,1-1,1-1) == downscale-16px.html?ff-ARGB.ico downscale-16px.html?ff-ARGB.png
|
||||
fuzzy(0-1,0-1) == downscale-16px.html?ff-ARGB.ico downscale-16px.html?ff-ARGB.png
|
||||
|
||||
# Upside-down (negative height) BMP
|
||||
== downscale-8px.html?top-to-bottom-16x16-24bpp.bmp downscale-8px.html?bmp-size-16x16-24bpp.png
|
||||
|
@ -178,14 +178,14 @@ fuzzy(0-20,0-999) != downscale-2f.html?205,53,bottom about:blank
|
|||
# Skip on WinXP with skia content
|
||||
# Skip on Android because it runs reftests via http, and moz-icon isn't
|
||||
# accessible from http/https origins anymore.
|
||||
fuzzy(0-53,0-6391) fuzzy-if(gtkWidget&&webrender,19-19,5502-5568) fails-if(/^Windows\x20NT\x205\.1/.test(http.oscpu)) skip-if(Android) == downscale-moz-icon-1.html downscale-moz-icon-1-ref.html # gtkWidget Bug 1592059
|
||||
fuzzy(0-53,0-6391) fuzzy-if(gtkWidget&&webrender,19-19,5502-5534) fails-if(/^Windows\x20NT\x205\.1/.test(http.oscpu)) skip-if(Android) == downscale-moz-icon-1.html downscale-moz-icon-1-ref.html # gtkWidget Bug 1592059
|
||||
|
||||
== downscale-png.html?16,16,interlaced downscale-png.html?16,16,normal
|
||||
== downscale-png.html?24,24,interlaced downscale-png.html?24,24,normal
|
||||
|
||||
# Non-transparent and transparent ICO images
|
||||
fuzzy(0-1,0-3) == downscale-16px.html?ff-0RGB.ico downscale-16px.html?ff-0RGB.png
|
||||
fuzzy(0-3,0-32) fuzzy-if(gtkWidget&&webrender&&swgl,3-3,33-33) == downscale-16px.html?ff-ARGB.ico downscale-16px.html?ff-ARGB.png
|
||||
fuzzy(0-3,0-32) == downscale-16px.html?ff-ARGB.ico downscale-16px.html?ff-ARGB.png
|
||||
|
||||
# Upside-down (negative height) BMP
|
||||
== downscale-8px.html?top-to-bottom-16x16-24bpp.bmp downscale-8px.html?bmp-size-16x16-24bpp.png
|
||||
|
|
|
@ -55,27 +55,27 @@ fuzzy-if(Android,0-6,0-4) skip == offscreen-clipped-blendmode-3.html offscreen-c
|
|||
fuzzy-if(Android,0-6,0-4) fuzzy-if(webrender&>kWidget,34-34,32-32) fuzzy-if(webrender&&cocoaWidget,7-7,37-37) skip-if(!asyncPan) == offscreen-clipped-blendmode-4.html offscreen-clipped-blendmode-ref.html # Bug 1604338
|
||||
fuzzy-if(Android,0-7,0-1600) fuzzy-if(webrender&>kWidget,1-1,10-20) fuzzy-if(webrender&&cocoaWidget,1-1,19-19) skip-if(!asyncPan) == perspective-scrolling-1.html perspective-scrolling-1-ref.html # Bug 1604338
|
||||
fuzzy-if(Android,0-7,0-4) skip-if(!asyncPan) == perspective-scrolling-2.html perspective-scrolling-2-ref.html
|
||||
fuzzy-if(Android,0-19,0-4) fuzzy-if(webrender&>kWidget,13-13,28-32) fuzzy-if(webrender&&cocoaWidget,13-13,39-39) skip-if(!asyncPan) == perspective-scrolling-3.html perspective-scrolling-3-ref.html # Bug 1604338
|
||||
fuzzy-if(Android,0-7,0-4) fuzzy-if(webrender&>kWidget,29-30,32-32) fuzzy-if(webrender&&cocoaWidget,20-20,40-40) skip-if(!asyncPan) == perspective-scrolling-4.html perspective-scrolling-4-ref.html # Bug 1604338
|
||||
fuzzy-if(Android,0-19,0-4) fuzzy-if(webrender&>kWidget,13-13,32-32) fuzzy-if(webrender&&cocoaWidget,13-13,39-39) skip-if(!asyncPan) == perspective-scrolling-3.html perspective-scrolling-3-ref.html # Bug 1604338
|
||||
fuzzy-if(Android,0-7,0-4) fuzzy-if(webrender&>kWidget,29-29,32-32) fuzzy-if(webrender&&cocoaWidget,20-20,40-40) skip-if(!asyncPan) == perspective-scrolling-4.html perspective-scrolling-4-ref.html # Bug 1604338
|
||||
skip-if(!asyncPan) == perspective-scrolling-5.html perspective-scrolling-5-ref.html
|
||||
pref(apz.disable_for_scroll_linked_effects,true) skip-if(!asyncPan) == disable-apz-for-sle-pages.html disable-apz-for-sle-pages-ref.html
|
||||
fuzzy-if(browserIsRemote&&d2d,0-1,0-22) skip-if(!asyncPan) fuzzy-if(geckoview,2-2,242-242) skip-if(geckoview&&debug) == background-blend-mode-1.html background-blend-mode-1-ref.html # bug 1558286 for GV
|
||||
skip-if(Android||!asyncPan) != opaque-fractional-displayport-1.html about:blank
|
||||
skip-if(Android||!asyncPan) != opaque-fractional-displayport-2.html about:blank
|
||||
fuzzy-if(Android,0-19,0-4) fuzzy-if(webrender&>kWidget,19-19,32-32) fuzzy-if(webrender&&cocoaWidget,22-22,44-44) skip-if(!asyncPan) == fixed-pos-scrolled-clip-1.html fixed-pos-scrolled-clip-1-ref.html # Bug 1604338
|
||||
fuzzy-if(Android,0-44,0-10) fuzzy-if(webrender&>kWidget,26-26,60-64) fuzzy-if(webrender&&cocoaWidget,13-13,76-76) skip-if(!asyncPan) == fixed-pos-scrolled-clip-2.html fixed-pos-scrolled-clip-2-ref.html # Bug 1604338
|
||||
fuzzy-if(Android,0-6,0-8) fuzzy-if(webrender&>kWidget,28-28,56-60) fuzzy-if(webrender&&cocoaWidget,19-19,72-72) skip-if(!asyncPan) == fixed-pos-scrolled-clip-3.html fixed-pos-scrolled-clip-3-ref.html # Bug 1604338
|
||||
fuzzy-if(Android,0-6,0-8) fuzzy-if(webrender&>kWidget,28-28,56-60) fuzzy-if(webrender&&cocoaWidget,19-19,72-72) skip-if(!asyncPan) == fixed-pos-scrolled-clip-4.html fixed-pos-scrolled-clip-4-ref.html # Bug 1604338
|
||||
fuzzy-if(Android,0-44,0-10) fuzzy-if(webrender&>kWidget,26-26,64-64) fuzzy-if(webrender&&cocoaWidget,13-13,76-76) skip-if(!asyncPan) == fixed-pos-scrolled-clip-2.html fixed-pos-scrolled-clip-2-ref.html # Bug 1604338
|
||||
fuzzy-if(Android,0-6,0-8) fuzzy-if(webrender&>kWidget,28-28,60-60) fuzzy-if(webrender&&cocoaWidget,19-19,72-72) skip-if(!asyncPan) == fixed-pos-scrolled-clip-3.html fixed-pos-scrolled-clip-3-ref.html # Bug 1604338
|
||||
fuzzy-if(Android,0-6,0-8) fuzzy-if(webrender&>kWidget,28-28,60-60) fuzzy-if(webrender&&cocoaWidget,19-19,72-72) skip-if(!asyncPan) == fixed-pos-scrolled-clip-4.html fixed-pos-scrolled-clip-4-ref.html # Bug 1604338
|
||||
skip-if(!asyncPan) == fixed-pos-scrolled-clip-5.html fixed-pos-scrolled-clip-5-ref.html
|
||||
skip-if(!asyncPan) == position-sticky-bug1434250.html position-sticky-bug1434250-ref.html
|
||||
fuzzy-if(Android,0-8,0-4) fuzzy-if(webrender&>kWidget,25-25,32-32) fuzzy-if(webrender&&cocoaWidget,16-16,40-40) skip-if(!asyncPan) == position-sticky-scrolled-clip-1.html position-sticky-scrolled-clip-1-ref.html # Bug 1604338
|
||||
fuzzy-if(Android,0-6,0-4) skip == position-sticky-scrolled-clip-2.html position-sticky-scrolled-clip-2-ref.html # bug ?????? - incorrectly applying clip to sticky contents
|
||||
fuzzy-if(Android,0-8,0-27) fuzzy-if(webrender&&cocoaWidget,11-11,39-39) skip-if(!asyncPan) == curtain-effect-1.html curtain-effect-1-ref.html
|
||||
fuzzy-if(Android,0-6,0-4) fuzzy-if(webrender&>kWidget,15-15,28-32) fuzzy-if(webrender&&cocoaWidget,9-9,37-37) skip-if(!asyncPan) == transformed-1.html transformed-1-ref.html # Bug 1604338
|
||||
fuzzy-if(Android&&!webrender,2-2,4-4) fuzzy-if(Android&&webrender,7-7,4-4) fuzzy-if(webrender&>kWidget,4-5,27-28) fuzzy-if(webrender&&cocoaWidget,6-6,37-37) skip-if(!asyncPan) == position-sticky-transformed-in-scrollframe-1.html position-sticky-transformed-in-scrollframe-1-ref.html # Bug 1604338
|
||||
fuzzy-if(Android,0-6,0-4) fuzzy-if(webrender&>kWidget,15-15,32-32) fuzzy-if(webrender&&cocoaWidget,9-9,37-37) skip-if(!asyncPan) == transformed-1.html transformed-1-ref.html # Bug 1604338
|
||||
fuzzy-if(Android&&!webrender,2-2,4-4) fuzzy-if(Android&&webrender,7-7,4-4) fuzzy-if(webrender&>kWidget,5-5,28-28) fuzzy-if(webrender&&cocoaWidget,6-6,37-37) skip-if(!asyncPan) == position-sticky-transformed-in-scrollframe-1.html position-sticky-transformed-in-scrollframe-1-ref.html # Bug 1604338
|
||||
fuzzy-if(Android&&!webrender,3-3,4-4) fuzzy-if(Android&&webrender,10-10,4-4) fuzzy-if(webrender&>kWidget,20-20,32-32) fuzzy-if(webrender&&cocoaWidget,16-16,40-40) skip-if(!asyncPan) == position-sticky-transformed-in-scrollframe-2.html position-sticky-transformed-in-scrollframe-2-ref.html # Bug 1604338
|
||||
fuzzy-if(Android&&!webrender,3-3,4-4) fuzzy-if(Android&&webrender,13-13,4-4) fuzzy-if(webrender&>kWidget,26-27,32-32) fuzzy-if(webrender&&cocoaWidget,16-16,40-40) skip-if(!asyncPan) == position-sticky-in-transformed-scrollframe-1.html position-sticky-in-transformed-scrollframe-ref.html # Bug 1604338
|
||||
fuzzy-if(Android&&!webrender,3-3,4-4) fuzzy-if(Android&&webrender,13-13,4-4) fuzzy-if(webrender&>kWidget,26-27,32-32) fuzzy-if(webrender&&cocoaWidget,16-16,40-40) skip-if(!asyncPan) == position-sticky-in-transformed-scrollframe-2.html position-sticky-in-transformed-scrollframe-ref.html # Bug 1604338
|
||||
fuzzy-if(Android&&!webrender,3-3,4-4) fuzzy-if(Android&&webrender,13-13,4-4) fuzzy-if(webrender&>kWidget,27-27,32-32) fuzzy-if(webrender&&cocoaWidget,16-16,40-40) skip-if(!asyncPan) == position-sticky-in-transformed-scrollframe-1.html position-sticky-in-transformed-scrollframe-ref.html # Bug 1604338
|
||||
fuzzy-if(Android&&!webrender,3-3,4-4) fuzzy-if(Android&&webrender,13-13,4-4) fuzzy-if(webrender&>kWidget,27-27,32-32) fuzzy-if(webrender&&cocoaWidget,16-16,40-40) skip-if(!asyncPan) == position-sticky-in-transformed-scrollframe-2.html position-sticky-in-transformed-scrollframe-ref.html # Bug 1604338
|
||||
|
||||
# for the following tests, we want to disable the low-precision buffer
|
||||
# as it will expand the displayport beyond what the test specifies in
|
||||
|
|
|
@ -43,7 +43,7 @@ fuzzy-if(asyncPan&&!layersGPUAccelerated,0-140,0-514) fuzzy-if(winWidget,0-144,0
|
|||
|
||||
# border images with gradients
|
||||
fuzzy-if(webrender&&!geckoview,1-3,784-1804) == border-image-linear-gradient.html border-image-linear-gradient-ref.html
|
||||
fuzzy(0-1,0-98) fuzzy-if(skiaContent,0-1,0-350) fuzzy-if(webrender&&!geckoview,1-3,1086-37537) == border-image-linear-gradient-slice-1.html border-image-linear-gradient-slice-1-ref.html
|
||||
fuzzy(0-1,0-98) fuzzy-if(skiaContent,0-1,0-350) fuzzy-if(webrender&&!geckoview,1-3,1087-37537) == border-image-linear-gradient-slice-1.html border-image-linear-gradient-slice-1-ref.html
|
||||
fuzzy(0-1,0-515) fuzzy-if(OSX,0-1,0-10595) fuzzy-if(webrender&&!geckoview,1-3,272-25136) == border-image-linear-gradient-slice-2.html border-image-linear-gradient-slice-2-ref.html
|
||||
fuzzy-if(skiaContent,0-1,0-2500) fuzzy-if(webrender&&!geckoview,1-3,2500-86037) == border-image-linear-gradient-slice-fill-1.html border-image-linear-gradient-slice-fill-1-ref.html
|
||||
fuzzy(0-1,0-649) fuzzy-if(OSX,0-1,0-25771) fuzzy-if(skiaContent&&!Android,0-1,0-546) fuzzy-if(Android,0-1,0-6093) fuzzy-if(webrender&&!geckoview,1-3,480-57480) == border-image-linear-gradient-slice-fill-2.html border-image-linear-gradient-slice-fill-2-ref.html
|
||||
|
@ -52,9 +52,9 @@ fuzzy(0-2,0-60590) fuzzy-if(Android,0-4,0-18022) fuzzy-if(OSX,0-1,0-15000) fuzzy
|
|||
fuzzy(0-2,0-26758) fuzzy-if(OSX,0-1,0-6000) fuzzy-if(webrender&&!geckoview,1-3,3964-26758) == border-image-linear-gradient-outset.html border-image-linear-gradient-outset-ref.html
|
||||
fuzzy(0-1,0-12) fuzzy-if(skiaContent,0-1,0-400) fuzzy-if(webrender&&!geckoview,1-3,1397-26872) == border-image-linear-gradient-repeat-repeat-1.html border-image-linear-gradient-repeat-repeat-1-ref.html
|
||||
fuzzy(0-1,0-13) fuzzy-if(skiaContent,0-1,0-300) fuzzy-if(webrender&&!geckoview,1-3,1400-27131) == border-image-linear-gradient-repeat-round-1.html border-image-linear-gradient-repeat-round-1-ref.html
|
||||
fuzzy-if(Android,0-1,0-1894) fuzzy-if(webrender&&!geckoview,1-2,3163-67805) == border-image-linear-gradient-repeat-repeat-2.html border-image-linear-gradient-repeat-repeat-2-ref.html
|
||||
fuzzy(0-1,0-2000) fuzzy-if(webrender&&!geckoview,1-2,3249-9500) == border-image-linear-gradient-repeat-round-2.html border-image-linear-gradient-repeat-round-2-ref.html
|
||||
fuzzy(0-1,0-8533) fuzzy-if(webrender&&!geckoview,1-3,3188-9500) == border-image-linear-gradient-repeat-repeat-3.html border-image-linear-gradient-repeat-repeat-3-ref.html
|
||||
fuzzy-if(Android,0-1,0-1894) fuzzy-if(webrender&&!geckoview,1-2,3100-67805) == border-image-linear-gradient-repeat-repeat-2.html border-image-linear-gradient-repeat-repeat-2-ref.html
|
||||
fuzzy(0-1,0-2000) fuzzy-if(webrender&&!geckoview,1-2,3296-9500) == border-image-linear-gradient-repeat-round-2.html border-image-linear-gradient-repeat-round-2-ref.html
|
||||
fuzzy(0-1,0-8533) fuzzy-if(webrender&&!geckoview,1-3,3300-9500) == border-image-linear-gradient-repeat-repeat-3.html border-image-linear-gradient-repeat-repeat-3-ref.html
|
||||
fuzzy(0-3,0-107563) fuzzy-if(webrender&&!geckoview,1-3,43500-107563) == border-image-linear-gradient-repeat-round-3.html border-image-linear-gradient-repeat-round-3-ref.html
|
||||
|
||||
fuzzy-if(webrender,0-1,0-2096) == border-image-radial-gradient.html border-image-radial-gradient-ref.html
|
||||
|
|
|
@ -29,7 +29,7 @@ fuzzy(0-2,0-440) == boxshadow-skiprect.html boxshadow-skiprect-ref.html
|
|||
fuzzy(0-3,0-500) fuzzy-if(d2d,0-2,0-1080) == boxshadow-border-radius-int.html boxshadow-border-radius-int-ref.html
|
||||
== boxshadow-inset-neg-spread.html about:blank
|
||||
== boxshadow-inset-neg-spread2.html boxshadow-inset-neg-spread2-ref.html
|
||||
fuzzy(0-26,0-3610) fuzzy-if(d2d,0-26,0-5910) fuzzy-if(webrender,4-6,4172-4350) == boxshadow-rotated.html boxshadow-rotated-ref.html # Bug 1211264
|
||||
fuzzy(0-26,0-3610) fuzzy-if(d2d,0-26,0-5910) fuzzy-if(webrender,4-6,4184-4350) == boxshadow-rotated.html boxshadow-rotated-ref.html # Bug 1211264
|
||||
== boxshadow-inset-large-border-radius.html boxshadow-inset-large-border-radius-ref.html
|
||||
|
||||
# fuzzy due to blur going inside, but as long as it's essentially black instead of a light gray its ok.
|
||||
|
|
|
@ -1180,7 +1180,7 @@ fails-if(Android||cocoaWidget||winWidget) == chrome://reftest/content/bugs/45614
|
|||
fuzzy-if(Android,0-11,0-41) fuzzy-if(winWidget||gtkWidget,0-4,0-6) fuzzy-if(d2d,0-16,0-95) fuzzy-if(skiaContent,0-42,0-154) fuzzy-if(webrender,56-60,449-570) == 456219-1a.html 456219-1-ref.html # bug 1128229
|
||||
fuzzy-if(Android,0-11,0-41) fuzzy-if(winWidget||gtkWidget,0-4,0-6) fuzzy-if(d2d,0-16,0-99) fuzzy-if(skiaContent,0-42,0-154) fuzzy-if(webrender,56-60,449-570) == 456219-1b.html 456219-1-ref.html # bug 1128229
|
||||
fuzzy-if(Android,0-11,0-41) fuzzy-if(winWidget||gtkWidget,0-4,0-6) fuzzy-if(d2d,0-16,0-99) fuzzy-if(skiaContent,0-42,0-154) fuzzy-if(webrender,56-60,449-497) fuzzy-if(geckoview&&webrender&&device,60-60,1014-4421) == 456219-1c.html 456219-1-ref.html # bug 1128229
|
||||
fuzzy-if(skiaContent,0-1,0-45) fuzzy-if(webrender,8-9,8-8) == 456219-2.html 456219-2-ref.html
|
||||
fuzzy-if(skiaContent,0-1,0-45) fuzzy-if(webrender,9-9,8-8) == 456219-2.html 456219-2-ref.html
|
||||
== 456330-1.gif 456330-1-ref.png
|
||||
== 456484-1.html 456484-1-ref.html
|
||||
== 457398-1.html 457398-1-ref.html
|
||||
|
@ -1214,7 +1214,7 @@ fuzzy-if(skiaContent||webrender,0-1,0-31200) == 461512-1.html 461512-1-ref.html
|
|||
== 462844-3.html 462844-ref.html
|
||||
== 462844-4.html 462844-ref.html
|
||||
== 463204-1.html 463204-1-ref.html
|
||||
fuzzy-if(webrender,16-16,3391-4020) == chrome://reftest/content/bugs/463217-1.xhtml chrome://reftest/content/bugs/463217-1-ref.xhtml
|
||||
fuzzy-if(webrender,16-16,3392-4020) == chrome://reftest/content/bugs/463217-1.xhtml chrome://reftest/content/bugs/463217-1-ref.xhtml
|
||||
== 463952-1.html 463952-1-ref.html
|
||||
== 464811-1.html 464811-1-ref.html
|
||||
== 465574-1.html 465574-1-ref.html # bug 421436
|
||||
|
@ -1718,7 +1718,7 @@ fuzzy-if(true,0-17,0-5886) fuzzy-if(skiaContent,0-9,0-5894) fuzzy-if(geckoview&&
|
|||
== 776443-1.html 776443-1-ref.html
|
||||
== 776443-2.html 776443-2-ref.html
|
||||
== 786254-1.html 786254-1-ref.html
|
||||
fails-if(gtkWidget&&webrender&&swgl) == 787947-1.html 787947-1-ref.html # Bug 1656817
|
||||
== 787947-1.html 787947-1-ref.html
|
||||
== 796847-1.svg 796847-1-ref.svg
|
||||
fuzzy(0-40,0-875) fuzzy-if(skiaContent,0-1,0-2500) == 797797-1.html 797797-1-ref.html # 'opacity:N' and rgba(,,,N) text don't match precisely
|
||||
fuzzy(0-40,0-850) fuzzy-if(skiaContent,0-2,0-2310) == 797797-2.html 797797-2-ref.html # 'opacity:N' and rgba(,,,N) text don't match precisely
|
||||
|
@ -1785,7 +1785,7 @@ fuzzy-if(skiaContent,0-1,0-5) == 956513-1.svg 956513-1-ref.svg
|
|||
== 957770-1.svg 957770-1-ref.svg
|
||||
== 960277-1.html 960277-1-ref.html
|
||||
fuzzy-if(skiaContent,0-1,0-80) == 961887-1.html 961887-1-ref.html
|
||||
fuzzy-if(gtkWidget&&webrender&&swgl,1-1,22-22) == 961887-2.html 961887-2-ref.html
|
||||
== 961887-2.html 961887-2-ref.html
|
||||
== 961887-3.html 961887-3-ref.html
|
||||
pref(layout.css.overflow-clip-box.enabled,true) fuzzy(0-50,0-145) fuzzy-if(asyncPan&&!layersGPUAccelerated,0-102,0-3712) fuzzy-if(webrender,0-255,0-180) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == 966992-1.html 966992-1-ref.html # Bug 1392106
|
||||
== 966510-1.html 966510-1-ref.html
|
||||
|
@ -1838,7 +1838,7 @@ fails-if(webrender) == 1059498-3.html 1059498-1-ref.html # WebRender: see bug 14
|
|||
== 1069716-1.html 1069716-1-ref.html
|
||||
skip-if(geckoview&&!webrender) == 1078262-1.html about:blank # bug 1656792
|
||||
test-pref(layout.testing.overlay-scrollbars.always-visible,false) == 1081072-1.html 1081072-1-ref.html
|
||||
fuzzy-if(webrender,63-64,359-845) == 1081185-1.html 1081185-1-ref.html
|
||||
fuzzy-if(webrender,63-64,407-845) == 1081185-1.html 1081185-1-ref.html
|
||||
== 1097437-1.html 1097437-1-ref.html
|
||||
== 1103258-1.html 1103258-1-ref.html # assertion crash test with layers culling test
|
||||
== 1105137-1.html 1105137-1-ref.html
|
||||
|
@ -1973,7 +1973,7 @@ fuzzy-if(Android,0-27,0-874) fuzzy-if(!Android,0-14,0-43) == 1313772.xhtml 13137
|
|||
fuzzy(0-3,0-320000) == 1315113-1.html 1315113-1-ref.html
|
||||
fuzzy(0-3,0-20000) == 1315113-2.html 1315113-2-ref.html
|
||||
== 1315632-1.html 1315632-1-ref.html
|
||||
fuzzy(0-2,0-40000) fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu),0-13,0-40000) fuzzy-if(gtkWidget&&webrender&&swgl,7-7,410-410) == 1316719-1a.html 1316719-1-ref.html
|
||||
fuzzy(0-2,0-40000) fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu),0-13,0-40000) == 1316719-1a.html 1316719-1-ref.html
|
||||
fuzzy(0-13,0-40000) fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu),0-13,0-40000) == 1316719-1b.html 1316719-1-ref.html
|
||||
fuzzy(0-13,0-40000) fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu),0-13,0-40000) == 1316719-1c.html 1316719-1-ref.html
|
||||
!= 1318769-1.html 1318769-1-ref.html
|
||||
|
|
|
@ -15,7 +15,7 @@ fuzzy(0-1,0-800000) == linear-flipped-1.html linear-flipped-1-ref.html
|
|||
== linear-repeat-1e.html linear-repeat-1-ref.html
|
||||
== linear-repeat-1f.html linear-repeat-1-ref.html
|
||||
fails-if(d2d&&!webrender) == linear-repeat-1g.html linear-repeat-1-ref.html # bug 582236
|
||||
fuzzy-if(skiaContent,0-1,0-500) fuzzy-if(webrender&&winWidget,0-2,0-100) fuzzy-if(webrender&>kWidget&&swgl,1-1,7600-7600) == linear-rotated-1.html linear-rotated-1-ref.html
|
||||
fuzzy-if(skiaContent,0-1,0-500) fuzzy-if(webrender&&winWidget,0-2,0-100) == linear-rotated-1.html linear-rotated-1-ref.html
|
||||
fuzzy-if(winWidget,0-1,0-37800) fuzzy-if(skiaContent,0-1,0-45000) == linear-size-1a.html linear-size-1-ref.html
|
||||
== linear-stops-1a.html linear-stops-1-ref.html
|
||||
== linear-stops-1b.html linear-stops-1-ref.html
|
||||
|
@ -47,8 +47,8 @@ fuzzy-if(Android,0-8,0-771) == radial-shape-farthest-corner-1a.html radial-shape
|
|||
fails-if(gtkWidget&&/x86_64-/.test(xulRuntime.XPCOMABI)) fuzzy(0-1,0-1622) fuzzy-if(cocoaWidget,0-2,0-41281) fuzzy-if(Android,0-8,0-1091) fuzzy-if(skiaContent,0-2,0-500) == radial-shape-farthest-corner-1b.html radial-shape-farthest-corner-1-ref.html
|
||||
fuzzy-if(Android,0-17,0-13320) == radial-shape-farthest-side-1a.html radial-shape-farthest-side-1-ref.html
|
||||
fuzzy-if(Android,0-17,0-13320) == radial-shape-farthest-side-1b.html radial-shape-farthest-side-1-ref.html
|
||||
fuzzy-if(webrender,0-2,0-26) == radial-size-1a.html radial-size-1-ref.html
|
||||
fuzzy-if(webrender,0-1,0-26) == radial-size-1b.html radial-size-1-ref.html
|
||||
fuzzy-if(webrender,0-2,0-12) == radial-size-1a.html radial-size-1-ref.html
|
||||
fuzzy-if(webrender,0-1,0-15) == radial-size-1b.html radial-size-1-ref.html
|
||||
fuzzy-if(Android,0-4,0-248) == radial-zero-length-1a.html radial-zero-length-1-ref.html
|
||||
fuzzy-if(Android,0-4,0-248) == radial-zero-length-1b.html radial-zero-length-1-ref.html
|
||||
fuzzy-if(Android,0-4,0-248) == radial-zero-length-1c.html radial-zero-length-1-ref.html
|
||||
|
|
|
@ -2,6 +2,6 @@ include input/reftest.list
|
|||
include textarea/reftest.list
|
||||
|
||||
fuzzy-if(skiaContent,0-1,0-4) == css-restrictions.html css-restrictions-ref.html
|
||||
fuzzy-if(gtkWidget,255-255,1376-1881) == css-simple-styling.html css-simple-styling-ref.html # gtkWidget, Bug 1600749
|
||||
fuzzy-if(gtkWidget,255-255,1376-1869) == css-simple-styling.html css-simple-styling-ref.html # gtkWidget, Bug 1600749
|
||||
!= css-background.html css-background-ref.html
|
||||
fuzzy-if(skiaContent,0-1,0-180) == ignore-pseudo-class.html ignore-pseudo-class-ref.html
|
||||
|
|
|
@ -12,7 +12,7 @@ fuzzy-if(webrender&&winWidget,117-129,47-54) == element-paint-simple.html elemen
|
|||
== element-paint-recursion.html element-paint-recursion-ref.html
|
||||
== element-paint-continuation.html element-paint-continuation-ref.html
|
||||
== element-paint-transform-01.html element-paint-transform-01-ref.html
|
||||
random-if(d2d) fuzzy-if(webrender,255-255,39-42) == element-paint-transform-02.html element-paint-transform-02-ref.html # bug 587133
|
||||
random-if(d2d) fuzzy-if(webrender,255-255,39-39) == element-paint-transform-02.html element-paint-transform-02-ref.html # bug 587133
|
||||
fuzzy-if(d2d&&/^Windows\x20NT\x206\.1/.test(http.oscpu),0-16,0-90) == element-paint-background-size-01.html element-paint-background-size-01-ref.html
|
||||
== element-paint-background-size-02.html element-paint-background-size-02-ref.html
|
||||
fuzzy-if(skiaContent,0-255,0-4) random-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)) == element-paint-transform-repeated.html element-paint-transform-repeated-ref.html # Bug 1475907
|
||||
|
|
|
@ -40,7 +40,7 @@ fuzzy-if(Android,0-4,0-810) == containing-block-1.html containing-block-1-ref.ht
|
|||
== inline-1.html inline-1-ref.html
|
||||
== inline-2.html inline-2-ref.html
|
||||
fuzzy-if(OSX,0-99,0-210) == inline-3.html inline-3-ref.html
|
||||
skip-if(!asyncPan) fuzzy-if(gtkWidget&&webrender&&swgl,1-1,3-3) == inline-4.html inline-4-ref.html
|
||||
skip-if(!asyncPan) == inline-4.html inline-4-ref.html
|
||||
== column-contain-1a.html column-contain-1-ref.html
|
||||
== column-contain-1b.html column-contain-1-ref.html
|
||||
== column-contain-2.html column-contain-2-ref.html
|
||||
|
@ -50,6 +50,6 @@ fuzzy-if(Android,0-8,0-630) fuzzy-if(OSX,0-1,0-11) fuzzy-if(skiaContent,0-1,0-22
|
|||
== block-in-inline-continuations.html block-in-inline-continuations-ref.html
|
||||
== iframe-1.html iframe-1-ref.html
|
||||
== transformed-1.html transformed-1-ref.html
|
||||
fuzzy-if(Android,0-4,0-4) fuzzy-if(webrender&>kWidget,16-17,28-32) fuzzy-if(webrender&&cocoaWidget,8-8,37-37) skip-if(!asyncPan) == transformed-2.html transformed-2-ref.html # Bug 1604644
|
||||
skip-if(!asyncPan) fuzzy-if(Android,0-10,0-4) fuzzy-if(webrender&>kWidget,29-30,32-32) fuzzy-if(webrender&&cocoaWidget,16-16,40-40) == nested-sticky-1.html nested-sticky-1-ref.html # Bug 1604644
|
||||
skip-if(!asyncPan) fuzzy-if(Android,0-10,0-4) fuzzy-if(webrender&>kWidget,29-30,32-32) fuzzy-if(webrender&&cocoaWidget,16-16,40-40) fuzzy-if(/^Windows\x20NT\x206\.1/.test(http.oscpu),0-4,0-104) == nested-sticky-2.html nested-sticky-2-ref.html # Bug 1604644
|
||||
fuzzy-if(Android,0-4,0-4) fuzzy-if(webrender&>kWidget,17-17,32-32) fuzzy-if(webrender&&cocoaWidget,8-8,37-37) skip-if(!asyncPan) == transformed-2.html transformed-2-ref.html # Bug 1604644
|
||||
skip-if(!asyncPan) fuzzy-if(Android,0-10,0-4) fuzzy-if(webrender&>kWidget,30-30,32-32) fuzzy-if(webrender&&cocoaWidget,16-16,40-40) == nested-sticky-1.html nested-sticky-1-ref.html # Bug 1604644
|
||||
skip-if(!asyncPan) fuzzy-if(Android,0-10,0-4) fuzzy-if(webrender&>kWidget,30-30,32-32) fuzzy-if(webrender&&cocoaWidget,16-16,40-40) fuzzy-if(/^Windows\x20NT\x206\.1/.test(http.oscpu),0-4,0-104) == nested-sticky-2.html nested-sticky-2-ref.html # Bug 1604644
|
||||
|
|
|
@ -108,7 +108,7 @@ fuzzy-if(/^Windows\x20NT\x2010\.0/.test(http.oscpu),0-2,0-25) fuzzy-if(webrender
|
|||
|
||||
== feFlood-color-01.svg pass.svg
|
||||
|
||||
fuzzy-if(webrender,20-21,5622-5646) == feGaussianBlur-alpha-01.svg feGaussianBlur-alpha-01-ref.svg
|
||||
fuzzy-if(webrender,20-21,5624-5646) == feGaussianBlur-alpha-01.svg feGaussianBlur-alpha-01-ref.svg
|
||||
|
||||
== feMorphology-radius-negative-01.svg pass.svg
|
||||
== feMorphology-radius-negative-02.svg pass.svg
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
== clip-path-polygon-010.html clip-path-stripes-001-ref.html
|
||||
== clip-path-polygon-011.html clip-path-stripes-001-ref.html
|
||||
== clip-path-polygon-012.html clip-path-stripes-001-ref.html
|
||||
fuzzy-if(skiaContent,0-1,0-20) fuzzy-if(webrender&>kWidget&&!swgl,8-8,20-20) fails-if(webrender&&!gtkWidget) == clip-path-polygon-013.html clip-path-stripes-003-ref.html
|
||||
fuzzy-if(skiaContent,0-1,0-20) fuzzy-if(webrender&>kWidget,8-8,20-20) fails-if(webrender&&!gtkWidget) == clip-path-polygon-013.html clip-path-stripes-003-ref.html
|
||||
|
||||
fuzzy-if(webrender,35-70,699-715) == clip-path-circle-001.html clip-path-circle-001-ref.html
|
||||
fuzzy-if(webrender,35-70,699-715) == clip-path-circle-002.html clip-path-circle-001-ref.html
|
||||
|
|
|
@ -503,7 +503,6 @@ function BuildConditionSandbox(aURL) {
|
|||
sandbox.advancedLayers =
|
||||
g.windowUtils.usingAdvancedLayers == true;
|
||||
sandbox.layerChecksEnabled = !sandbox.webrender;
|
||||
sandbox.swgl = sandbox.webrender && prefs.getBoolPref("gfx.webrender.software", false);
|
||||
|
||||
sandbox.retainedDisplayList =
|
||||
prefs.getBoolPref("layout.display-list.retain");
|
||||
|
|
|
@ -43,10 +43,8 @@ nsstring-gtest = { path = "../../../../xpcom/rust/gtest/nsstring" }
|
|||
xpcom-gtest = { path = "../../../../xpcom/rust/gtest/xpcom" }
|
||||
gkrust-shared = { path = "../../rust/shared" }
|
||||
gecko-fuzz-targets = { path = "../../../../tools/fuzzing/rust", optional = true }
|
||||
|
||||
# Workarounds for https://github.com/rust-lang/rust/issues/58393
|
||||
# Workaround for https://github.com/rust-lang/rust/issues/58393
|
||||
mozglue-static = { path = "../../../../mozglue/static/rust" }
|
||||
swgl = { path = "../../../../gfx/wr/swgl" }
|
||||
|
||||
[lib]
|
||||
path = "lib.rs"
|
||||
|
|
|
@ -40,10 +40,8 @@ with_dbus = ["gkrust-shared/with_dbus"]
|
|||
[dependencies]
|
||||
gkrust-shared = { path = "shared" }
|
||||
mozilla-central-workspace-hack = { path = "../../../build/workspace-hack" }
|
||||
|
||||
# Workarounds for https://github.com/rust-lang/rust/issues/58393
|
||||
# Workaround for https://github.com/rust-lang/rust/issues/58393
|
||||
mozglue-static = { path = "../../../mozglue/static/rust" }
|
||||
swgl = { path = "../../../gfx/wr/swgl" }
|
||||
|
||||
[dev-dependencies]
|
||||
stylo_tests = { path = "../../../servo/ports/geckolib/tests/" }
|
||||
|
|
Загрузка…
Ссылка в новой задаче