aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRainer Hochecker <fernetmenta@online.de>2018-02-10 09:49:50 +0100
committerLukas Rusak <lorusak@gmail.com>2018-02-20 10:43:09 -0800
commitb240f459d55dde805d68830bd61b6be23bac4d80 (patch)
tree4da4b6eeb2be179d7fe81a964966830ebed43ba6
parent648729e39313d3dbec7334adb309dbc89a57317f (diff)
rendering: drop a bunch of outdated stuff
-rw-r--r--xbmc/cores/VideoPlayer/VideoRenderers/RenderCapture.cpp4
-rw-r--r--xbmc/guilib/Texture.cpp6
-rw-r--r--xbmc/rendering/RenderSystem.cpp10
-rw-r--r--xbmc/rendering/RenderSystem.h30
-rw-r--r--xbmc/rendering/RenderSystemTypes.h7
-rw-r--r--xbmc/rendering/dx/RenderSystemDX.h2
-rw-r--r--xbmc/rendering/gl/RenderSystemGL.cpp82
-rw-r--r--xbmc/rendering/gl/RenderSystemGL.h5
-rw-r--r--xbmc/rendering/gles/RenderSystemGLES.cpp3
-rw-r--r--xbmc/rendering/gles/RenderSystemGLES.h2
-rw-r--r--xbmc/windowing/X11/WinSystemX11GLContext.cpp2
-rw-r--r--xbmc/windowing/X11/WinSystemX11GLContext.h2
-rw-r--r--xbmc/windowing/mir/WinSystemMirGLESContext.cpp2
-rw-r--r--xbmc/windowing/mir/WinSystemMirGLESContext.h2
-rw-r--r--xbmc/windowing/osx/WinSystemIOS.h10
-rw-r--r--xbmc/windowing/osx/WinSystemIOS.mm2
16 files changed, 37 insertions, 134 deletions
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/RenderCapture.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/RenderCapture.cpp
index 8622c434c9..667d06282f 100644
--- a/xbmc/cores/VideoPlayer/VideoRenderers/RenderCapture.cpp
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/RenderCapture.cpp
@@ -53,9 +53,7 @@ bool CRenderCaptureBase::UseOcclusionQuery()
{
if (m_flags & CAPTUREFLAG_IMMEDIATELY)
return false;
- else if ((g_advancedSettings.m_videoCaptureUseOcclusionQuery == 0) ||
- (g_advancedSettings.m_videoCaptureUseOcclusionQuery == -1 &&
- CServiceBroker::GetRenderSystem().GetRenderQuirks() & RENDER_QUIRKS_BROKEN_OCCLUSION_QUERY))
+ else if (g_advancedSettings.m_videoCaptureUseOcclusionQuery == 0)
return false;
else
return true;
diff --git a/xbmc/guilib/Texture.cpp b/xbmc/guilib/Texture.cpp
index 3df7a64aa1..96249495eb 100644
--- a/xbmc/guilib/Texture.cpp
+++ b/xbmc/guilib/Texture.cpp
@@ -69,16 +69,20 @@ void CBaseTexture::Allocate(unsigned int width, unsigned int height, unsigned in
m_textureHeight = m_imageHeight;
if (m_format & XB_FMT_DXT_MASK)
+ {
while (GetPitch() < CServiceBroker::GetRenderSystem().GetMinDXTPitch())
m_textureWidth += GetBlockSize();
+ }
if (!CServiceBroker::GetRenderSystem().SupportsNPOT((m_format & XB_FMT_DXT_MASK) != 0))
{
m_textureWidth = PadPow2(m_textureWidth);
m_textureHeight = PadPow2(m_textureHeight);
}
+
if (m_format & XB_FMT_DXT_MASK)
- { // DXT textures must be a multiple of 4 in width and height
+ {
+ // DXT textures must be a multiple of 4 in width and height
m_textureWidth = ((m_textureWidth + 3) / 4) * 4;
m_textureHeight = ((m_textureHeight + 3) / 4) * 4;
}
diff --git a/xbmc/rendering/RenderSystem.cpp b/xbmc/rendering/RenderSystem.cpp
index d35dafbcb4..a6d4f17b58 100644
--- a/xbmc/rendering/RenderSystem.cpp
+++ b/xbmc/rendering/RenderSystem.cpp
@@ -34,8 +34,6 @@ CRenderSystemBase::CRenderSystemBase()
m_maxTextureSize = 2048;
m_RenderVersionMajor = 0;
m_RenderVersionMinor = 0;
- m_renderCaps = 0;
- m_renderQuirks = 0;
m_minDXTPitch = 0;
}
@@ -50,13 +48,9 @@ void CRenderSystemBase::GetRenderVersion(unsigned int& major, unsigned int& mino
bool CRenderSystemBase::SupportsNPOT(bool dxt) const
{
if (dxt)
- return (m_renderCaps & RENDER_CAPS_DXT_NPOT) == RENDER_CAPS_DXT_NPOT;
- return (m_renderCaps & RENDER_CAPS_NPOT) == RENDER_CAPS_NPOT;
-}
+ return false;
-bool CRenderSystemBase::SupportsDXT() const
-{
- return (m_renderCaps & RENDER_CAPS_DXT) == RENDER_CAPS_DXT;
+ return true;
}
bool CRenderSystemBase::SupportsStereo(RENDER_STEREO_MODE mode) const
diff --git a/xbmc/rendering/RenderSystem.h b/xbmc/rendering/RenderSystem.h
index be7709f8e5..3df615e508 100644
--- a/xbmc/rendering/RenderSystem.h
+++ b/xbmc/rendering/RenderSystem.h
@@ -18,9 +18,6 @@
*
*/
-#ifndef RENDER_SYSTEM_H
-#define RENDER_SYSTEM_H
-
#pragma once
#include "RenderSystemTypes.h"
@@ -30,26 +27,12 @@
#include <memory>
#include <string>
-typedef enum _RenderingSystemType
-{
- RENDERING_SYSTEM_OPENGL,
- RENDERING_SYSTEM_DIRECTX,
- RENDERING_SYSTEM_OPENGLES
-} RenderingSystemType;
-
/*
* CRenderSystemBase interface allows us to create the rendering engine we use.
* We currently have two engines: OpenGL and DirectX
* This interface is very basic since a lot of the actual details will go in to the derived classes
*/
-enum
-{
- RENDER_CAPS_DXT = (1 << 0),
- RENDER_CAPS_NPOT = (1 << 1),
- RENDER_CAPS_DXT_NPOT = (1 << 2),
-};
-
class CGUIImage;
class CGUITextLayout;
@@ -59,9 +42,6 @@ public:
CRenderSystemBase();
virtual ~CRenderSystemBase();
- // Retrieve
- RenderingSystemType GetRenderingSystemType() { return m_enumRenderingSystem; }
-
virtual bool InitRenderSystem() = 0;
virtual bool DestroyRenderSystem() = 0;
virtual bool ResetRenderSystem(int width, int height) = 0;
@@ -70,7 +50,7 @@ public:
virtual bool EndRender() = 0;
virtual void PresentRender(bool rendered, bool videoLayer) = 0;
virtual bool ClearBuffers(color_t color) = 0;
- virtual bool IsExtSupported(const char* extension) = 0;
+ virtual bool IsExtSupported(const char* extension) const = 0;
virtual void SetViewPort(const CRect& viewPort) = 0;
virtual void GetViewPort(CRect& viewPort) = 0;
@@ -106,18 +86,15 @@ public:
const std::string& GetRenderVendor() const { return m_RenderVendor; }
const std::string& GetRenderRenderer() const { return m_RenderRenderer; }
const std::string& GetRenderVersionString() const { return m_RenderVersion; }
- bool SupportsDXT() const;
- bool SupportsNPOT(bool dxt) const;
+ virtual bool SupportsNPOT(bool dxt) const;
virtual bool SupportsStereo(RENDER_STEREO_MODE mode) const;
unsigned int GetMaxTextureSize() const { return m_maxTextureSize; }
unsigned int GetMinDXTPitch() const { return m_minDXTPitch; }
- unsigned int GetRenderQuirks() const { return m_renderQuirks; }
virtual void ShowSplash(const std::string& message);
protected:
bool m_bRenderCreated;
- RenderingSystemType m_enumRenderingSystem;
bool m_bVSync;
unsigned int m_maxTextureSize;
unsigned int m_minDXTPitch;
@@ -127,8 +104,6 @@ protected:
std::string m_RenderVersion;
int m_RenderVersionMinor;
int m_RenderVersionMajor;
- unsigned int m_renderCaps;
- unsigned int m_renderQuirks;
RENDER_STEREO_VIEW m_stereoView;
RENDER_STEREO_MODE m_stereoMode;
@@ -136,4 +111,3 @@ protected:
std::unique_ptr<CGUITextLayout> m_splashMessageLayout;
};
-#endif // RENDER_SYSTEM_H
diff --git a/xbmc/rendering/RenderSystemTypes.h b/xbmc/rendering/RenderSystemTypes.h
index 5968d3df9b..0329c5c496 100644
--- a/xbmc/rendering/RenderSystemTypes.h
+++ b/xbmc/rendering/RenderSystemTypes.h
@@ -23,13 +23,6 @@
using color_t = uint32_t;
-enum
-{
- RENDER_QUIRKS_MAJORMEMLEAK_OVERLAYRENDERER = 1 << 0,
- RENDER_QUIRKS_YV12_PREFERED = 1 << 1,
- RENDER_QUIRKS_BROKEN_OCCLUSION_QUERY = 1 << 2,
-};
-
enum RENDER_STEREO_VIEW
{
RENDER_STEREO_VIEW_OFF,
diff --git a/xbmc/rendering/dx/RenderSystemDX.h b/xbmc/rendering/dx/RenderSystemDX.h
index b62c5a916a..6da7b8135e 100644
--- a/xbmc/rendering/dx/RenderSystemDX.h
+++ b/xbmc/rendering/dx/RenderSystemDX.h
@@ -89,7 +89,7 @@ public:
void SetAlphaBlendEnable(bool enable);
// empty overrides
- bool IsExtSupported(const char* extension) override { return false; };
+ bool IsExtSupported(const char* extension) const override { return false; };
void ApplyHardwareTransform(const TransformMatrix &matrix) override {};
void RestoreHardwareTransform() override {};
bool ResetRenderSystem(int width, int height) override { return true; };
diff --git a/xbmc/rendering/gl/RenderSystemGL.cpp b/xbmc/rendering/gl/RenderSystemGL.cpp
index 077006fa0f..c443ad12cd 100644
--- a/xbmc/rendering/gl/RenderSystemGL.cpp
+++ b/xbmc/rendering/gl/RenderSystemGL.cpp
@@ -36,73 +36,16 @@
CRenderSystemGL::CRenderSystemGL() : CRenderSystemBase()
{
- m_enumRenderingSystem = RENDERING_SYSTEM_OPENGL;
m_pShader.reset(new CGLShader*[SM_MAX]);
}
CRenderSystemGL::~CRenderSystemGL() = default;
-void CRenderSystemGL::CheckOpenGLQuirks()
-
-{
-#ifdef TARGET_DARWIN_OSX
- if (m_RenderVendor.find("NVIDIA") != std::string::npos)
- {
- // Nvidia 7300 (AppleTV) and 7600 cannot do DXT with NPOT under OSX
- // Nvidia 9400M is slow as a dog
- if (m_renderCaps & RENDER_CAPS_DXT_NPOT)
- {
- const char *arr[3]= { "7300","7600","9400M" };
- for(int j = 0; j < 3; j++)
- {
- if((int(m_RenderRenderer.find(arr[j])) > -1))
- {
- m_renderCaps &= ~ RENDER_CAPS_DXT_NPOT;
- break;
- }
- }
- }
- }
-#ifdef __ppc__
- // ATI Radeon 9600 on osx PPC cannot do NPOT
- if (m_RenderRenderer.find("ATI Radeon 9600") != std::string::npos)
- {
- m_renderCaps &= ~ RENDER_CAPS_NPOT;
- m_renderCaps &= ~ RENDER_CAPS_DXT_NPOT;
- }
-#endif
-#endif
- if (StringUtils::EqualsNoCase(m_RenderVendor, "nouveau"))
- m_renderQuirks |= RENDER_QUIRKS_YV12_PREFERED;
-
- if (StringUtils::EqualsNoCase(m_RenderVendor, "Tungsten Graphics, Inc.")
- || StringUtils::EqualsNoCase(m_RenderVendor, "Tungsten Graphics, Inc"))
- {
- unsigned major, minor, micro;
- if (sscanf(m_RenderVersion.c_str(), "%*s Mesa %u.%u.%u", &major, &minor, &micro) == 3)
- {
-
- if((major < 7)
- || (major == 7 && minor < 7)
- || (major == 7 && minor == 7 && micro < 1))
- m_renderQuirks |= RENDER_QUIRKS_MAJORMEMLEAK_OVERLAYRENDERER;
- }
- else
- CLog::Log(LOGNOTICE, "CRenderSystemGL::CheckOpenGLQuirks - unable to parse mesa version string");
-
- if(m_RenderRenderer.find("Poulsbo") != std::string::npos)
- m_renderCaps &= ~RENDER_CAPS_DXT_NPOT;
-
- m_renderQuirks |= RENDER_QUIRKS_BROKEN_OCCLUSION_QUERY;
- }
-}
-
bool CRenderSystemGL::InitRenderSystem()
{
m_bVSync = false;
m_bVsyncInit = false;
m_maxTextureSize = 2048;
- m_renderCaps = 0;
// Get the GL version number
m_RenderVersionMajor = 0;
@@ -160,19 +103,6 @@ bool CRenderSystemGL::InitRenderSystem()
if (tmpRenderer != NULL)
m_RenderRenderer = tmpRenderer;
- // grab our capabilities
- if (IsExtSupported("GL_EXT_texture_compression_s3tc"))
- m_renderCaps |= RENDER_CAPS_DXT;
-
- if (IsExtSupported("GL_ARB_texture_non_power_of_two"))
- {
- m_renderCaps |= RENDER_CAPS_NPOT;
- if (m_renderCaps & RENDER_CAPS_DXT)
- m_renderCaps |= RENDER_CAPS_DXT_NPOT;
- }
- //Check OpenGL quirks and revert m_renderCaps as needed
- CheckOpenGLQuirks();
-
m_bRenderCreated = true;
if (m_RenderVersionMajor > 3 ||
@@ -184,6 +114,11 @@ bool CRenderSystemGL::InitRenderSystem()
InitialiseShader();
+ if (IsExtSupported("GL_ARB_texture_non_power_of_two"))
+ m_supportsNPOT = true;
+ else
+ m_supportsNPOT = false;
+
return true;
}
@@ -310,7 +245,7 @@ bool CRenderSystemGL::ClearBuffers(color_t color)
return true;
}
-bool CRenderSystemGL::IsExtSupported(const char* extension)
+bool CRenderSystemGL::IsExtSupported(const char* extension) const
{
if (m_RenderVersionMajor > 3 ||
(m_RenderVersionMajor == 3 && m_RenderVersionMinor >= 2))
@@ -333,6 +268,11 @@ bool CRenderSystemGL::IsExtSupported(const char* extension)
return m_RenderExtensions.find(name) != std::string::npos;
}
+bool CRenderSystemGL::SupportsNPOT(bool dxt) const
+{
+ return m_supportsNPOT;
+}
+
void CRenderSystemGL::PresentRender(bool rendered, bool videoLayer)
{
SetVSync(true);
diff --git a/xbmc/rendering/gl/RenderSystemGL.h b/xbmc/rendering/gl/RenderSystemGL.h
index 41d7f0cd66..4375868ae4 100644
--- a/xbmc/rendering/gl/RenderSystemGL.h
+++ b/xbmc/rendering/gl/RenderSystemGL.h
@@ -40,7 +40,6 @@ class CRenderSystemGL : public CRenderSystemBase
public:
CRenderSystemGL();
~CRenderSystemGL() override;
- void CheckOpenGLQuirks();
bool InitRenderSystem() override;
bool DestroyRenderSystem() override;
bool ResetRenderSystem(int width, int height) override;
@@ -49,7 +48,7 @@ public:
bool EndRender() override;
void PresentRender(bool rendered, bool videoLayer) override;
bool ClearBuffers(color_t color) override;
- bool IsExtSupported(const char* extension) override;
+ bool IsExtSupported(const char* extension) const override;
void SetVSync(bool vsync);
void ResetVSync() { m_bVsyncInit = false; }
@@ -71,6 +70,7 @@ public:
void RestoreHardwareTransform() override;
void SetStereoMode(RENDER_STEREO_MODE mode, RENDER_STEREO_VIEW view) override;
bool SupportsStereo(RENDER_STEREO_MODE mode) const override;
+ bool SupportsNPOT(bool dxt) const override;
bool TestRender() override;
@@ -102,6 +102,7 @@ protected:
bool m_bVsyncInit = false;
int m_width;
int m_height;
+ bool m_supportsNPOT = true;
std::string m_RenderExtensions;
diff --git a/xbmc/rendering/gles/RenderSystemGLES.cpp b/xbmc/rendering/gles/RenderSystemGLES.cpp
index 5afa6683ac..3e44589e66 100644
--- a/xbmc/rendering/gles/RenderSystemGLES.cpp
+++ b/xbmc/rendering/gles/RenderSystemGLES.cpp
@@ -34,7 +34,6 @@
CRenderSystemGLES::CRenderSystemGLES()
: CRenderSystemBase()
{
- m_enumRenderingSystem = RENDERING_SYSTEM_OPENGLES;
m_pShader.reset(new CGLESShader*[SM_MAX]);
}
@@ -178,7 +177,7 @@ bool CRenderSystemGLES::ClearBuffers(color_t color)
return true;
}
-bool CRenderSystemGLES::IsExtSupported(const char* extension)
+bool CRenderSystemGLES::IsExtSupported(const char* extension) const
{
if (strcmp( extension, "GL_EXT_framebuffer_object" ) == 0)
{
diff --git a/xbmc/rendering/gles/RenderSystemGLES.h b/xbmc/rendering/gles/RenderSystemGLES.h
index ee7eec8519..4be7c7f6f3 100644
--- a/xbmc/rendering/gles/RenderSystemGLES.h
+++ b/xbmc/rendering/gles/RenderSystemGLES.h
@@ -54,7 +54,7 @@ public:
bool EndRender() override;
void PresentRender(bool rendered, bool videoLayer) override;
bool ClearBuffers(color_t color) override;
- bool IsExtSupported(const char* extension) override;
+ bool IsExtSupported(const char* extension) const override;
void SetVSync(bool vsync);
void ResetVSync() { m_bVsyncInit = false; }
diff --git a/xbmc/windowing/X11/WinSystemX11GLContext.cpp b/xbmc/windowing/X11/WinSystemX11GLContext.cpp
index 20ab0fa11e..dc589ea0e7 100644
--- a/xbmc/windowing/X11/WinSystemX11GLContext.cpp
+++ b/xbmc/windowing/X11/WinSystemX11GLContext.cpp
@@ -103,7 +103,7 @@ void CWinSystemX11GLContext::SetVSyncImpl(bool enable)
m_pGLContext->SetVSync(enable);
}
-bool CWinSystemX11GLContext::IsExtSupported(const char* extension)
+bool CWinSystemX11GLContext::IsExtSupported(const char* extension) const
{
if(strncmp(extension, m_pGLContext->ExtPrefix().c_str(), 4) != 0)
return CRenderSystemGL::IsExtSupported(extension);
diff --git a/xbmc/windowing/X11/WinSystemX11GLContext.h b/xbmc/windowing/X11/WinSystemX11GLContext.h
index f02865c6a1..013b1a5e6f 100644
--- a/xbmc/windowing/X11/WinSystemX11GLContext.h
+++ b/xbmc/windowing/X11/WinSystemX11GLContext.h
@@ -41,7 +41,7 @@ public:
bool DestroyWindowSystem() override;
bool DestroyWindow() override;
- bool IsExtSupported(const char* extension) override;
+ bool IsExtSupported(const char* extension) const override;
// videosync
std::unique_ptr<CVideoSync> GetVideoSync(void *clock) override;
diff --git a/xbmc/windowing/mir/WinSystemMirGLESContext.cpp b/xbmc/windowing/mir/WinSystemMirGLESContext.cpp
index efb55c9af4..6decd7bd37 100644
--- a/xbmc/windowing/mir/WinSystemMirGLESContext.cpp
+++ b/xbmc/windowing/mir/WinSystemMirGLESContext.cpp
@@ -97,7 +97,7 @@ EGLConfig CWinSystemMirGLESContext::GetEGLConfig() const
}
// FIXME Implement
-bool CWinSystemMirGLESContext::IsExtSupported(const char* extension)
+bool CWinSystemMirGLESContext::IsExtSupported(const char* extension) const
{
return false;
}
diff --git a/xbmc/windowing/mir/WinSystemMirGLESContext.h b/xbmc/windowing/mir/WinSystemMirGLESContext.h
index af1618eb9d..321ff2c0f6 100644
--- a/xbmc/windowing/mir/WinSystemMirGLESContext.h
+++ b/xbmc/windowing/mir/WinSystemMirGLESContext.h
@@ -37,7 +37,7 @@ public:
RESOLUTION_INFO& res) override;
bool SetFullScreen(bool fullScreen, RESOLUTION_INFO& res, bool blankOtherDisplays) override;
- bool IsExtSupported(const char* extension) override;
+ bool IsExtSupported(const char* extension) const override;
EGLDisplay GetEGLDisplay() const;
EGLSurface GetEGLSurface() const;
EGLContext GetEGLContext() const;
diff --git a/xbmc/windowing/osx/WinSystemIOS.h b/xbmc/windowing/osx/WinSystemIOS.h
index 72afc16596..09eec3894c 100644
--- a/xbmc/windowing/osx/WinSystemIOS.h
+++ b/xbmc/windowing/osx/WinSystemIOS.h
@@ -56,17 +56,17 @@ public:
bool Hide() override;
bool Show(bool raise = true) override;
- bool IsExtSupported(const char* extension) override;
+ bool IsExtSupported(const char* extension) const override;
bool BeginRender() override;
bool EndRender() override;
-
+
void Register(IDispResource *resource) override;
void Unregister(IDispResource *resource) override;
-
+
int GetNumScreens() override;
int GetCurrentScreen() override;
-
+
virtual std::unique_ptr<CVideoSync> GetVideoSync(void *clock) override;
bool InitDisplayLink(CVideoSyncIos *syncImpl);
@@ -87,7 +87,7 @@ protected:
CCriticalSection m_resourceSection;
std::vector<IDispResource*> m_resources;
bool m_bIsBackgrounded;
-
+
private:
bool GetScreenResolution(int* w, int* h, double* fps, int screenIdx);
void FillInVideoModes();
diff --git a/xbmc/windowing/osx/WinSystemIOS.mm b/xbmc/windowing/osx/WinSystemIOS.mm
index c2995c489e..847f90454a 100644
--- a/xbmc/windowing/osx/WinSystemIOS.mm
+++ b/xbmc/windowing/osx/WinSystemIOS.mm
@@ -332,7 +332,7 @@ void CWinSystemIOS::FillInVideoModes()
}
}
-bool CWinSystemIOS::IsExtSupported(const char* extension)
+bool CWinSystemIOS::IsExtSupported(const char* extension) const
{
if(strncmp(extension, "EGL_", 4) != 0)
return CRenderSystemGLES::IsExtSupported(extension);