Refactor texture method overrides.
This also removes binding an EGL surface to a 3D texture image, which
is not supported by the API and which is unreachable.
Change-Id: I4a6cd17d731c28769e976b21ac46fe855d1c7b1c
Reviewed-on: https://swiftshader-review.googlesource.com/8351
Tested-by: Nicolas Capens <capn@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/OpenGL/libGLES_CM/Texture.h b/src/OpenGL/libGLES_CM/Texture.h
index 82e4b33..3e0fa8a 100644
--- a/src/OpenGL/libGLES_CM/Texture.h
+++ b/src/OpenGL/libGLES_CM/Texture.h
@@ -88,7 +88,7 @@
virtual Renderbuffer *getRenderbuffer(GLenum target) = 0;
virtual egl::Image *getRenderTarget(GLenum target, unsigned int level) = 0;
- virtual egl::Image *createSharedImage(GLenum target, unsigned int level);
+ egl::Image *createSharedImage(GLenum target, unsigned int level);
virtual bool isShared(GLenum target, unsigned int level) const = 0;
virtual void generateMipmaps() = 0;
@@ -97,7 +97,7 @@
virtual void copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source) = 0;
protected:
- virtual ~Texture();
+ ~Texture() override;
void setImage(GLenum format, GLenum type, GLint unpackAlignment, const void *pixels, egl::Image *image);
void subImage(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels, egl::Image *image);
@@ -131,14 +131,14 @@
void releaseProxy(const Renderbuffer *proxy) override;
void sweep() override;
- virtual GLenum getTarget() const;
+ GLenum getTarget() const override;
- virtual GLsizei getWidth(GLenum target, GLint level) const;
- virtual GLsizei getHeight(GLenum target, GLint level) const;
- virtual GLenum getFormat(GLenum target, GLint level) const;
- virtual GLenum getType(GLenum target, GLint level) const;
- virtual sw::Format getInternalFormat(GLenum target, GLint level) const;
- virtual int getLevelCount() const;
+ GLsizei getWidth(GLenum target, GLint level) const override;
+ GLsizei getHeight(GLenum target, GLint level) const override;
+ GLenum getFormat(GLenum target, GLint level) const override;
+ GLenum getType(GLenum target, GLint level) const override;
+ sw::Format getInternalFormat(GLenum target, GLint level) const override;
+ int getLevelCount() const override;
void setImage(GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels);
void setCompressedImage(GLint level, GLenum format, GLsizei width, GLsizei height, GLsizei imageSize, const void *pixels);
@@ -149,23 +149,23 @@
void setSharedImage(egl::Image *image);
- virtual bool isSamplerComplete() const;
- virtual bool isCompressed(GLenum target, GLint level) const;
- virtual bool isDepth(GLenum target, GLint level) const;
- virtual void bindTexImage(gl::Surface *surface);
- virtual void releaseTexImage();
+ bool isSamplerComplete() const override;
+ bool isCompressed(GLenum target, GLint level) const override;
+ bool isDepth(GLenum target, GLint level) const override;
+ void bindTexImage(gl::Surface *surface);
+ void releaseTexImage() override;
- virtual void generateMipmaps();
- virtual void autoGenerateMipmaps();
+ void generateMipmaps() override;
+ void autoGenerateMipmaps() override;
- virtual Renderbuffer *getRenderbuffer(GLenum target);
- virtual egl::Image *getRenderTarget(GLenum target, unsigned int level);
- virtual bool isShared(GLenum target, unsigned int level) const;
+ Renderbuffer *getRenderbuffer(GLenum target) override;
+ egl::Image *getRenderTarget(GLenum target, unsigned int level) override;
+ bool isShared(GLenum target, unsigned int level) const override;
egl::Image *getImage(unsigned int level);
protected:
- virtual ~Texture2D();
+ ~Texture2D() override;
bool isMipmapComplete() const;
@@ -187,10 +187,10 @@
public:
explicit TextureExternal(GLuint name);
- virtual GLenum getTarget() const;
+ GLenum getTarget() const override;
protected:
- virtual ~TextureExternal();
+ ~TextureExternal() override;
};
}
diff --git a/src/OpenGL/libGLESv2/Texture.cpp b/src/OpenGL/libGLESv2/Texture.cpp
index e7d894d..2407b8a 100644
--- a/src/OpenGL/libGLESv2/Texture.cpp
+++ b/src/OpenGL/libGLESv2/Texture.cpp
@@ -1611,48 +1611,9 @@
Texture::setImage(format, type, unpackInfo, pixels, image[level]);
}
-void Texture3D::bindTexImage(gl::Surface *surface)
-{
- GLenum format;
-
- switch(surface->getInternalFormat())
- {
- case sw::FORMAT_A8R8G8B8:
- format = GL_RGBA;
- break;
- case sw::FORMAT_X8R8G8B8:
- format = GL_RGB;
- break;
- default:
- UNIMPLEMENTED();
- return;
- }
-
- for(int level = 0; level < IMPLEMENTATION_MAX_TEXTURE_LEVELS; level++)
- {
- if(image[level])
- {
- image[level]->release();
- image[level] = nullptr;
- }
- }
-
- image[0] = surface->getRenderTarget();
-
- mSurface = surface;
- mSurface->setBoundTexture(this);
-}
-
void Texture3D::releaseTexImage()
{
- for(int level = 0; level < IMPLEMENTATION_MAX_TEXTURE_LEVELS; level++)
- {
- if(image[level])
- {
- image[level]->release();
- image[level] = nullptr;
- }
- }
+ UNREACHABLE(0); // 3D textures cannot have an EGL surface bound as an image
}
void Texture3D::setCompressedImage(GLint level, GLenum format, GLsizei width, GLsizei height, GLsizei depth, GLsizei imageSize, const void *pixels)
diff --git a/src/OpenGL/libGLESv2/Texture.h b/src/OpenGL/libGLESv2/Texture.h
index f01e0f2..4ab2462 100644
--- a/src/OpenGL/libGLESv2/Texture.h
+++ b/src/OpenGL/libGLESv2/Texture.h
@@ -49,7 +49,7 @@
public:
explicit Texture(GLuint name);
- virtual sw::Resource *getResource() const;
+ sw::Resource *getResource() const override;
virtual void addProxyRef(const Renderbuffer *proxy) = 0;
virtual void releaseProxy(const Renderbuffer *proxy) = 0;
@@ -107,14 +107,14 @@
virtual Renderbuffer *getRenderbuffer(GLenum target, GLint level, GLint layer) = 0;
virtual egl::Image *getRenderTarget(GLenum target, unsigned int level) = 0;
- virtual egl::Image *createSharedImage(GLenum target, unsigned int level);
+ egl::Image *createSharedImage(GLenum target, unsigned int level);
virtual bool isShared(GLenum target, unsigned int level) const = 0;
virtual void generateMipmaps() = 0;
virtual void copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source) = 0;
protected:
- virtual ~Texture();
+ ~Texture() override;
void setImage(GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels, egl::Image *image);
void subImage(GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels, egl::Image *image);
@@ -156,40 +156,40 @@
void releaseProxy(const Renderbuffer *proxy) override;
void sweep() override;
- virtual GLenum getTarget() const;
+ GLenum getTarget() const override;
- virtual GLsizei getWidth(GLenum target, GLint level) const;
- virtual GLsizei getHeight(GLenum target, GLint level) const;
- virtual GLenum getFormat(GLenum target, GLint level) const;
- virtual GLenum getType(GLenum target, GLint level) const;
- virtual sw::Format getInternalFormat(GLenum target, GLint level) const;
- virtual int getLevelCount() const;
+ GLsizei getWidth(GLenum target, GLint level) const override;
+ GLsizei getHeight(GLenum target, GLint level) const override;
+ GLenum getFormat(GLenum target, GLint level) const override;
+ GLenum getType(GLenum target, GLint level) const override;
+ sw::Format getInternalFormat(GLenum target, GLint level) const override;
+ int getLevelCount() const override;
void setImage(GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels);
void setCompressedImage(GLint level, GLenum format, GLsizei width, GLsizei height, GLsizei imageSize, const void *pixels);
void subImage(GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels);
void subImageCompressed(GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *pixels);
void copyImage(GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source);
- virtual void copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source);
+ void copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source) override;
void setSharedImage(egl::Image *image);
- virtual bool isSamplerComplete() const;
- virtual bool isCompressed(GLenum target, GLint level) const;
- virtual bool isDepth(GLenum target, GLint level) const;
- virtual void bindTexImage(gl::Surface *surface);
- virtual void releaseTexImage();
+ bool isSamplerComplete() const override;
+ bool isCompressed(GLenum target, GLint level) const override;
+ bool isDepth(GLenum target, GLint level) const override;
+ void bindTexImage(gl::Surface *surface);
+ void releaseTexImage() override;
- virtual void generateMipmaps();
+ void generateMipmaps() override;
- virtual Renderbuffer *getRenderbuffer(GLenum target, GLint level, GLint layer);
- virtual egl::Image *getRenderTarget(GLenum target, unsigned int level);
- virtual bool isShared(GLenum target, unsigned int level) const;
+ Renderbuffer *getRenderbuffer(GLenum target, GLint level, GLint layer) override;
+ egl::Image *getRenderTarget(GLenum target, unsigned int level) override;
+ bool isShared(GLenum target, unsigned int level) const override;
egl::Image *getImage(unsigned int level);
protected:
- virtual ~Texture2D();
+ ~Texture2D() override;
bool isMipmapComplete() const;
@@ -215,14 +215,14 @@
void releaseProxy(const Renderbuffer *proxy) override;
void sweep() override;
- virtual GLenum getTarget() const;
+ GLenum getTarget() const override;
- virtual GLsizei getWidth(GLenum target, GLint level) const;
- virtual GLsizei getHeight(GLenum target, GLint level) const;
- virtual GLenum getFormat(GLenum target, GLint level) const;
- virtual GLenum getType(GLenum target, GLint level) const;
- virtual sw::Format getInternalFormat(GLenum target, GLint level) const;
- virtual int getLevelCount() const;
+ GLsizei getWidth(GLenum target, GLint level) const override;
+ GLsizei getHeight(GLenum target, GLint level) const override;
+ GLenum getFormat(GLenum target, GLint level) const override;
+ GLenum getType(GLenum target, GLint level) const override;
+ sw::Format getInternalFormat(GLenum target, GLint level) const override;
+ int getLevelCount() const override;
void setImage(GLenum target, GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels);
void setCompressedImage(GLenum target, GLint level, GLenum format, GLsizei width, GLsizei height, GLsizei imageSize, const void *pixels);
@@ -230,23 +230,23 @@
void subImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels);
void subImageCompressed(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *pixels);
void copyImage(GLenum target, GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source);
- virtual void copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source);
+ void copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source) override;
- virtual bool isSamplerComplete() const;
- virtual bool isCompressed(GLenum target, GLint level) const;
- virtual bool isDepth(GLenum target, GLint level) const;
- virtual void releaseTexImage();
+ bool isSamplerComplete() const override;
+ bool isCompressed(GLenum target, GLint level) const override;
+ bool isDepth(GLenum target, GLint level) const override;
+ void releaseTexImage() override;
- virtual void generateMipmaps();
+ void generateMipmaps() override;
- virtual Renderbuffer *getRenderbuffer(GLenum target, GLint level, GLint layer);
- virtual egl::Image *getRenderTarget(GLenum target, unsigned int level);
- virtual bool isShared(GLenum target, unsigned int level) const;
+ Renderbuffer *getRenderbuffer(GLenum target, GLint level, GLint layer) override;
+ egl::Image *getRenderTarget(GLenum target, unsigned int level) override;
+ bool isShared(GLenum target, unsigned int level) const override;
egl::Image *getImage(int face, unsigned int level);
protected:
- virtual ~TextureCubeMap();
+ ~TextureCubeMap() override;
private:
bool isCubeComplete() const;
@@ -275,15 +275,15 @@
void releaseProxy(const Renderbuffer *proxy) override;
void sweep() override;
- virtual GLenum getTarget() const;
+ GLenum getTarget() const override;
- virtual GLsizei getWidth(GLenum target, GLint level) const;
- virtual GLsizei getHeight(GLenum target, GLint level) const;
- virtual GLsizei getDepth(GLenum target, GLint level) const;
- virtual GLenum getFormat(GLenum target, GLint level) const;
- virtual GLenum getType(GLenum target, GLint level) const;
- virtual sw::Format getInternalFormat(GLenum target, GLint level) const;
- virtual int getLevelCount() const;
+ GLsizei getWidth(GLenum target, GLint level) const override;
+ GLsizei getHeight(GLenum target, GLint level) const override;
+ GLsizei getDepth(GLenum target, GLint level) const override;
+ GLenum getFormat(GLenum target, GLint level) const override;
+ GLenum getType(GLenum target, GLint level) const override;
+ sw::Format getInternalFormat(GLenum target, GLint level) const override;
+ int getLevelCount() const override;
void setImage(GLint level, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels);
void setCompressedImage(GLint level, GLenum format, GLsizei width, GLsizei height, GLsizei depth, GLsizei imageSize, const void *pixels);
@@ -294,22 +294,21 @@
void setSharedImage(egl::Image *image);
- virtual bool isSamplerComplete() const;
- virtual bool isCompressed(GLenum target, GLint level) const;
- virtual bool isDepth(GLenum target, GLint level) const;
- virtual void bindTexImage(gl::Surface *surface);
- virtual void releaseTexImage();
+ bool isSamplerComplete() const override;
+ bool isCompressed(GLenum target, GLint level) const override;
+ bool isDepth(GLenum target, GLint level) const override;
+ void releaseTexImage() override;
- virtual void generateMipmaps();
+ void generateMipmaps() override;
- virtual Renderbuffer *getRenderbuffer(GLenum target, GLint level, GLint layer);
- virtual egl::Image *getRenderTarget(GLenum target, unsigned int level);
- virtual bool isShared(GLenum target, unsigned int level) const;
+ Renderbuffer *getRenderbuffer(GLenum target, GLint level, GLint layer) override;
+ egl::Image *getRenderTarget(GLenum target, unsigned int level) override;
+ bool isShared(GLenum target, unsigned int level) const override;
egl::Image *getImage(unsigned int level);
protected:
- virtual ~Texture3D();
+ ~Texture3D() override;
bool isMipmapComplete() const;
@@ -331,11 +330,11 @@
public:
explicit Texture2DArray(GLuint name);
- virtual GLenum getTarget() const;
- virtual void generateMipmaps();
+ GLenum getTarget() const override;
+ void generateMipmaps() override;
protected:
- virtual ~Texture2DArray();
+ ~Texture2DArray() override;
};
class TextureExternal : public Texture2D
@@ -343,10 +342,10 @@
public:
explicit TextureExternal(GLuint name);
- virtual GLenum getTarget() const;
+ GLenum getTarget() const override;
protected:
- virtual ~TextureExternal();
+ ~TextureExternal() override;
};
}