add audio, render and vfs profiler events

This commit is contained in:
BlackMATov
2020-01-09 17:38:25 +07:00
parent 5bdc65681e
commit ca5c5cf7c6
5 changed files with 77 additions and 21 deletions

View File

@@ -6,8 +6,9 @@
#pragma once
#include <enduro2d/core/debug.hpp>
#include <enduro2d/core/audio.hpp>
#include <enduro2d/core/debug.hpp>
#include <enduro2d/core/profiler.hpp>
#define E2D_AUDIO_MODE_NONE 1
#define E2D_AUDIO_MODE_BASS 2

View File

@@ -156,6 +156,8 @@ namespace e2d
return nullptr;
}
E2D_PROFILER_SCOPE("audio.create_stream");
HSAMPLE sample = BASS_SampleLoad(
TRUE,
sound_data.data(),
@@ -189,6 +191,8 @@ namespace e2d
return nullptr;
}
E2D_PROFILER_SCOPE("audio.create_stream");
BASS_FILEPROCS file_procs = {
sound_stream_close_proc,
sound_stream_length_proc,
@@ -226,6 +230,8 @@ namespace e2d
return nullptr;
}
E2D_PROFILER_SCOPE("audio.create_source");
HCHANNEL channel = stream->state().stream()
? stream->state().sound()
: BASS_SampleGetChannel(stream->state().sound(), FALSE);

View File

@@ -7,6 +7,7 @@
#pragma once
#include <enduro2d/core/debug.hpp>
#include <enduro2d/core/profiler.hpp>
#include <enduro2d/core/render.hpp>
#include <enduro2d/core/window.hpp>

View File

@@ -497,33 +497,51 @@ namespace e2d
{
E2D_ASSERT(is_in_main_thread());
gl_shader_id vs = gl_compile_shader(
state_->dbg(),
vertex_shader_header_cstr(device_capabilities().profile),
vertex_source,
GL_VERTEX_SHADER);
gl_shader_id vs(state_->dbg());
if ( vs.empty() ) {
return nullptr;
{
E2D_PROFILER_SCOPE("render.compile_vertex_shader");
vs = gl_compile_shader(
state_->dbg(),
vertex_shader_header_cstr(device_capabilities().profile),
vertex_source,
GL_VERTEX_SHADER);
if ( vs.empty() ) {
return nullptr;
}
}
gl_shader_id fs = gl_compile_shader(
state_->dbg(),
fragment_shader_header_cstr(device_capabilities().profile),
fragment_source,
GL_FRAGMENT_SHADER);
gl_shader_id fs(state_->dbg());
{
E2D_PROFILER_SCOPE("render.compile_fragment_shader");
if ( fs.empty() ) {
return nullptr;
fs = gl_compile_shader(
state_->dbg(),
fragment_shader_header_cstr(device_capabilities().profile),
fragment_source,
GL_FRAGMENT_SHADER);
if ( fs.empty() ) {
return nullptr;
}
}
gl_program_id ps = gl_link_program(
state_->dbg(),
std::move(vs),
std::move(fs));
gl_program_id ps(state_->dbg());
if ( ps.empty() ) {
return nullptr;
{
E2D_PROFILER_SCOPE("render.link_shader_program");
ps = gl_link_program(
state_->dbg(),
std::move(vs),
std::move(fs));
if ( ps.empty() ) {
return nullptr;
}
}
return std::make_shared<shader>(
@@ -583,6 +601,11 @@ namespace e2d
}
}
E2D_PROFILER_SCOPE_EX("render.create_texture_from_image", {
{"size", strings::rformat("%0", image.size())},
{"format", strings::rformat("%0", image.format())}
});
gl_texture_id id = gl_texture_id::create(state_->dbg(), GL_TEXTURE_2D);
if ( id.empty() ) {
state_->dbg().error("RENDER: Failed to create texture:\n"
@@ -659,6 +682,11 @@ namespace e2d
}
}
E2D_PROFILER_SCOPE_EX("render.create_empty_texture", {
{"size", strings::rformat("%0", size)},
{"format", strings::rformat("%0", decl.type())}
});
gl_texture_id id = gl_texture_id::create(state_->dbg(), GL_TEXTURE_2D);
if ( id.empty() ) {
state_->dbg().error("RENDER: Failed to create texture:\n"
@@ -723,6 +751,8 @@ namespace e2d
return nullptr;
}
E2D_PROFILER_SCOPE("render.create_index_buffer");
gl_buffer_id id = gl_buffer_id::create(state_->dbg(), GL_ELEMENT_ARRAY_BUFFER);
if ( id.empty() ) {
state_->dbg().error("RENDER: Failed to create index buffer:\n"
@@ -757,6 +787,8 @@ namespace e2d
return nullptr;
}
E2D_PROFILER_SCOPE("render.create_vertex_buffer");
gl_buffer_id id = gl_buffer_id::create(state_->dbg(), GL_ARRAY_BUFFER);
if ( id.empty() ) {
state_->dbg().error("RENDER: Failed to create vertex buffer:\n"
@@ -813,6 +845,8 @@ namespace e2d
}
}
E2D_PROFILER_SCOPE("render.create_render_target");
gl_framebuffer_id id = gl_framebuffer_id::create(state_->dbg(), GL_FRAMEBUFFER);
if ( id.empty() ) {
state_->dbg().error("RENDER: Failed to create framebuffer:\n",

View File

@@ -6,6 +6,8 @@
#include <enduro2d/core/vfs.hpp>
#include <enduro2d/core/profiler.hpp>
#include <3rdparty/miniz/miniz.h>
namespace
@@ -173,6 +175,9 @@ namespace e2d
}
std::optional<buffer> vfs::load(const url& url) const {
E2D_PROFILER_SCOPE_EX("vfs.sync_load", {
{"url", url.schemepath()}
});
return load_async(url).then([](auto&& src){
return std::optional(std::forward<decltype(src)>(src));
}).get_or_default(std::nullopt);
@@ -180,6 +185,9 @@ namespace e2d
stdex::promise<buffer> vfs::load_async(const url& url) const {
return state_->worker.async([this, url](){
E2D_PROFILER_SCOPE_EX("vfs.load_async", {
{"url", url.schemepath()}
});
buffer content;
const input_stream_uptr stream = read(url);
if ( !stream || !streams::try_read_tail(content, stream) ) {
@@ -190,6 +198,9 @@ namespace e2d
}
std::optional<str> vfs::load_as_string(const url& url) const {
E2D_PROFILER_SCOPE_EX("vfs.sync_load_as_string", {
{"url", url.schemepath()}
});
return load_as_string_async(url).then([](auto&& src){
return std::optional(std::forward<decltype(src)>(src));
}).get_or_default(std::nullopt);
@@ -197,6 +208,9 @@ namespace e2d
stdex::promise<str> vfs::load_as_string_async(const url& url) const {
return state_->worker.async([this, url](){
E2D_PROFILER_SCOPE_EX("vfs.load_as_string_async", {
{"url", url.schemepath()}
});
str content;
const input_stream_uptr stream = read(url);
if ( !stream || !streams::try_read_tail(content, stream) ) {