diff --git a/gsk/gl/resources/border.glsl b/gsk/gl/resources/border.glsl index 0fa3203887adfe8c106eb46c4d35ba87bd89f937..cf5955f307cb7b803397a4fbaf1f1ed31556b4aa 100644 --- a/gsk/gl/resources/border.glsl +++ b/gsk/gl/resources/border.glsl @@ -2,11 +2,16 @@ // border.glsl uniform vec4 u_widths; -uniform vec4[3] u_outline_rect; +uniform vec4 u_outline_rect[3]; _OUT_ vec4 final_color; +#if defined(GSK_GLES) || defined(GSK_LEGACY) +_OUT_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_outside_outline[3]; +_OUT_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_inside_outline[3]; +#else _OUT_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_outside_outline; _OUT_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_inside_outline; +#endif void main() { gl_Position = u_projection * u_modelview * vec4(aPosition, 0.0, 1.0); @@ -29,11 +34,16 @@ void main() { // FRAGMENT_SHADER: // border.glsl -uniform vec4[3] u_outline_rect; +uniform vec4 u_outline_rect[3]; _IN_ vec4 final_color; +#if defined(GSK_GLES) || defined(GSK_LEGACY) +_IN_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_outside_outline[3]; +_IN_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_inside_outline[3]; +#else _IN_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_outside_outline; _IN_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_inside_outline; +#endif void main() { vec2 frag = gsk_get_frag_coord(); diff --git a/gsk/gl/resources/filled_border.glsl b/gsk/gl/resources/filled_border.glsl index 23af3aa89c605f814019397f09da2a83745eea57..e5320cff0808e708090bbe7522e0b705606a2bee 100644 --- a/gsk/gl/resources/filled_border.glsl +++ b/gsk/gl/resources/filled_border.glsl @@ -2,12 +2,17 @@ // filled_border.glsl uniform vec4 u_widths; -uniform vec4[3] u_outline_rect; +uniform vec4 u_outline_rect[3]; _OUT_ vec4 outer_color; _OUT_ vec4 inner_color; +#if defined(GSK_GLES) || defined(GSK_LEGACY) +_OUT_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_outside_outline[3]; +_OUT_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_inside_outline[3]; +#else _OUT_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_outside_outline; _OUT_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_inside_outline; +#endif void main() { gl_Position = u_projection * u_modelview * vec4(aPosition, 0.0, 1.0); @@ -31,12 +36,17 @@ void main() { // FRAGMENT_SHADER: // filled_border.glsl -uniform vec4[3] u_outline_rect; +uniform vec4 u_outline_rect[3]; _IN_ vec4 outer_color; _IN_ vec4 inner_color; +#if defined(GSK_GLES) || defined(GSK_LEGACY) +_IN_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_outside_outline[3]; +_IN_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_inside_outline[3]; +#else _IN_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_outside_outline; _IN_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_inside_outline; +#endif void main() { vec2 frag = gsk_get_frag_coord(); diff --git a/gsk/gl/resources/inset_shadow.glsl b/gsk/gl/resources/inset_shadow.glsl index 83d4287f130c7dab1af094299e7d30723a1eb139..651587e27a75e5909a748ed028363bc24f2014e5 100644 --- a/gsk/gl/resources/inset_shadow.glsl +++ b/gsk/gl/resources/inset_shadow.glsl @@ -3,11 +3,16 @@ uniform float u_spread; uniform vec2 u_offset; -uniform vec4[3] u_outline_rect; +uniform vec4 u_outline_rect[3]; _OUT_ vec4 final_color; +#if defined(GSK_GLES) || defined(GSK_LEGACY) +_OUT_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_outside_outline[3]; +_OUT_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_inside_outline[3]; +#else _OUT_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_outside_outline; _OUT_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_inside_outline; +#endif void main() { gl_Position = u_projection * u_modelview * vec4(aPosition, 0.0, 1.0); @@ -33,8 +38,13 @@ void main() { // inset_shadow.glsl _IN_ vec4 final_color; +#if defined(GSK_GLES) || defined(GSK_LEGACY) +_IN_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_outside_outline[3]; +_IN_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_inside_outline[3]; +#else _IN_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_outside_outline; _IN_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_inside_outline; +#endif void main() { vec2 frag = gsk_get_frag_coord(); diff --git a/gsk/gl/resources/outset_shadow.glsl b/gsk/gl/resources/outset_shadow.glsl index fac86c0093c9ec49e0aa4bddbfca834ba640a205..71b49e28b71e112856175a1f3d68380ca2c36ce5 100644 --- a/gsk/gl/resources/outset_shadow.glsl +++ b/gsk/gl/resources/outset_shadow.glsl @@ -1,10 +1,14 @@ // VERTEX_SHADER: // outset_shadow.glsl -uniform vec4[3] u_outline_rect; +uniform vec4 u_outline_rect[3]; _OUT_ vec4 final_color; +#if defined(GSK_GLES) || defined(GSK_LEGACY) +_OUT_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_outline[3]; +#else _OUT_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_outline; +#endif void main() { gl_Position = u_projection * u_modelview * vec4(aPosition, 0.0, 1.0); @@ -23,7 +27,11 @@ void main() { // outset_shadow.glsl _IN_ vec4 final_color; +#if defined(GSK_GLES) || defined(GSK_LEGACY) +_IN_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_outline[3]; +#else _IN_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_outline; +#endif void main() { vec2 frag = gsk_get_frag_coord(); diff --git a/gsk/gl/resources/preamble.fs.glsl b/gsk/gl/resources/preamble.fs.glsl index 0c366bd8476ea01c909f0d52b0eb1f659b7d72cc..56389c16d654e49d04f93dfd57df57bb3c4e54db 100644 --- a/gsk/gl/resources/preamble.fs.glsl +++ b/gsk/gl/resources/preamble.fs.glsl @@ -3,7 +3,7 @@ uniform mat4 u_projection; uniform mat4 u_modelview; uniform float u_alpha; uniform vec4 u_viewport; -uniform vec4[3] u_clip_rect; +uniform vec4 u_clip_rect[3]; #if defined(GSK_LEGACY) _OUT_ vec4 outputColor; @@ -14,7 +14,11 @@ _OUT_ vec4 outputColor; _IN_ vec2 vUv; +#if defined(GSK_GLES) || defined(GSK_LEGACY) +GskRoundedRect gsk_decode_rect(_GSK_ROUNDED_RECT_UNIFORM_ r[3]) +#else GskRoundedRect gsk_decode_rect(_GSK_ROUNDED_RECT_UNIFORM_ r) +#endif { GskRoundedRect rect; #if defined(GSK_GLES) || defined(GSK_LEGACY) diff --git a/gsk/gl/resources/preamble.glsl b/gsk/gl/resources/preamble.glsl index 46bebc14e0477fde28db8914e6056c2decb384b3..e93ebeb52b36aba6f7c581fd21bb470dca9c6e32 100644 --- a/gsk/gl/resources/preamble.glsl +++ b/gsk/gl/resources/preamble.glsl @@ -5,7 +5,7 @@ precision highp float; #if defined(GSK_GLES) || defined(GSK_LEGACY) #define _OUT_ varying #define _IN_ varying -#define _GSK_ROUNDED_RECT_UNIFORM_ vec4[3] +#define _GSK_ROUNDED_RECT_UNIFORM_ vec4 #else #define _OUT_ out #define _IN_ in @@ -73,7 +73,7 @@ void gsk_bounds_normalize (inout vec4 bounds) // Transform from a C GskRoundedRect to what we need. GskRoundedRect -gsk_create_rect(vec4[3] data) +gsk_create_rect(vec4 data[3]) { vec4 bounds = vec4(data[0].xy, data[0].xy + data[0].zw); @@ -90,7 +90,7 @@ gsk_create_rect(vec4[3] data) } vec4 -gsk_get_bounds(vec4[3] data) +gsk_get_bounds(vec4 data[3]) { vec4 bounds = vec4(data[0].xy, data[0].xy + data[0].zw); diff --git a/gsk/gl/resources/preamble.vs.glsl b/gsk/gl/resources/preamble.vs.glsl index 758bca89d200e57457dc691f64b10d0776c461ef..1b3617e7b5609d610dc07c74091fe0ca6c0cbb07 100644 --- a/gsk/gl/resources/preamble.vs.glsl +++ b/gsk/gl/resources/preamble.vs.glsl @@ -58,6 +58,8 @@ void gsk_rounded_rect_transform(inout GskRoundedRect r, mat4 mat) #if defined(GSK_LEGACY) // Can't have out or inout array parameters... #define gsk_rounded_rect_encode(r, uni) uni[0] = r.bounds; uni[1] = r.corner_points1; uni[2] = r.corner_points2; +#elif defined(GSK_GLES) +void gsk_rounded_rect_encode(GskRoundedRect r, out _GSK_ROUNDED_RECT_UNIFORM_ out_r[3]) #else void gsk_rounded_rect_encode(GskRoundedRect r, out _GSK_ROUNDED_RECT_UNIFORM_ out_r) { diff --git a/gsk/gl/resources/unblurred_outset_shadow.glsl b/gsk/gl/resources/unblurred_outset_shadow.glsl index cd44212c933f2c29721b306d903cca2d93514a8e..694e864f11c60282fb55d9c98897958d3b637183 100644 --- a/gsk/gl/resources/unblurred_outset_shadow.glsl +++ b/gsk/gl/resources/unblurred_outset_shadow.glsl @@ -3,11 +3,16 @@ uniform float u_spread; uniform vec2 u_offset; -uniform vec4[3] u_outline_rect; +uniform vec4 u_outline_rect[3]; _OUT_ vec4 final_color; +#if defined(GSK_GLES) || defined(GSK_LEGACY) +_OUT_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_outside_outline[3]; +_OUT_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_inside_outline[3]; +#else _OUT_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_outside_outline; _OUT_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_inside_outline; +#endif void main() { gl_Position = u_projection * u_modelview * vec4(aPosition, 0.0, 1.0); @@ -29,8 +34,13 @@ void main() { // FRAGMENT_SHADER: // unblurred_outset_shadow.glsl _IN_ vec4 final_color; +#if defined(GSK_GLES) || defined(GSK_LEGACY) +_IN_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_outside_outline[3]; +_IN_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_inside_outline[3]; +#else _IN_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_outside_outline; _IN_ _GSK_ROUNDED_RECT_UNIFORM_ transformed_inside_outline; +#endif void main() { vec2 frag = gsk_get_frag_coord();