From 0e9d27663bb6cbe74cb1e8e08a716f64ef82b658 Mon Sep 17 00:00:00 2001 From: Helge Norberg Date: Mon, 30 Nov 2015 21:55:02 +0100 Subject: [PATCH] Radically improved performance in texture.cpp at least on Nvidia Quadro 2000. GL_UNSIGNED_INT_8_8_8_8_REV increases CPU usage when used with glTexSubImage2D on nvidia (conversion of some kind I'm guessing). Only seems to be a benefit during glReadPixels. --- accelerator/ogl/util/texture.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/accelerator/ogl/util/texture.cpp b/accelerator/ogl/util/texture.cpp index 18b899984..322ffeb13 100644 --- a/accelerator/ogl/util/texture.cpp +++ b/accelerator/ogl/util/texture.cpp @@ -38,7 +38,8 @@ namespace caspar { namespace accelerator { namespace ogl { static GLenum FORMAT[] = {0, GL_RED, GL_RG, GL_BGR, GL_BGRA}; static GLenum INTERNAL_FORMAT[] = {0, GL_R8, GL_RG8, GL_RGB8, GL_RGBA8}; -static GLenum TYPE[] = {0, GL_UNSIGNED_BYTE, GL_UNSIGNED_BYTE, GL_UNSIGNED_BYTE, GL_UNSIGNED_INT_8_8_8_8_REV}; +static GLenum TYPE[] = { 0, GL_UNSIGNED_BYTE, GL_UNSIGNED_BYTE, GL_UNSIGNED_BYTE, GL_UNSIGNED_BYTE }; +static GLenum READPIXELS_TYPE[] = { 0, GL_UNSIGNED_BYTE, GL_UNSIGNED_BYTE, GL_UNSIGNED_BYTE, GL_UNSIGNED_INT_8_8_8_8_REV }; static tbb::atomic g_total_count; static tbb::atomic g_total_size; @@ -150,7 +151,7 @@ public: dest.bind(); GL(glBindTexture(GL_TEXTURE_2D, id_)); GL(glReadBuffer(GL_COLOR_ATTACHMENT0)); - GL(glReadPixels(0, 0, width_, height_, FORMAT[stride_], TYPE[stride_], NULL)); + GL(glReadPixels(0, 0, width_, height_, FORMAT[stride_], READPIXELS_TYPE[stride_], NULL)); GL(glBindTexture(GL_TEXTURE_2D, 0)); dest.unbind(); GL(glFlush()); -- 2.39.2