@@ -41,16 +41,10 @@ class GlslShaderRenderTester : public RenderUtil::ShaderRenderTester
4141
4242 void createRenderer (std::ostream& log) override ;
4343
44- bool runRenderer (const std::string& shaderName,
45- mx::TypedElementPtr element,
46- mx::GenContext& context,
47- mx::DocumentPtr doc,
48- std::ostream& log,
49- const GenShaderUtil::TestSuiteOptions& testOptions,
50- RenderUtil::RenderProfileTimes& profileTimes,
51- const mx::FileSearchPath& imageSearchPath,
52- const std::string& outputPath = " ." ,
53- mx::ImageVec* imageVec = nullptr ) override ;
44+ RenderUtil::RenderProfileResult runRenderer (
45+ const RenderUtil::RenderSession& session,
46+ const RenderUtil::RenderItem& item,
47+ mx::GenContext& context) override ;
5448
5549 bool saveImage (const mx::FilePath& filePath, mx::ConstImagePtr image, bool verticalFlip) const override ;
5650
@@ -151,22 +145,23 @@ bool GlslShaderRenderTester::saveImage(const mx::FilePath& filePath, mx::ConstIm
151145 return _renderer->getImageHandler ()->saveImage (filePath, image, verticalFlip);
152146}
153147
154- bool GlslShaderRenderTester::runRenderer (const std::string& shaderName,
155- mx::TypedElementPtr element,
156- mx::GenContext& context,
157- mx::DocumentPtr doc,
158- std::ostream& log,
159- const GenShaderUtil::TestSuiteOptions& testOptions,
160- RenderUtil::RenderProfileTimes& profileTimes,
161- const mx::FileSearchPath& imageSearchPath,
162- const std::string& outputPath,
163- mx::ImageVec* imageVec)
148+ RenderUtil::RenderProfileResult GlslShaderRenderTester::runRenderer (
149+ const RenderUtil::RenderSession& session,
150+ const RenderUtil::RenderItem& item,
151+ mx::GenContext& context)
164152{
153+ RenderUtil::RenderProfileResult result;
154+ const std::string& shaderName = item.shaderName ();
155+ mx::DocumentPtr doc = item.doc ();
156+ mx::TypedElementPtr element = item.element ;
157+ const GenShaderUtil::TestSuiteOptions& testOptions = session.testOptions ;
158+ std::ostream& log = session.log ;
159+
165160 MX_TRACE_FUNCTION (mx::Tracing::Category::Render);
166161 MX_TRACE_SCOPE (mx::Tracing::Category::Material, shaderName.c_str ());
167162 std::cout << " Validating GLSL rendering for: " << doc->getSourceUri () << std::endl;
168163
169- mx::ScopedTimer totalGLSLTime (&profileTimes .languageTimes .totalTime );
164+ mx::ScopedTimer totalGLSLTime (&result .languageTimes .totalTime );
170165
171166 const mx::ShaderGenerator& shadergen = context.getShaderGenerator ();
172167 mx::FileSearchPath searchPath = mx::getDefaultDataSearchPath ();
@@ -180,13 +175,13 @@ bool GlslShaderRenderTester::runRenderer(const std::string& shaderName,
180175
181176 for (auto options : optionsList)
182177 {
183- profileTimes .elementsTested ++;
178+ result .elementsTested ++;
184179
185- mx::FilePath outputFilePath = outputPath;
180+ mx::FilePath outputFilePath = item. outputPath ;
186181
187182 // Note: mkdir will fail if the directory already exists which is ok.
188183 {
189- mx::ScopedTimer ioDir (&profileTimes .languageTimes .ioTime );
184+ mx::ScopedTimer ioDir (&result .languageTimes .ioTime );
190185 outputFilePath.createDirectory (true );
191186
192187 // Use separate directory for reduced output
@@ -201,11 +196,11 @@ bool GlslShaderRenderTester::runRenderer(const std::string& shaderName,
201196 mx::ShaderPtr shader;
202197 try
203198 {
204- mx::ScopedTimer transpTimer (&profileTimes .languageTimes .transparencyTime );
199+ mx::ScopedTimer transpTimer (&result .languageTimes .transparencyTime );
205200 options.hwTransparency = mx::isTransparentSurface (element, shadergen.getTarget ());
206201 transpTimer.endTimer ();
207202
208- mx::ScopedTimer generationTimer (&profileTimes .languageTimes .generationTime );
203+ mx::ScopedTimer generationTimer (&result .languageTimes .generationTime );
209204 MX_TRACE_SCOPE (mx::Tracing::Category::ShaderGen, " GenerateShader" );
210205 mx::GenOptions& contextOptions = context.getOptions ();
211206 contextOptions = options;
@@ -223,7 +218,8 @@ bool GlslShaderRenderTester::runRenderer(const std::string& shaderName,
223218 if (shader == nullptr )
224219 {
225220 log << " >> Failed to generate shader\n " ;
226- return false ;
221+ result.success = false ;
222+ return result;
227223 }
228224 const std::string& vertexSourceCode = shader->getSourceCode (mx::Stage::VERTEX);
229225 const std::string& pixelSourceCode = shader->getSourceCode (mx::Stage::PIXEL);
@@ -233,7 +229,7 @@ bool GlslShaderRenderTester::runRenderer(const std::string& shaderName,
233229 if (testOptions.dumpGeneratedCode )
234230 {
235231 MX_TRACE_SCOPE (mx::Tracing::Category::Render, " DumpGeneratedCode" );
236- mx::ScopedTimer dumpTimer (&profileTimes .languageTimes .ioTime );
232+ mx::ScopedTimer dumpTimer (&result .languageTimes .ioTime );
237233 std::ofstream file;
238234 file.open (shaderPath + " _vs.glsl" );
239235 file << vertexSourceCode;
@@ -285,15 +281,15 @@ bool GlslShaderRenderTester::runRenderer(const std::string& shaderName,
285281
286282 {
287283 MX_TRACE_SCOPE (mx::Tracing::Category::Render, " CompileShader" );
288- mx::ScopedTimer compileTimer (&profileTimes .languageTimes .compileTime );
284+ mx::ScopedTimer compileTimer (&result .languageTimes .compileTime );
289285 _renderer->createProgram (shader);
290286 _renderer->validateInputs ();
291287 }
292288
293289 if (testOptions.dumpUniformsAndAttributes )
294290 {
295291 MX_TRACE_SCOPE (mx::Tracing::Category::Render, " DumpUniformsAndAttributes" );
296- mx::ScopedTimer printTimer (&profileTimes .languageTimes .ioTime );
292+ mx::ScopedTimer printTimer (&result .languageTimes .ioTime );
297293 log << " * Uniform:" << std::endl;
298294 program->printUniforms (log);
299295 log << " * Attributes:" << std::endl;
@@ -353,8 +349,8 @@ bool GlslShaderRenderTester::runRenderer(const std::string& shaderName,
353349
354350 {
355351 MX_TRACE_SCOPE (mx::Tracing::Category::Render, " RenderMaterial" );
356- mx::ScopedTimer renderTimer (&profileTimes .languageTimes .renderTime );
357- _renderer->getImageHandler ()->setSearchPath (imageSearchPath);
352+ mx::ScopedTimer renderTimer (&result .languageTimes .renderTime );
353+ _renderer->getImageHandler ()->setSearchPath (item. imageSearchPath );
358354 unsigned int width = (unsigned int ) testOptions.renderSize [0 ] * supersampleFactor;
359355 unsigned int height = (unsigned int ) testOptions.renderSize [1 ] * supersampleFactor;
360356 _renderer->setSize (width, height);
@@ -364,7 +360,7 @@ bool GlslShaderRenderTester::runRenderer(const std::string& shaderName,
364360
365361 {
366362 MX_TRACE_SCOPE (mx::Tracing::Category::Render, " CaptureAndSaveImage" );
367- mx::ScopedTimer ioTimer (&profileTimes .languageTimes .imageSaveTime );
363+ mx::ScopedTimer ioTimer (&result .languageTimes .imageSaveTime );
368364 std::string fileName = shaderPath + " _glsl.png" ;
369365 mx::ImagePtr image = _renderer->captureImage ();
370366 if (image)
@@ -374,9 +370,9 @@ bool GlslShaderRenderTester::runRenderer(const std::string& shaderName,
374370 image = image->applyBoxDownsample (supersampleFactor);
375371 }
376372 _renderer->getImageHandler ()->saveImage (fileName, image, true );
377- if (imageVec)
373+ if (item. imageVec )
378374 {
379- imageVec->push_back (image);
375+ item. imageVec ->push_back (image);
380376 }
381377 }
382378 }
@@ -409,7 +405,7 @@ bool GlslShaderRenderTester::runRenderer(const std::string& shaderName,
409405 CHECK (validated);
410406 }
411407 }
412- return true ;
408+ return result ;
413409}
414410
415411TEST_CASE (" Render: GLSL TestSuite" , " [renderglsl]" )
0 commit comments