diff options
| author | Tony Wasserka <NeoBrainX@gmail.com> | 2013-11-22 17:45:24 +0100 |
|---|---|---|
| committer | Tony Wasserka <NeoBrainX@gmail.com> | 2013-11-22 18:09:52 +0100 |
| commit | 672fa65ee76c0addb31b8c8cacc129a76926331d (patch) | |
| tree | 48f636a3288d616f35995da07a0a70f53e712592 /Source | |
| parent | 1763dc20764cc77f2d9d2fdb88e595fc12db1a3f (diff) | |
OpenGL: Enable pinned memory even for index buffers (works for me). Big-ish speedup on AMD GPUs for streaming intensive games.
Diffstat (limited to 'Source')
| -rw-r--r-- | Source/Core/VideoBackends/OGL/Src/StreamBuffer.cpp | 2 | ||||
| -rw-r--r-- | Source/Core/VideoCommon/Src/DriverDetails.cpp | 1 | ||||
| -rw-r--r-- | Source/Core/VideoCommon/Src/DriverDetails.h | 3 |
3 files changed, 3 insertions, 3 deletions
diff --git a/Source/Core/VideoBackends/OGL/Src/StreamBuffer.cpp b/Source/Core/VideoBackends/OGL/Src/StreamBuffer.cpp index 15135f3621..f6630c0d09 100644 --- a/Source/Core/VideoBackends/OGL/Src/StreamBuffer.cpp +++ b/Source/Core/VideoBackends/OGL/Src/StreamBuffer.cpp @@ -40,7 +40,7 @@ StreamBuffer::StreamBuffer(u32 type, size_t size, StreamType uploadType) m_uploadtype = BUFFERDATA; else if(g_ogl_config.bSupportsGLSync && g_ActiveConfig.bHackedBufferUpload && (m_uploadtype & MAP_AND_RISK)) m_uploadtype = MAP_AND_RISK; - else if(g_ogl_config.bSupportsGLSync && g_ogl_config.bSupportsGLPinnedMemory && (!DriverDetails::HasBug(DriverDetails::BUG_BROKENPINNEDMEMORY) || type != GL_ELEMENT_ARRAY_BUFFER) && (m_uploadtype & PINNED_MEMORY)) + else if(g_ogl_config.bSupportsGLSync && g_ogl_config.bSupportsGLPinnedMemory && !(DriverDetails::HasBug(DriverDetails::BUG_BROKENPINNEDMEMORY) && type == GL_ELEMENT_ARRAY_BUFFER) && (m_uploadtype & PINNED_MEMORY)) m_uploadtype = PINNED_MEMORY; else if(nvidia && (m_uploadtype & BUFFERSUBDATA)) m_uploadtype = BUFFERSUBDATA; diff --git a/Source/Core/VideoCommon/Src/DriverDetails.cpp b/Source/Core/VideoCommon/Src/DriverDetails.cpp index 1a9a56f532..d2e8f2a059 100644 --- a/Source/Core/VideoCommon/Src/DriverDetails.cpp +++ b/Source/Core/VideoCommon/Src/DriverDetails.cpp @@ -39,7 +39,6 @@ namespace DriverDetails {VENDOR_MESA, DRIVER_I965, BUG_BROKENUBO, 900, 920, true}, {VENDOR_ATI, DRIVER_ATI, BUG_BROKENHACKEDBUFFER, -1.0, -1.0, true}, {VENDOR_MESA, DRIVER_NOUVEAU, BUG_BROKENHACKEDBUFFER, -1.0, -1.0, true}, - {VENDOR_ATI, DRIVER_ATI, BUG_BROKENPINNEDMEMORY, -1.0, -1.0, true}, {VENDOR_TEGRA, DRIVER_NVIDIA, BUG_ISTEGRA, -1.0, -1.0, true}, {VENDOR_IMGTEC, DRIVER_IMGTEC, BUG_ISPOWERVR, -1.0, -1.0, true}, }; diff --git a/Source/Core/VideoCommon/Src/DriverDetails.h b/Source/Core/VideoCommon/Src/DriverDetails.h index 2a5fb3ce22..49af92084e 100644 --- a/Source/Core/VideoCommon/Src/DriverDetails.h +++ b/Source/Core/VideoCommon/Src/DriverDetails.h @@ -94,10 +94,11 @@ namespace DriverDetails // Bug: The pinned memory extension isn't working for index buffers // Affected devices: AMD as they are the only vendor providing this extension // Started Version: ? - // Ended Version: -1 + // Ended Version: 13.9 working for me (neobrain). // Pinned memory is disabled for index buffer as the amd driver (the only one with pinned memory support) seems // to be broken. We just get flickering/black rendering when using pinned memory here -- degasus - 2013/08/20 // Please see issue #6105 on google code. Let's hope buffer storage solves this issues. + // TODO: Detect broken drivers. BUG_BROKENPINNEDMEMORY, // Bug: Entirely broken UBOs // Affected devices: Qualcomm/Adreno |
