[Webkit-unassigned] [Bug 228268] [GTK4] [REGRESSION] Rendering on Nvidia is terribly broken, almost a blank screen

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Apr 3 19:21:55 PDT 2023


https://bugs.webkit.org/show_bug.cgi?id=228268

--- Comment #46 from Craig <craig.langman at gmail.com> ---
Terminal output:

$ flatpak run org.gnome.Epiphany

(epiphany:2): epiphany-WARNING **: 19:18:28.252: Failed to search secrets in password schema: org.freedesktop.DBus.Error.ServiceUnknown
Gsk-Message: 19:18:28.468: Failed to realize renderer of type 'GskGLRenderer' for surface 'GdkX11Toplevel': Compilation failure in shader.
Source Code:   1| #version 100
  2| #define GSK_GLES 1
  3| #define NO_CLIP 1
  4| #ifndef GSK_LEGACY
  5| precision highp float;
  6| #endif
  7|
  8| #if defined(GSK_GLES) || defined(GSK_LEGACY)
  9| #define _OUT_ varying
 10| #define _IN_ varying
 11| #define _GSK_ROUNDED_RECT_UNIFORM_ vec4[3]
 12| #else
 13| #define _OUT_ out
 14| #define _IN_ in
 15| #define _GSK_ROUNDED_RECT_UNIFORM_ GskRoundedRect
 16| #endif
 17|
 18|
 19| struct GskRoundedRect
 20| {
 21|   vec4 bounds; // Top left and bottom right
 22|   // Look, arrays can't be in structs if you want to return the struct
 23|   // from a function in gles or whatever. Just kill me.
 24|   vec4 corner_points1; // xy = top left, zw = top right
 25|   vec4 corner_points2; // xy = bottom right, zw = bottom left
 26| };
 27|
 28| // Transform from a C GskRoundedRect to what we need.
 29| GskRoundedRect
 30| gsk_create_rect(vec4[3] data)
 31| {
 32|   vec4 bounds = vec4(data[0].xy, data[0].xy + data[0].zw);
 33|
 34|   vec4 corner_points1 = vec4(bounds.xy + data[1].xy,
 35|                              bounds.zy + vec2(data[1].zw * vec2(-1, 1)));
 36|   vec4 corner_points2 = vec4(bounds.zw + (data[2].xy * vec2(-1, -1)),
 37|                              bounds.xw + vec2(data[2].zw * vec2(1, -1)));
 38|
 39|   return GskRoundedRect(bounds, corner_points1, corner_points2);
 40| }
 41|
 42| vec4
 43| gsk_get_bounds(vec4[3] data)
 44| {
 45|   return vec4(data[0].xy, data[0].xy + data[0].zw);
 46| }
 47|
 48| vec4 gsk_premultiply(vec4 c) {
 49|   return vec4(c.rgb * c.a, c.a);
 50| }
 51|
 52| vec4 gsk_scaled_premultiply(vec4 c, float s) {
 53|   // Fast version of gsk_premultiply(c) * s
 54|   // 4 muls instead of 7
 55|   float a = s * c.a;
 56|
 57|   return vec4(c.rgb * a, a);
 58| }
 59| uniform mat4 u_projection;
 60| uniform mat4 u_modelview;
 61| uniform float u_alpha;
 62|
 63| #if defined(GSK_GLES) || defined(GSK_LEGACY)
 64| attribute vec2 aPosition;
 65| attribute vec2 aUv;
 66| attribute vec4 aColor;
 67| attribute vec4 aColor2;
 68| _OUT_ vec2 vUv;
 69| #else
 70| _IN_ vec2 aPosition;
 71| _IN_ vec2 aUv;
 72| _IN_ vec4 aColor;
 73| _IN_ vec4 aColor2;
 74| _OUT_ vec2 vUv;
 75| #endif
 76|
 77| // amount is: top, right, bottom, left
 78| GskRoundedRect
 79| gsk_rounded_rect_shrink (GskRoundedRect r, vec4 amount)
 80| {
 81|   vec4 new_bounds = r.bounds + vec4(1.0,1.0,-1.0,-1.0) * amount.wxyz;
 82|   vec4 new_corner_points1 = r.corner_points1;
 83|   vec4 new_corner_points2 = r.corner_points2;
 84|
 85|   if (r.corner_points1.xy == r.bounds.xy) new_corner_points1.xy = new_bounds.xy;
 86|   if (r.corner_points1.zw == r.bounds.zy) new_corner_points1.zw = new_bounds.zy;
 87|   if (r.corner_points2.xy == r.bounds.zw) new_corner_points2.xy = new_bounds.zw;
 88|   if (r.corner_points2.zw == r.bounds.xw) new_corner_points2.zw = new_bounds.xw;
 89|
 90|   return GskRoundedRect (new_bounds, new_corner_points1, new_corner_points2);
 91| }
 92|
 93| void
 94| gsk_rounded_rect_offset(inout GskRoundedRect r, vec2 offset)
 95| {
 96|   r.bounds.xy += offset;
 97|   r.bounds.zw += offset;
 98|   r.corner_points1.xy += offset;
 99|   r.corner_points1.zw += offset;
100|   r.corner_points2.xy += offset;
101|   r.corner_points2.zw += offset;
102| }
103|
104| void gsk_rounded_rect_transform(inout GskRoundedRect r, mat4 mat)
105| {
106|   r.bounds.xy = (mat * vec4(r.bounds.xy, 0.0, 1.0)).xy;
107|   r.bounds.zw = (mat * vec4(r.bounds.zw, 0.0, 1.0)).xy;
108|
109|   r.corner_points1.xy = (mat * vec4(r.corner_points1.xy, 0.0, 1.0)).xy;
110|   r.corner_points1.zw = (mat * vec4(r.corner_points1.zw, 0.0, 1.0)).xy;
111|
112|   r.corner_points2.xy = (mat * vec4(r.corner_points2.xy, 0.0, 1.0)).xy;
113|   r.corner_points2.zw = (mat * vec4(r.corner_points2.zw, 0.0, 1.0)).xy;
114| }
115|
116| #if defined(GSK_LEGACY)
117| // Can't have out or inout array parameters...
118| #define gsk_rounded_rect_encode(r, uni) uni[0] = r.bounds; uni[1] = r.corner_points1; uni[2] = r.corner_points2;
119| #else
120| void gsk_rounded_rect_encode(GskRoundedRect r, out _GSK_ROUNDED_RECT_UNIFORM_ out_r)
121| {
122| #if defined(GSK_GLES)
123|   out_r[0] = r.bounds;
124|   out_r[1] = r.corner_points1;
125|   out_r[2] = r.corner_points2;
126| #else
127|   out_r = r;
128| #endif
129| }
130|
131| #endif
132|
133| // blend.glsl
134|
135| void main() {
136|   gl_Position = u_projection * u_modelview * vec4(aPosition, 0.0, 1.0);
137|
138|   vUv = vec2(aUv.x, aUv.y);
139| }
140|
141| // FRAGMENT_SHADER:

Error Message:
0(30) : error C7551: OpenGL first class arrays require #version 120
0(43) : error C7551: OpenGL first class arrays require #version 120
0(120) : error C7551: OpenGL first class arrays require #version 120




Cannot create EGL sharing context: error binding OpenGL API (EGL_BAD_PARAMETER)
Cannot create EGL sharing context: error binding OpenGL API (EGL_BAD_PARAMETER)

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20230404/66d82c31/attachment.htm>


More information about the webkit-unassigned mailing list