Skip to content

Commit

Permalink
Added Instrumentation support to IO operations
Browse files Browse the repository at this point in the history
  • Loading branch information
robertosfield committed Dec 20, 2023
1 parent 76a8018 commit b4b25ad
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 1 deletion.
10 changes: 10 additions & 0 deletions src/vsg/io/VSG.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ void VSG::writeHeader(std::ostream& fout, const FormatInfo& formatInfo) const

vsg::ref_ptr<vsg::Object> VSG::read(const vsg::Path& filename, ref_ptr<const Options> options) const
{
CPU_INSTRUMENTATION_L1(options ? options->instrumentation.get() : nullptr);

if (!compatibleExtension(filename, options, ".vsgb", ".vsgt")) return {};

vsg::Path filenameToUse = findFile(filename, options);
Expand Down Expand Up @@ -123,6 +125,8 @@ vsg::ref_ptr<vsg::Object> VSG::read(const vsg::Path& filename, ref_ptr<const Opt

vsg::ref_ptr<vsg::Object> VSG::read(std::istream& fin, vsg::ref_ptr<const vsg::Options> options) const
{
CPU_INSTRUMENTATION_L1(options ? options->instrumentation.get() : nullptr);

if (options && !compatibleExtension(options, ".vsgb", ".vsgt")) return {};

auto [type, version] = readHeader(fin);
Expand All @@ -144,6 +148,8 @@ vsg::ref_ptr<vsg::Object> VSG::read(std::istream& fin, vsg::ref_ptr<const vsg::O

vsg::ref_ptr<vsg::Object> VSG::read(const uint8_t* ptr, size_t size, vsg::ref_ptr<const vsg::Options> options) const
{
CPU_INSTRUMENTATION_L1(options ? options->instrumentation.get() : nullptr);

if (options && !compatibleExtension(options, ".vsgb", ".vsgt")) return {};

mem_stream fin(ptr, size);
Expand All @@ -152,6 +158,8 @@ vsg::ref_ptr<vsg::Object> VSG::read(const uint8_t* ptr, size_t size, vsg::ref_pt

bool VSG::write(const vsg::Object* object, const vsg::Path& filename, ref_ptr<const Options> options) const
{
CPU_INSTRUMENTATION_L1(options ? options->instrumentation.get() : nullptr);

auto version = vsgGetVersion();

if (options)
Expand Down Expand Up @@ -192,6 +200,8 @@ bool VSG::write(const vsg::Object* object, const vsg::Path& filename, ref_ptr<co

bool VSG::write(const vsg::Object* object, std::ostream& fout, ref_ptr<const Options> options) const
{
CPU_INSTRUMENTATION_L1(options ? options->instrumentation.get() : nullptr);

if (options && !compatibleExtension(options, ".vsgb", ".vsgt")) return {};

auto version = vsgGetVersion();
Expand Down
10 changes: 10 additions & 0 deletions src/vsg/io/glsl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ bool glsl::extensionSupported(const Path& ext)

ref_ptr<Object> glsl::createShader(const Path& found_filename, std::string& source, VkShaderStageFlagBits stageFlagBits, ref_ptr<const Options> options) const
{
CPU_INSTRUMENTATION_L1(options ? options->instrumentation.get() : nullptr);

// handle any #includes in the source
if (source.find("include") != std::string::npos)
{
Expand All @@ -66,6 +68,8 @@ ref_ptr<Object> glsl::createShader(const Path& found_filename, std::string& sour

ref_ptr<Object> glsl::read(const Path& filename, ref_ptr<const Options> options) const
{
CPU_INSTRUMENTATION_L1(options ? options->instrumentation.get() : nullptr);

auto stage_itr = (options && options->extensionHint) ? s_extensionToStage.find(options->extensionHint) : s_extensionToStage.end();
if (stage_itr == s_extensionToStage.end()) stage_itr = s_extensionToStage.find(lowerCaseFileExtension(filename));
if (stage_itr == s_extensionToStage.end()) return {};
Expand All @@ -88,6 +92,8 @@ ref_ptr<Object> glsl::read(const Path& filename, ref_ptr<const Options> options)

ref_ptr<vsg::Object> glsl::read(std::istream& fin, ref_ptr<const Options> options) const
{
CPU_INSTRUMENTATION_L1(options ? options->instrumentation.get() : nullptr);

auto stage_itr = (options && options->extensionHint) ? s_extensionToStage.find(options->extensionHint) : s_extensionToStage.end();
if (stage_itr == s_extensionToStage.end()) return {};

Expand All @@ -104,6 +110,8 @@ ref_ptr<vsg::Object> glsl::read(std::istream& fin, ref_ptr<const Options> option

ref_ptr<vsg::Object> glsl::read(const uint8_t* ptr, size_t size, ref_ptr<const Options> options) const
{
CPU_INSTRUMENTATION_L1(options ? options->instrumentation.get() : nullptr);

auto stage_itr = (options && options->extensionHint) ? s_extensionToStage.find(options->extensionHint) : s_extensionToStage.end();
if (stage_itr == s_extensionToStage.end()) return {};

Expand All @@ -114,6 +122,8 @@ ref_ptr<vsg::Object> glsl::read(const uint8_t* ptr, size_t size, ref_ptr<const O

bool glsl::write(const Object* object, const Path& filename, ref_ptr<const Options> options) const
{
CPU_INSTRUMENTATION_L1(options ? options->instrumentation.get() : nullptr);

auto stage_itr = (options && options->extensionHint) ? s_extensionToStage.find(options->extensionHint) : s_extensionToStage.end();
if (stage_itr == s_extensionToStage.end()) stage_itr = s_extensionToStage.find(lowerCaseFileExtension(filename));
if (stage_itr == s_extensionToStage.end()) return false;
Expand Down
8 changes: 8 additions & 0 deletions src/vsg/io/spirv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ spirv::spirv()

vsg::ref_ptr<vsg::Object> spirv::read(const vsg::Path& filename, vsg::ref_ptr<const vsg::Options> options) const
{
CPU_INSTRUMENTATION_L1(options ? options->instrumentation.get() : nullptr);

if (!compatibleExtension(filename, options, ".spv")) return {};

vsg::Path found_filename = vsg::findFile(filename, options);
Expand All @@ -57,6 +59,8 @@ vsg::ref_ptr<vsg::Object> spirv::read(const vsg::Path& filename, vsg::ref_ptr<co

ref_ptr<vsg::Object> spirv::read(std::istream& fin, ref_ptr<const Options> options) const
{
CPU_INSTRUMENTATION_L1(options ? options->instrumentation.get() : nullptr);

if (!compatibleExtension(options, ".spv")) return {};

fin.seekg(0, fin.end);
Expand All @@ -77,6 +81,8 @@ ref_ptr<vsg::Object> spirv::read(std::istream& fin, ref_ptr<const Options> optio

ref_ptr<vsg::Object> spirv::read(const uint8_t* ptr, size_t size, ref_ptr<const Options> options) const
{
CPU_INSTRUMENTATION_L1(options ? options->instrumentation.get() : nullptr);

if (!compatibleExtension(options, ".spv")) return {};

using value_type = vsg::ShaderModule::SPIRV::value_type;
Expand All @@ -91,6 +97,8 @@ ref_ptr<vsg::Object> spirv::read(const uint8_t* ptr, size_t size, ref_ptr<const

bool spirv::write(const vsg::Object* object, const vsg::Path& filename, vsg::ref_ptr<const vsg::Options> options) const
{
CPU_INSTRUMENTATION_L1(options ? options->instrumentation.get() : nullptr);

if (!compatibleExtension(filename, options, ".spv")) return false;

const vsg::ShaderStage* ss = dynamic_cast<const vsg::ShaderStage*>(object);
Expand Down
9 changes: 8 additions & 1 deletion src/vsg/io/tile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,8 @@ vsg::Path tile::getTilePath(const vsg::Path& src, uint32_t x, uint32_t y, uint32

vsg::ref_ptr<vsg::Object> tile::read(const vsg::Path& filename, vsg::ref_ptr<const vsg::Options> options) const
{
CPU_INSTRUMENTATION_L1(options ? options->instrumentation.get() : nullptr);

auto extension = vsg::lowerCaseFileExtension(filename);
if (extension != ".tile") return {};

Expand All @@ -140,6 +142,8 @@ vsg::ref_ptr<vsg::Object> tile::read(const vsg::Path& filename, vsg::ref_ptr<con

vsg::ref_ptr<vsg::Object> tile::read_root(vsg::ref_ptr<const vsg::Options> options) const
{
CPU_INSTRUMENTATION_L1(options ? options->instrumentation.get() : nullptr);

auto group = createRoot();

uint32_t lod = 0;
Expand Down Expand Up @@ -199,8 +203,9 @@ vsg::ref_ptr<vsg::Object> tile::read_root(vsg::ref_ptr<const vsg::Options> optio

vsg::ref_ptr<vsg::Object> tile::read_subtile(uint32_t x, uint32_t y, uint32_t lod, vsg::ref_ptr<const vsg::Options> options) const
{
// need to load subtile x y lod
CPU_INSTRUMENTATION_L1(options ? options->instrumentation.get() : nullptr);

// need to load subtile x y lod
vsg::time_point start_read = vsg::clock::now();

auto group = vsg::Group::create();
Expand Down Expand Up @@ -294,6 +299,8 @@ vsg::ref_ptr<vsg::Object> tile::read_subtile(uint32_t x, uint32_t y, uint32_t lo

void tile::init(vsg::ref_ptr<const vsg::Options> options)
{
CPU_INSTRUMENTATION_L1(options ? options->instrumentation.get() : nullptr);

if (settings->shaderSet)
{
_shaderSet = settings->shaderSet;
Expand Down

0 comments on commit b4b25ad

Please sign in to comment.