diff options
author | Rainer Hochecker <fernetmenta@online.de> | 2018-02-10 09:49:50 +0100 |
---|---|---|
committer | Lukas Rusak <lorusak@gmail.com> | 2018-02-20 10:43:09 -0800 |
commit | b240f459d55dde805d68830bd61b6be23bac4d80 (patch) | |
tree | 4da4b6eeb2be179d7fe81a964966830ebed43ba6 | |
parent | 648729e39313d3dbec7334adb309dbc89a57317f (diff) |
rendering: drop a bunch of outdated stuff
-rw-r--r-- | xbmc/cores/VideoPlayer/VideoRenderers/RenderCapture.cpp | 4 | ||||
-rw-r--r-- | xbmc/guilib/Texture.cpp | 6 | ||||
-rw-r--r-- | xbmc/rendering/RenderSystem.cpp | 10 | ||||
-rw-r--r-- | xbmc/rendering/RenderSystem.h | 30 | ||||
-rw-r--r-- | xbmc/rendering/RenderSystemTypes.h | 7 | ||||
-rw-r--r-- | xbmc/rendering/dx/RenderSystemDX.h | 2 | ||||
-rw-r--r-- | xbmc/rendering/gl/RenderSystemGL.cpp | 82 | ||||
-rw-r--r-- | xbmc/rendering/gl/RenderSystemGL.h | 5 | ||||
-rw-r--r-- | xbmc/rendering/gles/RenderSystemGLES.cpp | 3 | ||||
-rw-r--r-- | xbmc/rendering/gles/RenderSystemGLES.h | 2 | ||||
-rw-r--r-- | xbmc/windowing/X11/WinSystemX11GLContext.cpp | 2 | ||||
-rw-r--r-- | xbmc/windowing/X11/WinSystemX11GLContext.h | 2 | ||||
-rw-r--r-- | xbmc/windowing/mir/WinSystemMirGLESContext.cpp | 2 | ||||
-rw-r--r-- | xbmc/windowing/mir/WinSystemMirGLESContext.h | 2 | ||||
-rw-r--r-- | xbmc/windowing/osx/WinSystemIOS.h | 10 | ||||
-rw-r--r-- | xbmc/windowing/osx/WinSystemIOS.mm | 2 |
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, µ) == 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); |