From c68d9e1ef0eeabb35095952ff557c040116c0c3d Mon Sep 17 00:00:00 2001 From: rachytski Date: Mon, 29 Oct 2012 17:23:02 +0300 Subject: [PATCH] removed yg::RenderState and RenderStateUpdater. --- map/basic_tiling_render_policy.hpp | 2 + map/draw_processor.cpp | 8 -- map/framework.cpp | 12 +- map/tile_renderer.cpp | 1 - map/tile_renderer.hpp | 1 - yg/geometry_batcher.hpp | 6 +- yg/overlay_renderer.cpp | 1 - yg/render_state.cpp | 79 ------------ yg/render_state.hpp | 88 ------------- yg/render_state_updater.cpp | 191 ----------------------------- yg/render_state_updater.hpp | 75 ----------- yg/text_renderer.cpp | 1 - yg/yg.pro | 4 - 13 files changed, 7 insertions(+), 462 deletions(-) delete mode 100644 yg/render_state.cpp delete mode 100644 yg/render_state.hpp delete mode 100644 yg/render_state_updater.cpp delete mode 100644 yg/render_state_updater.hpp diff --git a/map/basic_tiling_render_policy.hpp b/map/basic_tiling_render_policy.hpp index 479e9a5a15..47054a9fe9 100644 --- a/map/basic_tiling_render_policy.hpp +++ b/map/basic_tiling_render_policy.hpp @@ -2,6 +2,8 @@ #include "render_policy.hpp" +#include "../geometry/screenbase.hpp" + #include "../std/shared_ptr.hpp" #include "../yg/overlay.hpp" diff --git a/map/draw_processor.cpp b/map/draw_processor.cpp index f34f342941..81348adfcd 100644 --- a/map/draw_processor.cpp +++ b/map/draw_processor.cpp @@ -11,8 +11,6 @@ #include "../indexer/feature_data.hpp" #include "../indexer/feature_impl.hpp" -#include "../yg/render_state.hpp" - #include "../std/bind.hpp" @@ -279,12 +277,6 @@ namespace fwork else m_hasNonCoast = true; - { - yg::gl::RenderState * pState = GetDrawer()->screen()->renderState().get(); - if (pState) - pState->m_isEmptyModelCurrent = IsEmptyDrawing(); - } - // remove duplicating identical drawing keys PreProcessKeys(keys); diff --git a/map/framework.cpp b/map/framework.cpp index 3f51699aff..d83c0009d5 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -27,7 +27,6 @@ #include "../coding/internal/file_data.hpp" #include "../yg/rendercontext.hpp" -#include "../yg/render_state.hpp" #include "../geometry/angles.hpp" #include "../geometry/distance_on_sphere.hpp" @@ -669,14 +668,7 @@ void Framework::DrawModel(shared_ptr const & e, m_model.ForEachFeature(selectRect, doDraw, scale); } catch (redraw_operation_cancelled const &) - { - shared_ptr pState = e->drawer()->screen()->renderState(); - if (pState) - { - pState->m_isEmptyModelCurrent = false; - pState->m_isEmptyModelActual = false; - } - } + {} e->setIsEmptyDrawing(doDraw.IsEmptyDrawing()); @@ -727,7 +719,7 @@ void Framework::DrawAdditionalInfo(shared_ptr const & e) m_informationDisplay.setScreen(m_navigator.Screen()); - m_informationDisplay.setDebugInfo(0/*m_renderQueue.renderState().m_duration*/, GetDrawScale()); + m_informationDisplay.setDebugInfo(0, GetDrawScale()); m2::PointD const center = m_navigator.Screen().GlobalRect().GlobalCenter(); m_informationDisplay.setCenter(m2::PointD(MercatorBounds::XToLon(center.x), diff --git a/map/tile_renderer.cpp b/map/tile_renderer.cpp index 76ecfa0a09..89c1d02578 100644 --- a/map/tile_renderer.cpp +++ b/map/tile_renderer.cpp @@ -4,7 +4,6 @@ #include "window_handle.hpp" #include "../yg/internal/opengl.hpp" -#include "../yg/render_state.hpp" #include "../yg/rendercontext.hpp" #include "../yg/base_texture.hpp" #include "../yg/packets_queue.hpp" diff --git a/map/tile_renderer.hpp b/map/tile_renderer.hpp index 8bef4d3edd..d15c6efe8c 100644 --- a/map/tile_renderer.hpp +++ b/map/tile_renderer.hpp @@ -20,7 +20,6 @@ namespace yg class ResourceManager; namespace gl { - class RenderState; class RenderContext; class PacketsQueue; } diff --git a/yg/geometry_batcher.hpp b/yg/geometry_batcher.hpp index 82d746b2a9..0dafa7d8cc 100644 --- a/yg/geometry_batcher.hpp +++ b/yg/geometry_batcher.hpp @@ -4,7 +4,7 @@ #include "buffer_object.hpp" #include "renderbuffer.hpp" #include "framebuffer.hpp" -#include "render_state_updater.hpp" +#include "blitter.hpp" #include "storage.hpp" #include "skin_page.hpp" #include "resource_manager.hpp" @@ -29,7 +29,7 @@ namespace yg namespace gl { - class GeometryBatcher : public RenderStateUpdater + class GeometryBatcher : public Blitter { public: @@ -37,7 +37,7 @@ namespace yg private: - typedef RenderStateUpdater base_t; + typedef Blitter base_t; shared_ptr m_skin; diff --git a/yg/overlay_renderer.cpp b/yg/overlay_renderer.cpp index a88dbeaae9..26102d44d5 100644 --- a/yg/overlay_renderer.cpp +++ b/yg/overlay_renderer.cpp @@ -6,7 +6,6 @@ #include "path_text_element.hpp" #include "symbol_element.hpp" #include "circle_element.hpp" -#include "render_state.hpp" #include "overlay.hpp" #include "resource_manager.hpp" #include "skin.hpp" diff --git a/yg/render_state.cpp b/yg/render_state.cpp deleted file mode 100644 index 4799ab2f29..0000000000 --- a/yg/render_state.cpp +++ /dev/null @@ -1,79 +0,0 @@ -#include "../base/SRC_FIRST.hpp" -#include "../base/logging.hpp" - -#include "render_state.hpp" -#include "renderbuffer.hpp" -#include "overlay.hpp" - -namespace yg -{ - namespace gl - { - RenderState::RenderState() - : m_actualOverlay(new yg::Overlay()), - m_isEmptyModelActual(false), - m_currentOverlay(new yg::Overlay()), - m_isEmptyModelCurrent(false), - m_isResized(false), - m_doRepaintAll(false), - m_mutex(new threads::Mutex()) - {} - - bool RenderState::isPanning() const - { - return IsPanningAndRotate(m_actualScreen, m_currentScreen); - } - - void RenderState::copyTo(RenderState &s) const - { - threads::MutexGuard guard(*m_mutex.get()); - s = *this; - } - - void RenderState::addInvalidateFn(invalidateFn fn) - { - m_invalidateFns.push_back(fn); - } - - void RenderState::invalidate() - { - for (list::const_iterator it = m_invalidateFns.begin(); it != m_invalidateFns.end(); ++it) - (*it)(); - } - - void RenderState::onSize(size_t w, size_t h) - { - threads::MutexGuard guard(*m_mutex.get()); - if ((m_surfaceWidth != w) || (m_surfaceHeight != h)) - { - m_isResized = true; - - m_surfaceWidth = w; - m_surfaceHeight = h; - - /* - double const log2 = log(2.0); - - m_textureWidth = static_cast(pow(2, ceil(log(double(w)) / log2))); - m_textureHeight = static_cast(pow(2, ceil(log(double(h)) / log2))); - - m_textureWidth = max(m_textureWidth, m_textureHeight); - m_textureHeight = max(m_textureWidth, m_textureHeight); - */ - m_textureWidth = m_textureHeight = - 1 << static_cast(ceil(log(double(max(w, h))) / log(2.0))); - } - } - - m2::PointU const RenderState::coordSystemShift(bool doLock) const - { - if (doLock) - m_mutex->Lock(); - m2::PointU const res((m_textureWidth - m_surfaceWidth) / 2, - (m_textureHeight - m_surfaceHeight) / 2); - if (doLock) - m_mutex->Unlock(); - return res; - } - } -} diff --git a/yg/render_state.hpp b/yg/render_state.hpp deleted file mode 100644 index f821225238..0000000000 --- a/yg/render_state.hpp +++ /dev/null @@ -1,88 +0,0 @@ -#pragma once - -#include "../geometry/screenbase.hpp" - -#include "../base/mutex.hpp" - -#include "../std/function.hpp" -#include "../std/list.hpp" -#include "../std/shared_ptr.hpp" - -namespace yg -{ - class Overlay; - - namespace gl - { - class BaseTexture; - class RenderBuffer; - - class RenderState - { - public: - - typedef function invalidateFn; - - /// Already rendered model params - /// @{ - /// Bitmap - shared_ptr m_actualTarget; - /// Information layer - shared_ptr m_actualOverlay; - /// Screen parameters - ScreenBase m_actualScreen; - /// Empty-model flag of the actual target - bool m_isEmptyModelActual; - /// Name of the country at the center of the actualScreen - string m_countryNameActual; - /// @} - - /// In-Progress rendering operation params - /// @{ - /// Screen of the rendering operation in progress. - ScreenBase m_currentScreen; - /// information layer - shared_ptr m_currentOverlay; - /// at least one backBuffer layer - shared_ptr m_backBuffer; - /// depth buffer used for rendering - shared_ptr m_depthBuffer; - /// Duration of the rendering operation - double m_duration; - /// Empty-model flag of the current rendering operation - bool m_isEmptyModelCurrent; - /// @} - - /// Surface height and width. - unsigned int m_surfaceWidth; - unsigned int m_surfaceHeight; - - /// Texture height and width. - unsigned int m_textureWidth; - unsigned int m_textureHeight; - - /// Have this state been resized? - bool m_isResized; - /// RepaintAll flag - bool m_doRepaintAll; - - mutable shared_ptr m_mutex; - - list m_invalidateFns; - - RenderState(); - - bool isPanning() const; - - void copyTo(RenderState & s) const; - - void invalidate(); - - void addInvalidateFn(invalidateFn fn); - - void onSize(size_t w, size_t h); - - m2::PointU const coordSystemShift(bool doLock = false) const; - }; - } -} diff --git a/yg/render_state_updater.cpp b/yg/render_state_updater.cpp deleted file mode 100644 index c9f434c365..0000000000 --- a/yg/render_state_updater.cpp +++ /dev/null @@ -1,191 +0,0 @@ -#include "../base/SRC_FIRST.hpp" - -#include "render_state_updater.hpp" -#include "render_state.hpp" -#include "renderbuffer.hpp" -#include "framebuffer.hpp" -#include "base_texture.hpp" -#include "utils.hpp" - -#include "internal/opengl.hpp" - -#include "../base/logging.hpp" -#include "../std/bind.hpp" - -namespace yg -{ - namespace gl - { - RenderStateUpdater::Params::Params() - : m_doPeriodicalUpdate(false), m_updateInterval(0.0) - {} - - RenderStateUpdater::RenderStateUpdater(Params const & params) - : base_t(params), - m_renderState(params.m_renderState), - m_auxFrameBuffer(params.m_auxFrameBuffer), - m_doPeriodicalUpdate(params.m_doPeriodicalUpdate), - m_updateInterval(params.m_updateInterval) - { - if ((m_doPeriodicalUpdate) && (!m_auxFrameBuffer)) - { - m_auxFrameBuffer.reset(); - m_auxFrameBuffer.reset(new FrameBuffer()); - } - } - - shared_ptr const & RenderStateUpdater::renderState() const - { - return m_renderState; - } - - void RenderStateUpdater::drawGeometry(shared_ptr const & texture, - Storage const & storage, - size_t indicesCount, - size_t indicesOffs, - unsigned primType) - { - base_t::drawGeometry(texture, storage, indicesCount, indicesOffs, primType); - m_indicesCount += indicesCount; - if (m_doPeriodicalUpdate - && m_renderState - && (m_indicesCount > 20000) - && (m_updateTimer.ElapsedSeconds() > m_updateInterval)) - { - updateActualTarget(); - m_indicesCount %= 20000; - m_updateTimer.Reset(); - } - } - - void RenderStateUpdater::UpdateBackBuffer::perform() - { - if (isDebugging()) - LOG(LINFO, ("performing UpdateBackBuffer command")); - - if (m_doSynchronize) - m_renderState->m_mutex->Lock(); - - OGLCHECK(glFinish()); - - OGLCHECK(glDisableFn(GL_SCISSOR_TEST)); - - m_auxFrameBuffer->setRenderTarget(m_renderState->m_backBuffer); - m_auxFrameBuffer->makeCurrent(); - - OGLCHECK(glClearColor(s_bgColor.r / 255.0, - s_bgColor.g / 255.0, - s_bgColor.b / 255.0, - s_bgColor.a / 255.0)); - - OGLCHECK(glClear(GL_COLOR_BUFFER_BIT)); - - shared_ptr immDrawTexturedRect( - new IMMDrawTexturedRect(m2::RectF(0, 0, m_renderState->m_actualTarget->width(), m_renderState->m_actualTarget->height()), - m2::RectF(0, 0, 1, 1), - m_renderState->m_actualTarget, - m_resourceManager)); - - immDrawTexturedRect->setIsDebugging(isDebugging()); - immDrawTexturedRect->perform(); - - m_frameBuffer->makeCurrent(); - - if (m_isClipRectEnabled) - OGLCHECK(glEnableFn(GL_SCISSOR_TEST)); - - OGLCHECK(glScissor(m_clipRect.minX(), m_clipRect.minY(), m_clipRect.maxX(), m_clipRect.maxY())); - - OGLCHECK(glFinish()); - - if (m_doSynchronize) - m_renderState->m_mutex->Unlock(); - } - - void RenderStateUpdater::Invalidate::perform() - { - m_renderState->invalidate(); - } - - void RenderStateUpdater::updateActualTarget() - { - /// Carefully synchronizing the access to the m_renderState to minimize wait time. - finish(); - - completeCommands(); - - /// to re-set the states - base_t::endFrame(); - base_t::beginFrame(); - - m_renderState->m_mutex->Lock(); - - swap(m_renderState->m_actualTarget, m_renderState->m_backBuffer); - m_renderState->m_actualScreen = m_renderState->m_currentScreen; - if (!m_renderState->m_isEmptyModelCurrent) - m_renderState->m_isEmptyModelActual = m_renderState->m_isEmptyModelCurrent; - - m_renderState->m_mutex->Unlock(); - - base_t::endFrame(); - - setRenderTarget(m_renderState->m_backBuffer); - - shared_ptr command1(new UpdateBackBuffer()); - - command1->m_renderState = m_renderState; - command1->m_resourceManager = resourceManager(); - command1->m_isClipRectEnabled = clipRectEnabled(); - command1->m_clipRect = clipRect(); - command1->m_doSynchronize = renderQueue(); - command1->m_auxFrameBuffer = m_auxFrameBuffer; - command1->m_frameBuffer = frameBuffer(); - - base_t::beginFrame(); - - processCommand(command1); - - m_renderState->invalidate(); - - shared_ptr command2(new Invalidate()); - command2->m_renderState = m_renderState; - - processCommand(command2); - - base_t::endFrame(); - completeCommands(); - - setRenderTarget(m_renderState->m_backBuffer); - base_t::beginFrame(); - } - - void RenderStateUpdater::beginFrame() - { - base_t::beginFrame(); - m_indicesCount = 0; - m_updateTimer.Reset(); - } - - void RenderStateUpdater::setClipRect(m2::RectI const & rect) - { - if ((m_renderState) && (m_indicesCount)) - { - updateActualTarget(); - m_indicesCount = 0; - m_updateTimer.Reset(); - } - - base_t::setClipRect(rect); - } - - void RenderStateUpdater::endFrame() - { - if (m_renderState) - updateActualTarget(); - - m_indicesCount = 0; - m_updateTimer.Reset(); - base_t::endFrame(); - } - } -} diff --git a/yg/render_state_updater.hpp b/yg/render_state_updater.hpp deleted file mode 100644 index d958a372c7..0000000000 --- a/yg/render_state_updater.hpp +++ /dev/null @@ -1,75 +0,0 @@ -#pragma once - -#include "../std/shared_ptr.hpp" -#include "../geometry/screenbase.hpp" -#include "../base/timer.hpp" - -#include "blitter.hpp" - -namespace yg -{ - namespace gl - { - class RenderState; - - class RenderStateUpdater : public Blitter - { - private: - - typedef Blitter base_t; - - shared_ptr m_renderState; - shared_ptr m_auxFrameBuffer; - - int m_indicesCount; - bool m_doPeriodicalUpdate; - double m_updateInterval; - my::Timer m_updateTimer; - - struct UpdateBackBuffer : Command - { - shared_ptr m_renderState; - shared_ptr m_resourceManager; - shared_ptr m_auxFrameBuffer; - shared_ptr m_frameBuffer; - bool m_isClipRectEnabled; - m2::RectI m_clipRect; - bool m_doSynchronize; - - void perform(); - }; - - struct Invalidate : Command - { - shared_ptr m_renderState; - void perform(); - }; - - public: - - struct Params : base_t::Params - { - bool m_doPeriodicalUpdate; - double m_updateInterval; - shared_ptr m_renderState; - shared_ptr m_auxFrameBuffer; - Params(); - }; - - RenderStateUpdater(Params const & params); - - shared_ptr const & renderState() const; - - void drawGeometry(shared_ptr const & texture, - Storage const & storage, - size_t indicesCount, - size_t indicesOffs, - unsigned primType); - - void beginFrame(); - void endFrame(); - void setClipRect(m2::RectI const & rect); - void updateActualTarget(); - }; - } -} diff --git a/yg/text_renderer.cpp b/yg/text_renderer.cpp index 82f5786ceb..3be525b126 100644 --- a/yg/text_renderer.cpp +++ b/yg/text_renderer.cpp @@ -1,5 +1,4 @@ #include "text_renderer.hpp" -#include "render_state.hpp" #include "overlay.hpp" #include "resource_style.hpp" #include "resource_manager.hpp" diff --git a/yg/yg.pro b/yg/yg.pro index 1922e86d8e..881ac37de7 100644 --- a/yg/yg.pro +++ b/yg/yg.pro @@ -30,7 +30,6 @@ SOURCES += \ blitter.cpp \ clipper.cpp \ renderer.cpp \ - render_state.cpp \ geometry_renderer.cpp \ skin_page.cpp \ storage.cpp \ @@ -51,7 +50,6 @@ SOURCES += \ overlay_element.cpp \ symbol_element.cpp \ overlay_renderer.cpp \ - render_state_updater.cpp \ composite_overlay_element.cpp \ path_text_element.cpp \ straight_text_element.cpp \ @@ -85,7 +83,6 @@ HEADERS += \ blitter.hpp \ clipper.hpp \ renderer.hpp \ - render_state.hpp \ geometry_renderer.hpp \ skin_page.hpp \ storage.hpp \ @@ -110,7 +107,6 @@ HEADERS += \ overlay_element.hpp \ symbol_element.hpp \ overlay_renderer.hpp \ - render_state_updater.hpp \ composite_overlay_element.hpp \ path_text_element.hpp \ straight_text_element.hpp \