, target_(usage == buffer::usage::write_only ? GL_PIXEL_UNPACK_BUFFER : GL_PIXEL_PACK_BUFFER)\r
, usage_(usage == buffer::usage::write_only ? GL_STREAM_DRAW : GL_STREAM_READ)\r
{\r
+ boost::timer timer;\r
+\r
data_ = nullptr;\r
GL(glGenBuffers(1, &pbo_));\r
bind(); \r
\r
if(!pbo_)\r
CASPAR_THROW_EXCEPTION(caspar_exception() << msg_info("Failed to allocate buffer."));\r
-\r
+ \r
+ if(timer.elapsed() > 0.02)\r
+ CASPAR_LOG(debug) << L"[buffer] Performance warning. Buffer allocation blocked more than 20 ms: " << timer.elapsed();\r
//CASPAR_LOG(trace) << "[buffer] [" << ++(usage_ == buffer::usage::write_only ? g_w_total_count : g_r_total_count) << L"] allocated size:" << size_ << " usage: " << (usage == buffer::usage::write_only ? "write_only" : "read_only");\r
} \r
\r
\r
impl(executor& executor) \r
: render_executor_(executor)\r
- , alloc_executor_(L"OpenGL allocation context.")\r
+ , alloc_executor_(L"OpenGL allocation context")\r
{\r
render_executor_.set_capacity(128);\r
alloc_executor_.set_capacity(256);\r
{ \r
device_->SetActive(true);\r
});\r
- \r
+ \r
CASPAR_LOG(info) << L"Successfully initialized OpenGL " << version();\r
}\r
\r
};\r
\r
device::device() \r
- : executor_(L"OpenGL Rendering Context.")\r
+ : executor_(L"OpenGL Rendering Context")\r
, impl_(new impl(executor_)){}\r
device::~device(){}\r
spl::shared_ptr<texture> device::create_texture(int width, int height, int stride){return impl_->create_texture(width, height, stride, true);}\r