summaryrefslogtreecommitdiff
path: root/src/render
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2013-09-01 17:40:11 +0300
committerAndrei Karas <akaras@inbox.ru>2013-09-01 17:57:47 +0300
commit5359b7c20b9ee93989a840e555f0a2102b7bb806 (patch)
treea95017d22a4f3e2f57be59dd4826f3b823a65656 /src/render
parent222748a7e0c79225c66485898b913aa60f56cfe2 (diff)
downloadmv-5359b7c20b9ee93989a840e555f0a2102b7bb806.tar.gz
mv-5359b7c20b9ee93989a840e555f0a2102b7bb806.tar.bz2
mv-5359b7c20b9ee93989a840e555f0a2102b7bb806.tar.xz
mv-5359b7c20b9ee93989a840e555f0a2102b7bb806.zip
add SDL2 default render mode.
in this mode SDL using own driver with hardware acceleration.
Diffstat (limited to 'src/render')
-rw-r--r--src/render/graphics.h3
-rw-r--r--src/render/renderers.h3
-rw-r--r--src/render/rendererslistsdl.h (renamed from src/render/rendererslist.h)40
-rw-r--r--src/render/rendererslistsdl2.h133
-rw-r--r--src/render/sdl2graphics.cpp3
-rw-r--r--src/render/sdl2graphics.h4
6 files changed, 169 insertions, 17 deletions
diff --git a/src/render/graphics.h b/src/render/graphics.h
index 7dafcbc45..5025709ec 100644
--- a/src/render/graphics.h
+++ b/src/render/graphics.h
@@ -365,6 +365,9 @@ class Graphics : public gcn::Graphics
#ifdef USE_SDL2
void dumpRendererInfo(const char *const str,
const SDL_RendererInfo &info);
+
+ virtual void setRendererFlags(const uint32_t flags A_UNUSED)
+ { }
#endif
int mWidth;
int mHeight;
diff --git a/src/render/renderers.h b/src/render/renderers.h
index 8922f3d10..f7d58b5e9 100644
--- a/src/render/renderers.h
+++ b/src/render/renderers.h
@@ -26,11 +26,10 @@
enum RenderType
{
RENDER_SOFTWARE = 0,
-#ifdef USE_OPENGL
RENDER_NORMAL_OPENGL = 1,
RENDER_SAFE_OPENGL = 2,
RENDER_GLES_OPENGL = 3,
-#endif
+ RENDER_SDL2_DEFAULT = 4,
RENDER_LAST
};
diff --git a/src/render/rendererslist.h b/src/render/rendererslistsdl.h
index 6c4e3fd0e..aa68eeb6b 100644
--- a/src/render/rendererslist.h
+++ b/src/render/rendererslistsdl.h
@@ -20,17 +20,23 @@
#include "utils/gettext.h"
-#ifndef RENDER_RENDERERSLIST_H
-#define RENDER_RENDERERSLIST_H
+#ifndef RENDER_RENDERERSLISTSDL_H
+#define RENDER_RENDERERSLISTSDL_H
+
+#ifdef USE_SDL2
+#include "render/rendererslistsdl2.h"
+
+#else // USE_SDL2
#ifdef USE_OPENGL
#ifdef ANDROID
+// defined OPENGL ANDROID
// map for index to RenderType
const RenderType indexToRender[] =
{
RENDER_SOFTWARE,
- RENDER_GLES_OPENGL,
+ RENDER_GLES_OPENGL
};
const char *OPENGL_NAME[] =
@@ -38,7 +44,7 @@ const char *OPENGL_NAME[] =
// TRANSLATORS: draw backend
N_("Software"),
// TRANSLATORS: draw backend
- N_("Mobile OpenGL"),
+ N_("Mobile OpenGL")
};
const int renderModesListSize = 2;
@@ -46,12 +52,14 @@ const int renderModesListSize = 2;
const int renderToIndex[] =
{
0, // RENDER_SOFTWARE
- 3, // RENDER_GLES_OPENGL
- 3, // RENDER_GLES_OPENGL
- 3 // RENDER_GLES_OPENGL
+ 1, // RENDER_NORMAL_OPENGL
+ 1, // RENDER_SAFE_OPENGL
+ 1, // RENDER_GLES_OPENGL
+ 1 // RENDER_SDL2_DEFAULT
};
#else // ANDROID
+// defined OPENGL
// map for index to RenderType
const RenderType indexToRender[] =
@@ -59,7 +67,7 @@ const RenderType indexToRender[] =
RENDER_SOFTWARE,
RENDER_NORMAL_OPENGL,
RENDER_SAFE_OPENGL,
- RENDER_GLES_OPENGL,
+ RENDER_GLES_OPENGL
};
const char *OPENGL_NAME[] =
@@ -71,7 +79,7 @@ const char *OPENGL_NAME[] =
// TRANSLATORS: draw backend
N_("Safe OpenGL"),
// TRANSLATORS: draw backend
- N_("Mobile OpenGL"),
+ N_("Mobile OpenGL")
};
const int renderModesListSize = 4;
@@ -81,12 +89,14 @@ const int renderToIndex[] =
0, // RENDER_SOFTWARE
1, // RENDER_NORMAL_OPENGL
2, // RENDER_SAFE_OPENGL
- 3 // RENDER_GLES_OPENGL
+ 3, // RENDER_GLES_OPENGL
+ 0 // RENDER_SDL2_DEFAULT
};
#endif // ANDROID
#else // USE_OPENGL
+// no defines
// map for index to RenderType
const RenderType indexToRender[] =
@@ -105,11 +115,13 @@ const int renderModesListSize = 1;
const int renderToIndex[] =
{
0, // RENDER_SOFTWARE
- 0, // RENDER_SOFTWARE
- 0, // RENDER_SOFTWARE
- 0 // RENDER_SOFTWARE
+ 0, // RENDER_NORMAL_OPENGL
+ 0, // RENDER_SAFE_OPENGL
+ 0, // RENDER_GLES_OPENGL
+ 0 // RENDER_SDL2_DEFAULT
};
#endif // USE_OPENGL
-#endif // RENDER_RENDERERSLIST_H
+#endif // USE_SDL2
+#endif // RENDER_RENDERERSLISTSDL_H
diff --git a/src/render/rendererslistsdl2.h b/src/render/rendererslistsdl2.h
new file mode 100644
index 000000000..966b53726
--- /dev/null
+++ b/src/render/rendererslistsdl2.h
@@ -0,0 +1,133 @@
+/*
+ * The ManaPlus Client
+ * Copyright (C) 2013 The ManaPlus Developers
+ *
+ * This file is part of The ManaPlus Client.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "utils/gettext.h"
+
+#ifndef RENDER_RENDERERSLISTSDL2_H
+#define RENDER_RENDERERSLISTSDL2_H
+
+#ifdef USE_SDL2
+
+#ifdef USE_OPENGL
+#ifdef ANDROID
+// defined OPENGL ANDROID
+
+// map for index to RenderType
+const RenderType indexToRender[] =
+{
+ RENDER_SOFTWARE,
+ RENDER_SDL2_DEFAULT,
+ RENDER_GLES_OPENGL
+};
+
+const char *OPENGL_NAME[] =
+{
+ // TRANSLATORS: draw backend
+ N_("Software"),
+ // TRANSLATORS: draw backend
+ N_("SDL2 default"),
+ // TRANSLATORS: draw backend
+ N_("Mobile OpenGL")
+};
+
+const int renderModesListSize = 3;
+
+const int renderToIndex[] =
+{
+ 0, // RENDER_SOFTWARE
+ 2, // RENDER_NORMAL_OPENGL
+ 2, // RENDER_SAFE_OPENGL
+ 2, // RENDER_GLES_OPENGL
+ 1 // RENDER_SDL2_DEFAULT
+};
+
+#else // ANDROID
+// defined OPENGL
+
+// map for index to RenderType
+const RenderType indexToRender[] =
+{
+ RENDER_SOFTWARE,
+ RENDER_SDL2_DEFAULT,
+ RENDER_NORMAL_OPENGL,
+ RENDER_SAFE_OPENGL,
+ RENDER_GLES_OPENGL
+};
+
+const char *OPENGL_NAME[] =
+{
+ // TRANSLATORS: draw backend
+ N_("Software"),
+ // TRANSLATORS: draw backend
+ N_("SDL2 default"),
+ // TRANSLATORS: draw backend
+ N_("Fast OpenGL"),
+ // TRANSLATORS: draw backend
+ N_("Safe OpenGL"),
+ // TRANSLATORS: draw backend
+ N_("Mobile OpenGL")
+};
+
+const int renderModesListSize = 5;
+
+const int renderToIndex[] =
+{
+ 0, // RENDER_SOFTWARE
+ 2, // RENDER_NORMAL_OPENGL
+ 3, // RENDER_SAFE_OPENGL
+ 4, // RENDER_GLES_OPENGL
+ 1 // RENDER_SDL2_DEFAULT
+};
+
+#endif // ANDROID
+
+#else // USE_OPENGL
+// no defines
+
+// map for index to RenderType
+const RenderType indexToRender[] =
+{
+ RENDER_SOFTWARE,
+ RENDER_SDL2_DEFAULT
+};
+
+const char *OPENGL_NAME[] =
+{
+ // TRANSLATORS: draw backend
+ N_("Software"),
+ // TRANSLATORS: draw backend
+ N_("SDL2 default")
+};
+
+const int renderModesListSize = 2;
+
+const int renderToIndex[] =
+{
+ 0, // RENDER_SOFTWARE
+ 0, // RENDER_NORMAL_OPENGL
+ 0, // RENDER_SAFE_OPENGL
+ 0, // RENDER_GLES_OPENGL
+ 1 // RENDER_SDL2_DEFAULT
+};
+
+#endif // USE_OPENGL
+
+#endif // USE_SDL2
+#endif // RENDER_RENDERERSLISTSDL2_H
diff --git a/src/render/sdl2graphics.cpp b/src/render/sdl2graphics.cpp
index 218f2cad7..82ad78198 100644
--- a/src/render/sdl2graphics.cpp
+++ b/src/render/sdl2graphics.cpp
@@ -70,6 +70,7 @@ static int FakeSDL_RenderCopy(SDL_Renderer *const renderer,
SDLGraphics::SDLGraphics() :
Graphics(),
+ mRendererFlags(SDL_RENDERER_SOFTWARE),
mOldPixel(0),
mOldAlpha(0)
{
@@ -633,7 +634,7 @@ bool SDLGraphics::setVideoMode(const int w, const int h, const int bpp,
mRect.w = w1;
mRect.h = h1;
- mRenderer = graphicsManager.createRenderer(mWindow, SDL_RENDERER_SOFTWARE);
+ mRenderer = graphicsManager.createRenderer(mWindow, mRendererFlags);
SDLImageHelper::setRenderer(mRenderer);
return videoInfo();
}
diff --git a/src/render/sdl2graphics.h b/src/render/sdl2graphics.h
index f3835e904..383e93540 100644
--- a/src/render/sdl2graphics.h
+++ b/src/render/sdl2graphics.h
@@ -128,6 +128,9 @@ class SDLGraphics : public Graphics
const bool fs, const bool hwaccel,
const bool resize, const bool noFrame);
+ void setRendererFlags(const uint32_t flags)
+ { mRendererFlags = flags; }
+
protected:
virtual bool drawImage2(const Image *const image,
int srcX, int srcY,
@@ -135,6 +138,7 @@ class SDLGraphics : public Graphics
const int width, const int height,
const bool useColor);
+ uint32_t mRendererFlags;
uint32_t mOldPixel;
int mOldAlpha;
};