diff --git a/src/liboslexec/loadshader.cpp b/src/liboslexec/loadshader.cpp index 0ea41a866..03f60519f 100644 --- a/src/liboslexec/loadshader.cpp +++ b/src/liboslexec/loadshader.cpp @@ -589,8 +589,9 @@ ShadingSystemImpl::loadshader(string_view cname) } if (ok) { ++m_stat_shaders_loaded; - infofmt("Loaded \"{}\" (took {})", filename, - Strutil::timeintervalformat(loadtime, 2)); + if (debug()) + infofmt("Loaded \"{}\" (took {})", filename, + Strutil::timeintervalformat(loadtime, 2)); OSL_DASSERT(r); r->resolve_syms(); // if (debug()) { @@ -643,8 +644,9 @@ ShadingSystemImpl::LoadMemoryCompiledShader(string_view shadername, } if (ok) { ++m_stat_shaders_loaded; - infofmt("Loaded \"{}\" (took {})", shadername, - Strutil::timeintervalformat(loadtime, 2)); + if (debug()) + infofmt("Loaded \"{}\" (took {})", shadername, + Strutil::timeintervalformat(loadtime, 2)); OSL_DASSERT(r); r->resolve_syms(); // if (debug()) { diff --git a/src/liboslexec/shadingsys.cpp b/src/liboslexec/shadingsys.cpp index e40f33a29..671b396fc 100644 --- a/src/liboslexec/shadingsys.cpp +++ b/src/liboslexec/shadingsys.cpp @@ -68,9 +68,8 @@ ShadingSystem::ShadingSystem(RendererServices* renderer, err = &ErrorHandler::default_handler(); } m_impl = new ShadingSystemImpl(renderer, texturesystem, err); -#ifndef NDEBUG - err->infofmt("creating new ShadingSystem {:p}", (void*)this); -#endif + if (m_impl->debug()) + err->debugfmt("creating new ShadingSystem {:p}", (void*)this); } diff --git a/src/testshade/testshade.cpp b/src/testshade/testshade.cpp index 5309d892d..9c1f999da 100644 --- a/src/testshade/testshade.cpp +++ b/src/testshade/testshade.cpp @@ -106,7 +106,6 @@ static ParamValueList params; static std::vector param_hints; static ParamValueList reparams; static std::string reparam_layer; -static ErrorHandler errhandler; static int iters = 1; static std::string raytype_name = "camera"; static int raytype_bit = 0; @@ -206,7 +205,8 @@ set_shadingsys_options() shadingsys->attribute("llvm_debug", (llvm_debug ? 2 : 0)); shadingsys->attribute("debug", debug2 ? 2 : (debug1 ? 1 : 0)); - shadingsys->attribute("compile_report", debug1 | debug2); + if (debug1 || debug2) + shadingsys->attribute("compile_report", 1); int opt = 2; // default if (O0) opt = 0; @@ -669,27 +669,28 @@ stash_userdata(cspan argv) void print_info() { - ErrorHandler errhandler; - SimpleRenderer* rend = nullptr; + std::unique_ptr rend; #if OSL_USE_OPTIX if (use_optix) - rend = new OptixGridRenderer; + rend.reset(new OptixGridRenderer); else #endif - rend = new SimpleRenderer; + rend.reset(new SimpleRenderer); auto texturesys = TextureSystem::create(); #if OIIO_TEXTURESYSTEM_CREATE_SHARED - shadingsys = new ShadingSystem(rend, texturesys.get(), &errhandler); + auto shadingsys = std::make_unique(rend.get(), + texturesys.get(), + &rend->errhandler()); #else - shadingsys = new ShadingSystem(rend, texturesys, &errhandler); + auto shadingsys = std::make_unique(rend.get(), texturesys, + &rend->errhandler()); #endif - rend->init_shadingsys(shadingsys); + rend->init_shadingsys(shadingsys.get()); set_shadingsys_options(); std::cout << "\n" << shadingsys->getstats(5) << "\n"; - delete shadingsys; - delete rend; + shadingsys.reset(); } @@ -1945,13 +1946,13 @@ test_shade(int argc, const char* argv[]) 3.5); } - SimpleRenderer* rend = nullptr; + std::unique_ptr rend; #if OSL_USE_OPTIX if (use_optix) - rend = new OptixGridRenderer; + rend.reset(new OptixGridRenderer); else #endif - rend = new SimpleRenderer; + rend.reset(new SimpleRenderer); // Other renderer and global options if (debug1 || verbose) @@ -1981,7 +1982,7 @@ test_shade(int argc, const char* argv[]) // object that services callbacks from the shading system, the // TextureSystem (note: passing nullptr just makes the ShadingSystem // make its own TS), and an error handler. - shadingsys = new ShadingSystem(rend, texturesys, &errhandler); + shadingsys = new ShadingSystem(rend.get(), texturesys, &rend->errhandler()); rend->init_shadingsys(shadingsys); // Register the layout of all closures known to this renderer @@ -2122,14 +2123,16 @@ test_shade(int argc, const char* argv[]) #if OSL_USE_OPTIX if (use_optix) { - reinterpret_cast(rend)->set_transforms(Mobj, Mshad); - reinterpret_cast(rend)->register_named_transforms(); - reinterpret_cast(rend)->synch_attributes(); + reinterpret_cast(rend.get()) + ->set_transforms(Mobj, Mshad); + reinterpret_cast(rend.get()) + ->register_named_transforms(); + reinterpret_cast(rend.get())->synch_attributes(); } #endif // Set up the image outputs requested on the command line - setup_output_images(rend, shadingsys, shadergroup); + setup_output_images(rend.get(), shadingsys, shadergroup); if (debug1) test_group_attributes(shadergroup.get()); @@ -2204,21 +2207,24 @@ test_shade(int argc, const char* argv[]) if (batch_size == 16) { OIIO::ImageBufAlgo::parallel_image( roi, num_threads, [&](OIIO::ROI sub_roi) -> void { - batched_shade_region<16>(rend, shadergroup.get(), - sub_roi, save); + batched_shade_region<16>(rend.get(), + shadergroup.get(), sub_roi, + save); }); } else if (batch_size == 8) { OIIO::ImageBufAlgo::parallel_image( roi, num_threads, [&](OIIO::ROI sub_roi) -> void { - batched_shade_region<8>(rend, shadergroup.get(), - sub_roi, save); + batched_shade_region<8>(rend.get(), + shadergroup.get(), sub_roi, + save); }); } else { OSL_ASSERT((batch_size == 4) && "Unsupported batch size"); OIIO::ImageBufAlgo::parallel_image( roi, num_threads, [&](OIIO::ROI sub_roi) -> void { - batched_shade_region<4>(rend, shadergroup.get(), - sub_roi, save); + batched_shade_region<4>(rend.get(), + shadergroup.get(), sub_roi, + save); }); } } else @@ -2226,7 +2232,8 @@ test_shade(int argc, const char* argv[]) { OIIO::ImageBufAlgo::parallel_image( roi, num_threads, [&](OIIO::ROI sub_roi) -> void { - shade_region(rend, shadergroup.get(), sub_roi, save); + shade_region(rend.get(), shadergroup.get(), sub_roi, + save); }); } #endif @@ -2255,7 +2262,7 @@ test_shade(int argc, const char* argv[]) journal::TrackRecentlyReported tracker_error_warnings( limit_errors, error_history_capacity, limit_warnings, warning_history_capacity); - TestshadeReporter reporter(&errhandler, tracker_error_warnings); + TestshadeReporter reporter(&rend->errhandler(), tracker_error_warnings); OSL::journal::Reader jreader(jbuffer.get(), reporter); jreader.process(); // Need to call journal::initialize_buffer before re-using the jbuffer @@ -2352,7 +2359,5 @@ test_shade(int argc, const char* argv[]) retcode = EXIT_FAILURE; } - delete rend; - return retcode; }