diff --git a/headers/enduro2d/core/render.hpp b/headers/enduro2d/core/render.hpp index 0af336cb..df692fef 100644 --- a/headers/enduro2d/core/render.hpp +++ b/headers/enduro2d/core/render.hpp @@ -83,7 +83,6 @@ namespace e2d bool is_compressed() const noexcept; std::size_t bits_per_pixel() const noexcept; v2u compressed_block_size() const noexcept; - std::size_t block_bits_per_pixel() const noexcept; private: pixel_type type_ = pixel_type::rgba8; }; @@ -940,15 +939,26 @@ namespace e2d render& execute(const target_command& command); render& execute(const viewport_command& command); - render& update_buffer(const index_buffer_ptr& ibuffer, - buffer_view indices, - std::size_t offset); - render& update_buffer(const vertex_buffer_ptr& vbuffer, - buffer_view vertices, - std::size_t offset); + render& update_buffer( + const index_buffer_ptr& ibuffer, + buffer_view indices, + std::size_t offset); - render& update_texture(const texture_ptr& tex, const image& img, v2u offset); - render& update_texture(const texture_ptr& tex, buffer_view data, v2u size, v2u offset); + render& update_buffer( + const vertex_buffer_ptr& vbuffer, + buffer_view vertices, + std::size_t offset); + + render& update_texture( + const texture_ptr& tex, + const image& img, + v2u offset); + + render& update_texture( + const texture_ptr& tex, + buffer_view data, + v2u size, + v2u offset); const device_caps& device_capabilities() const noexcept; bool is_pixel_supported(const pixel_declaration& decl) const noexcept; diff --git a/sources/enduro2d/core/render.cpp b/sources/enduro2d/core/render.cpp index c5e08f82..a6177602 100644 --- a/sources/enduro2d/core/render.cpp +++ b/sources/enduro2d/core/render.cpp @@ -165,11 +165,6 @@ namespace e2d v2u pixel_declaration::compressed_block_size() const noexcept { return get_pixel_type_description(type_).block_size; } - - std::size_t pixel_declaration::block_bits_per_pixel() const noexcept { - auto& desc = get_pixel_type_description(type_); - return desc.block_size.x * desc.block_size.y * desc.bits_per_pixel; - } bool operator==(const pixel_declaration& l, const pixel_declaration& r) noexcept { return l.type() == r.type(); diff --git a/sources/enduro2d/core/render_impl/render_none.cpp b/sources/enduro2d/core/render_impl/render_none.cpp index db85603f..9a592aac 100644 --- a/sources/enduro2d/core/render_impl/render_none.cpp +++ b/sources/enduro2d/core/render_impl/render_none.cpp @@ -251,26 +251,39 @@ namespace e2d return *this; } - render& render::update_buffer(const index_buffer_ptr& ibuffer, - buffer_view indices, - std::size_t offset) { + render& render::update_buffer( + const index_buffer_ptr& ibuffer, + buffer_view indices, + std::size_t offset) + { E2D_UNUSED(ibuffer, indices, offset); return *this; } - render& render::update_buffer(const vertex_buffer_ptr& vbuffer, - buffer_view vertices, - std::size_t offset) { + render& render::update_buffer( + const vertex_buffer_ptr& vbuffer, + buffer_view vertices, + std::size_t offset) + { E2D_UNUSED(vbuffer, vertices, offset); return *this; } - render& render::update_texture(const texture_ptr& tex, const image& img, v2u offset) { + render& render::update_texture( + const texture_ptr& tex, + const image& img, + v2u offset) + { E2D_UNUSED(tex, img, offset); return *this; } - render& render::update_texture(const texture_ptr& tex, buffer_view data, v2u size, v2u offset) { + render& render::update_texture( + const texture_ptr& tex, + buffer_view data, + v2u size, + v2u offset) + { E2D_UNUSED(tex, img, size, offset); return *this; } diff --git a/sources/enduro2d/core/render_impl/render_opengl.cpp b/sources/enduro2d/core/render_impl/render_opengl.cpp index 52b4a918..b065b2bc 100644 --- a/sources/enduro2d/core/render_impl/render_opengl.cpp +++ b/sources/enduro2d/core/render_impl/render_opengl.cpp @@ -973,7 +973,11 @@ namespace e2d return *this; } - render& render::update_buffer(const index_buffer_ptr& ibuffer, buffer_view indices, std::size_t offset) { + render& render::update_buffer( + const index_buffer_ptr& ibuffer, + buffer_view indices, + std::size_t offset) + { E2D_ASSERT(is_in_main_thread()); E2D_ASSERT(ibuffer); const std::size_t buffer_offset = offset * ibuffer->state().decl().bytes_per_index(); @@ -990,7 +994,11 @@ namespace e2d return *this; } - render& render::update_buffer(const vertex_buffer_ptr& vbuffer, buffer_view vertices, std::size_t offset) { + render& render::update_buffer( + const vertex_buffer_ptr& vbuffer, + buffer_view vertices, + std::size_t offset) + { E2D_ASSERT(is_in_main_thread()); E2D_ASSERT(vbuffer); const std::size_t buffer_offset = offset * vbuffer->state().decl().bytes_per_vertex(); @@ -1007,12 +1015,16 @@ namespace e2d return *this; } - render& render::update_texture(const texture_ptr& tex, const image& img, v2u offset) { + render& render::update_texture( + const texture_ptr& tex, + const image& img, + v2u offset) + { E2D_ASSERT(is_in_main_thread()); E2D_ASSERT(tex); const pixel_declaration decl = convert_image_data_format_to_pixel_declaration(img.format()); - if(tex->decl() != decl) { + if ( tex->decl() != decl ) { state_->dbg().error("RENDER: Failed to update texture:\n" "--> Texture format: %0\n" "--> Image format: %1", @@ -1023,15 +1035,20 @@ namespace e2d return update_texture(tex, img.data(), img.size(), offset); } - render& render::update_texture(const texture_ptr& tex, buffer_view data, v2u size, v2u offset) { + render& render::update_texture( + const texture_ptr& tex, + buffer_view data, + v2u size, + v2u offset) + { E2D_ASSERT(is_in_main_thread()); E2D_ASSERT(tex); E2D_ASSERT(offset.x < tex->size().x && offset.y < tex->size().y); E2D_ASSERT(offset.x + size.x <= tex->size().x); E2D_ASSERT(offset.y + size.y <= tex->size().y); - E2D_ASSERT(data.size() == size.y * ((size.x * tex->decl().bits_per_pixel()) / 8)); + E2D_ASSERT(data.size() * 8u == size.y * size.x * tex->decl().bits_per_pixel()); - if (tex->decl().is_compressed()) { + if ( tex->decl().is_compressed() ) { const v2u block_size = tex->decl().compressed_block_size(); E2D_ASSERT(offset.x % block_size.x == 0 && offset.y % block_size.y == 0); E2D_ASSERT(size.x % block_size.x == 0 && size.y % block_size.y == 0);