@@ -8,7 +8,7 @@ extern crate webrender_build;
88
99use std:: collections:: HashSet ;
1010use std:: fmt:: Write ;
11- use webrender_build:: shader:: { ShaderFeatureFlags , get_shader_features } ;
11+ use webrender_build:: shader:: { get_shader_features , ShaderFeatureFlags } ;
1212
1313// Shader key is in "name feature,feature" format.
1414// File name needs to be formatted as "name_feature_feature".
@@ -23,22 +23,35 @@ fn write_load_shader(shader_keys: &[String]) {
2323 }
2424 load_shader. push_str ( "ProgramLoader load_shader(const char* name) {\n " ) ;
2525 for s in shader_keys {
26- let _ = write ! ( load_shader, " if (!strcmp(name, \" {}\" )) {{ return {}_program::loader; }}\n " ,
27- s, shader_file( s) ) ;
26+ let _ = write ! (
27+ load_shader,
28+ " if (!strcmp(name, \" {}\" )) {{ return {}_program::loader; }}\n " ,
29+ s,
30+ shader_file( s)
31+ ) ;
2832 }
2933 load_shader. push_str ( " return nullptr;\n }\n " ) ;
30- std:: fs:: write ( std:: env:: var ( "OUT_DIR" ) . unwrap ( ) + "/load_shader.h" , load_shader) . unwrap ( ) ;
34+ std:: fs:: write (
35+ std:: env:: var ( "OUT_DIR" ) . unwrap ( ) + "/load_shader.h" ,
36+ load_shader,
37+ )
38+ . unwrap ( ) ;
3139}
3240
33- fn process_imports ( shader_dir : & str , shader : & str , included : & mut HashSet < String > , output : & mut String ) {
41+ fn process_imports (
42+ shader_dir : & str ,
43+ shader : & str ,
44+ included : & mut HashSet < String > ,
45+ output : & mut String ,
46+ ) {
3447 if !included. insert ( shader. into ( ) ) {
3548 return ;
3649 }
3750 println ! ( "cargo:rerun-if-changed={}/{}.glsl" , shader_dir, shader) ;
3851 let source = std:: fs:: read_to_string ( format ! ( "{}/{}.glsl" , shader_dir, shader) ) . unwrap ( ) ;
3952 for line in source. lines ( ) {
4053 if line. starts_with ( "#include " ) {
41- let imports = line[ "#include " . len ( ) ..] . split ( ',' ) ;
54+ let imports = line[ "#include " . len ( ) ..] . split ( ',' ) ;
4255 for import in imports {
4356 process_imports ( shader_dir, import, included, output) ;
4457 }
@@ -57,8 +70,11 @@ fn translate_shader(
5770 suppressed_env_vars : & mut Option < Vec < EnvVarGuard > > ,
5871) {
5972 let mut imported = String :: from ( "#define SWGL 1\n #define __VERSION__ 150\n " ) ;
60- let _ = write ! ( imported, "#define WR_MAX_VERTEX_TEXTURE_WIDTH {}U\n " ,
61- webrender_build:: MAX_VERTEX_TEXTURE_WIDTH ) ;
73+ let _ = write ! (
74+ imported,
75+ "#define WR_MAX_VERTEX_TEXTURE_WIDTH {}U\n " ,
76+ webrender_build:: MAX_VERTEX_TEXTURE_WIDTH
77+ ) ;
6278
6379 let ( basename, features) =
6480 shader_key. split_at ( shader_key. find ( ' ' ) . unwrap_or ( shader_key. len ( ) ) ) ;
@@ -112,38 +128,36 @@ fn translate_shader(
112128 }
113129 }
114130 build. file ( & imp_name) ;
115- let vs = build. clone ( )
116- . define ( "WR_VERTEX_SHADER" , Some ( "1" ) )
117- . expand ( ) ;
118- let fs = build. clone ( )
131+ let vs = build. clone ( ) . define ( "WR_VERTEX_SHADER" , Some ( "1" ) ) . expand ( ) ;
132+ let fs = build
133+ . clone ( )
119134 . define ( "WR_FRAGMENT_SHADER" , Some ( "1" ) )
120135 . expand ( ) ;
121136 let vs_name = format ! ( "{}/{}.vert" , out_dir, shader) ;
122137 let fs_name = format ! ( "{}/{}.frag" , out_dir, shader) ;
123138 std:: fs:: write ( & vs_name, vs) . unwrap ( ) ;
124139 std:: fs:: write ( & fs_name, fs) . unwrap ( ) ;
125140
126- let args = vec ! [
127- "glsl_to_cxx" . to_string( ) ,
128- vs_name,
129- fs_name,
130- ] ;
141+ let args = vec ! [ "glsl_to_cxx" . to_string( ) , vs_name, fs_name] ;
131142 let result = glsl_to_cxx:: translate ( & mut args. into_iter ( ) ) ;
132143 std:: fs:: write ( format ! ( "{}/{}.h" , out_dir, shader) , result) . unwrap ( ) ;
133144}
134145
135146fn main ( ) {
136147 let shader_dir = std:: env:: var ( "CARGO_MANIFEST_DIR" ) . unwrap ( ) + "/../webrender/res" ;
137148
138- let shader_flags =
139- ShaderFeatureFlags :: GL |
140- ShaderFeatureFlags :: DUAL_SOURCE_BLENDING |
141- ShaderFeatureFlags :: ADVANCED_BLEND_EQUATION |
142- ShaderFeatureFlags :: DEBUG ;
149+ let shader_flags = ShaderFeatureFlags :: GL
150+ | ShaderFeatureFlags :: DUAL_SOURCE_BLENDING
151+ | ShaderFeatureFlags :: ADVANCED_BLEND_EQUATION
152+ | ShaderFeatureFlags :: DEBUG ;
143153 let mut shaders: Vec < String > = Vec :: new ( ) ;
144154 for ( name, features) in get_shader_features ( shader_flags) {
145155 shaders. extend ( features. iter ( ) . map ( |f| {
146- if f. is_empty ( ) { name. to_owned ( ) } else { format ! ( "{} {}" , name, f) }
156+ if f. is_empty ( ) {
157+ name. to_owned ( )
158+ } else {
159+ format ! ( "{} {}" , name, f)
160+ }
147161 } ) ) ;
148162 }
149163
@@ -172,16 +186,18 @@ fn main() {
172186
173187 if let Ok ( tool) = build. try_get_compiler ( ) {
174188 if tool. is_like_msvc ( ) {
175- build. flag ( "/std:c++17" )
176- . flag ( "/EHs-" )
177- . flag ( "/GR-" )
178- . flag ( "/UMOZILLA_CONFIG_H" ) ;
189+ build
190+ . flag ( "/std:c++17" )
191+ . flag ( "/EHs-" )
192+ . flag ( "/GR-" )
193+ . flag ( "/UMOZILLA_CONFIG_H" ) ;
179194 } else {
180- build. flag ( "-std=c++17" )
181- . flag ( "-fno-exceptions" )
182- . flag ( "-fno-rtti" )
183- . flag ( "-fno-math-errno" )
184- . flag ( "-UMOZILLA_CONFIG_H" ) ;
195+ build
196+ . flag ( "-std=c++17" )
197+ . flag ( "-fno-exceptions" )
198+ . flag ( "-fno-rtti" )
199+ . flag ( "-fno-math-errno" )
200+ . flag ( "-UMOZILLA_CONFIG_H" ) ;
185201 }
186202 // SWGL relies heavily on inlining for performance so override -Oz with -O2
187203 if tool. args ( ) . contains ( & "-Oz" . into ( ) ) {
@@ -197,20 +213,23 @@ fn main() {
197213 // probably explicitly use reciprocal instructions and avoid the refinement step.
198214 // Also, allow checks for non-finite values which fast-math may disable.
199215 if tool. is_like_msvc ( ) {
200- build. flag ( "/fp:fast" )
201- . flag ( "-Xclang" )
202- . flag ( "-mrecip=none" )
203- . flag ( "/clang:-fno-finite-math-only" ) ;
216+ build
217+ . flag ( "/fp:fast" )
218+ . flag ( "-Xclang" )
219+ . flag ( "-mrecip=none" )
220+ . flag ( "/clang:-fno-finite-math-only" ) ;
204221 } else if tool. is_like_clang ( ) {
205222 // gcc only supports -mrecip=none on some targets so to keep
206223 // things simple we don't use -ffast-math with gcc at all
207- build. flag ( "-ffast-math" )
208- . flag ( "-mrecip=none" )
209- . flag ( "-fno-finite-math-only" ) ;
224+ build
225+ . flag ( "-ffast-math" )
226+ . flag ( "-mrecip=none" )
227+ . flag ( "-fno-finite-math-only" ) ;
210228 }
211229 }
212230
213- build. file ( "src/gl.cc" )
231+ build
232+ . file ( "src/gl.cc" )
214233 . define ( "_GLIBCXX_USE_CXX11_ABI" , Some ( "0" ) )
215234 . include ( shader_dir)
216235 . include ( "src" )
0 commit comments