diff options
| author | Yuri Kunde Schlesner <yuriks@yuriks.net> | 2015-07-26 06:38:19 -0300 | 
|---|---|---|
| committer | Yuri Kunde Schlesner <yuriks@yuriks.net> | 2015-07-26 10:58:58 -0300 | 
| commit | 1762267de44cd2a5e61b237906c1749fdc96d0f6 (patch) | |
| tree | 5214a4db318bcac2bf04e2b307348cb485f75c29 /src/video_core | |
| parent | 392c7feba0cd152e46ffbe6089def35082fa2692 (diff) | |
OpenGL: Make OpenGL object resource wrappers fully inline
The functions are so simple that having them separate only bloats the
code and hinders optimization.
Diffstat (limited to 'src/video_core')
| -rw-r--r-- | src/video_core/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_resource_manager.cpp | 111 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_resource_manager.h | 110 | 
3 files changed, 79 insertions, 143 deletions
| diff --git a/src/video_core/CMakeLists.txt b/src/video_core/CMakeLists.txt index 5c7f4ae18..162108301 100644 --- a/src/video_core/CMakeLists.txt +++ b/src/video_core/CMakeLists.txt @@ -2,7 +2,6 @@ set(SRCS              renderer_opengl/generated/gl_3_2_core.c              renderer_opengl/gl_rasterizer.cpp              renderer_opengl/gl_rasterizer_cache.cpp -            renderer_opengl/gl_resource_manager.cpp              renderer_opengl/gl_shader_util.cpp              renderer_opengl/gl_state.cpp              renderer_opengl/renderer_opengl.cpp diff --git a/src/video_core/renderer_opengl/gl_resource_manager.cpp b/src/video_core/renderer_opengl/gl_resource_manager.cpp deleted file mode 100644 index 8f4ae28a4..000000000 --- a/src/video_core/renderer_opengl/gl_resource_manager.cpp +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2015 Citra Emulator Project -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. - -#include "video_core/renderer_opengl/gl_resource_manager.h" -#include "video_core/renderer_opengl/gl_shader_util.h" - -// Textures -OGLTexture::OGLTexture() : handle(0) { -} - -OGLTexture::~OGLTexture() { -    Release(); -} - -void OGLTexture::Create() { -    if (handle != 0) { -        return; -    } - -    glGenTextures(1, &handle); -} - -void OGLTexture::Release() { -    glDeleteTextures(1, &handle); -    handle = 0; -} - -// Shaders -OGLShader::OGLShader() : handle(0) { -} - -OGLShader::~OGLShader() { -    Release(); -} - -void OGLShader::Create(const char* vert_shader, const char* frag_shader) { -    if (handle != 0) { -        return; -    } - -    handle = ShaderUtil::LoadShaders(vert_shader, frag_shader); -} - -void OGLShader::Release() { -    glDeleteProgram(handle); -    handle = 0; -} - -// Buffer objects -OGLBuffer::OGLBuffer() : handle(0) { -} - -OGLBuffer::~OGLBuffer() { -    Release(); -} - -void OGLBuffer::Create() { -    if (handle != 0) { -        return; -    } - -    glGenBuffers(1, &handle); -} - -void OGLBuffer::Release() { -    glDeleteBuffers(1, &handle); -    handle = 0; -} - -// Vertex array objects -OGLVertexArray::OGLVertexArray() : handle(0) { -} - -OGLVertexArray::~OGLVertexArray() { -    Release(); -} - -void OGLVertexArray::Create() { -    if (handle != 0) { -        return; -    } - -    glGenVertexArrays(1, &handle); -} - -void OGLVertexArray::Release() { -    glDeleteVertexArrays(1, &handle); -    handle = 0; -} - -// Framebuffers -OGLFramebuffer::OGLFramebuffer() : handle(0) { -} - -OGLFramebuffer::~OGLFramebuffer() { -    Release(); -} - -void OGLFramebuffer::Create() { -    if (handle != 0) { -        return; -    } - -    glGenFramebuffers(1, &handle); -} - -void OGLFramebuffer::Release() { -    glDeleteFramebuffers(1, &handle); -    handle = 0; -} diff --git a/src/video_core/renderer_opengl/gl_resource_manager.h b/src/video_core/renderer_opengl/gl_resource_manager.h index 975720d0a..6f9dc012d 100644 --- a/src/video_core/renderer_opengl/gl_resource_manager.h +++ b/src/video_core/renderer_opengl/gl_resource_manager.h @@ -4,76 +4,124 @@  #pragma once +#include <utility> +  #include "common/common_types.h" -#include "generated/gl_3_2_core.h" +#include "video_core/renderer_opengl/generated/gl_3_2_core.h" +#include "video_core/renderer_opengl/gl_shader_util.h" -class OGLTexture : public NonCopyable { +class OGLTexture : private NonCopyable {  public: -    OGLTexture(); -    ~OGLTexture(); +    OGLTexture() = default; +    OGLTexture(OGLTexture&& o) { std::swap(handle, o.handle); } +    ~OGLTexture() { Release(); } +    OGLTexture& operator=(OGLTexture&& o) { std::swap(handle, o.handle); return *this; }      /// Creates a new internal OpenGL resource and stores the handle -    void Create(); +    void Create() { +        if (handle != 0) return; +        glGenTextures(1, &handle); +    }      /// Deletes the internal OpenGL resource -    void Release(); +    void Release() { +        if (handle == 0) return; +        glDeleteTextures(1, &handle); +        handle = 0; +    } -    GLuint handle; +    GLuint handle = 0;  }; -class OGLShader : public NonCopyable { +class OGLShader : private NonCopyable {  public: -    OGLShader(); -    ~OGLShader(); +    OGLShader() = default; +    OGLShader(OGLShader&& o) { std::swap(handle, o.handle); } +    ~OGLShader() { Release(); } +    OGLShader& operator=(OGLShader&& o) { std::swap(handle, o.handle); return *this; }      /// Creates a new internal OpenGL resource and stores the handle -    void Create(const char* vert_shader, const char* frag_shader); +    void Create(const char* vert_shader, const char* frag_shader) { +        if (handle != 0) return; +        handle = ShaderUtil::LoadShaders(vert_shader, frag_shader); +    }      /// Deletes the internal OpenGL resource -    void Release(); +    void Release() { +        if (handle == 0) return; +        glDeleteProgram(handle); +        handle = 0; +    } -    GLuint handle; +    GLuint handle = 0;  }; -class OGLBuffer : public NonCopyable { +class OGLBuffer : private NonCopyable {  public: -    OGLBuffer(); -    ~OGLBuffer(); +    OGLBuffer() = default; +    OGLBuffer(OGLBuffer&& o) { std::swap(handle, o.handle); } +    ~OGLBuffer() { Release(); } +    OGLBuffer& operator=(OGLBuffer&& o) { std::swap(handle, o.handle); return *this; }      /// Creates a new internal OpenGL resource and stores the handle -    void Create(); +    void Create() { +        if (handle != 0) return; +        glGenBuffers(1, &handle); +    }      /// Deletes the internal OpenGL resource -    void Release(); +    void Release() { +        if (handle == 0) return; +        glDeleteBuffers(1, &handle); +        handle = 0; +    } -    GLuint handle; +    GLuint handle = 0;  }; -class OGLVertexArray : public NonCopyable { +class OGLVertexArray : private NonCopyable {  public: -    OGLVertexArray(); -    ~OGLVertexArray(); +    OGLVertexArray() = default; +    OGLVertexArray(OGLVertexArray&& o) { std::swap(handle, o.handle); } +    ~OGLVertexArray() { Release(); } +    OGLVertexArray& operator=(OGLVertexArray&& o) { std::swap(handle, o.handle); return *this; }      /// Creates a new internal OpenGL resource and stores the handle -    void Create(); +    void Create() { +        if (handle != 0) return; +        glGenVertexArrays(1, &handle); +    }      /// Deletes the internal OpenGL resource -    void Release(); +    void Release() { +        if (handle == 0) return; +        glDeleteVertexArrays(1, &handle); +        handle = 0; +    } -    GLuint handle; +    GLuint handle = 0;  }; -class OGLFramebuffer : public NonCopyable { +class OGLFramebuffer : private NonCopyable {  public: -    OGLFramebuffer(); -    ~OGLFramebuffer(); +    OGLFramebuffer() = default; +    OGLFramebuffer(OGLFramebuffer&& o) { std::swap(handle, o.handle); } +    ~OGLFramebuffer() { Release(); } +    OGLFramebuffer& operator=(OGLFramebuffer&& o) { std::swap(handle, o.handle); return *this; }      /// Creates a new internal OpenGL resource and stores the handle -    void Create(); +    void Create() { +        if (handle != 0) return; +        glGenFramebuffers(1, &handle); +    }      /// Deletes the internal OpenGL resource -    void Release(); +    void Release() { +        if (handle == 0) return; +        glDeleteFramebuffers(1, &handle); +        handle = 0; +    } -    GLuint handle; +    GLuint handle = 0;  }; | 
