Commit 433bfd38 by Jamie Madill

Merge the copyToStorage methods.

BUG=angle:741 Change-Id: I67380748ee875cc2dea61eb82a9b0d600144dc85 Reviewed-on: https://chromium-review.googlesource.com/222267Tested-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent e020bed5
...@@ -39,10 +39,7 @@ class ImageD3D : public Image ...@@ -39,10 +39,7 @@ class ImageD3D : public Image
virtual gl::Error setManagedSurfaceCube(TextureStorage *storage, int face, int level) { return gl::Error(GL_NO_ERROR); }; virtual gl::Error setManagedSurfaceCube(TextureStorage *storage, int face, int level) { return gl::Error(GL_NO_ERROR); };
virtual gl::Error setManagedSurface3D(TextureStorage *storage, int level) { return gl::Error(GL_NO_ERROR); }; virtual gl::Error setManagedSurface3D(TextureStorage *storage, int level) { return gl::Error(GL_NO_ERROR); };
virtual gl::Error setManagedSurface2DArray(TextureStorage *storage, int layer, int level) { return gl::Error(GL_NO_ERROR); }; virtual gl::Error setManagedSurface2DArray(TextureStorage *storage, int layer, int level) { return gl::Error(GL_NO_ERROR); };
virtual gl::Error copyToStorage2D(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region) = 0; virtual gl::Error copyToStorage(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region) = 0;
virtual gl::Error copyToStorageCube(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region) = 0;
virtual gl::Error copyToStorage3D(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region) = 0;
virtual gl::Error copyToStorage2DArray(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region) = 0;
private: private:
DISALLOW_COPY_AND_ASSIGN(ImageD3D); DISALLOW_COPY_AND_ASSIGN(ImageD3D);
......
...@@ -1023,7 +1023,7 @@ gl::Error TextureD3D_2D::commitRegion(const gl::ImageIndex &index, const gl::Box ...@@ -1023,7 +1023,7 @@ gl::Error TextureD3D_2D::commitRegion(const gl::ImageIndex &index, const gl::Box
if (isValidLevel(level)) if (isValidLevel(level))
{ {
ImageD3D *image = mImageArray[level]; ImageD3D *image = mImageArray[level];
gl::Error error = image->copyToStorage2D(mTexStorage, index, region); gl::Error error = image->copyToStorage(mTexStorage, index, region);
if (error.isError()) if (error.isError())
{ {
return error; return error;
...@@ -1583,7 +1583,7 @@ gl::Error TextureD3D_Cube::commitRegion(const gl::ImageIndex &index, const gl::B ...@@ -1583,7 +1583,7 @@ gl::Error TextureD3D_Cube::commitRegion(const gl::ImageIndex &index, const gl::B
if (isValidFaceLevel(faceIndex, level)) if (isValidFaceLevel(faceIndex, level))
{ {
ImageD3D *image = mImageArray[faceIndex][level]; ImageD3D *image = mImageArray[faceIndex][level];
gl::Error error = image->copyToStorageCube(mTexStorage, index, region); gl::Error error = image->copyToStorage(mTexStorage, index, region);
if (error.isError()) if (error.isError())
{ {
return error; return error;
...@@ -2153,7 +2153,7 @@ gl::Error TextureD3D_3D::commitRegion(const gl::ImageIndex &index, const gl::Box ...@@ -2153,7 +2153,7 @@ gl::Error TextureD3D_3D::commitRegion(const gl::ImageIndex &index, const gl::Box
if (isValidLevel(level)) if (isValidLevel(level))
{ {
ImageD3D *image = mImageArray[level]; ImageD3D *image = mImageArray[level];
gl::Error error = image->copyToStorage3D(mTexStorage, index, region); gl::Error error = image->copyToStorage(mTexStorage, index, region);
if (error.isError()) if (error.isError())
{ {
return error; return error;
...@@ -2732,7 +2732,7 @@ gl::Error TextureD3D_2DArray::commitRegion(const gl::ImageIndex &index, const gl ...@@ -2732,7 +2732,7 @@ gl::Error TextureD3D_2DArray::commitRegion(const gl::ImageIndex &index, const gl
if (isValidLevel(level) && layerTarget < getLayerCount(level)) if (isValidLevel(level) && layerTarget < getLayerCount(level))
{ {
ImageD3D *image = mImageArray[level][layerTarget]; ImageD3D *image = mImageArray[level][layerTarget];
gl::Error error = image->copyToStorage2DArray(mTexStorage, index, region); gl::Error error = image->copyToStorage(mTexStorage, index, region);
if (error.isError()) if (error.isError())
{ {
return error; return error;
......
...@@ -101,32 +101,10 @@ bool Image11::isDirty() const ...@@ -101,32 +101,10 @@ bool Image11::isDirty() const
return mDirty; return mDirty;
} }
gl::Error Image11::copyToStorage2D(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region) gl::Error Image11::copyToStorage(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region)
{ {
TextureStorage11 *storage11 = TextureStorage11::makeTextureStorage11(storage); TextureStorage11 *storage11 = TextureStorage11::makeTextureStorage11(storage);
return copyToStorageImpl(storage11, index, region);
}
gl::Error Image11::copyToStorageCube(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region)
{
TextureStorage11 *storage11 = TextureStorage11::makeTextureStorage11(storage);
return copyToStorageImpl(storage11, index, region);
}
gl::Error Image11::copyToStorage3D(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region)
{
TextureStorage11 *storage11 = TextureStorage11::makeTextureStorage11(storage);
return copyToStorageImpl(storage11, index, region);
}
gl::Error Image11::copyToStorage2DArray(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region)
{
TextureStorage11 *storage11 = TextureStorage11::makeTextureStorage11(storage);
return copyToStorageImpl(storage11, index, region);
}
gl::Error Image11::copyToStorageImpl(TextureStorage11 *storage11, const gl::ImageIndex &index, const gl::Box &region)
{
// If an app's behavior results in an Image11 copying its data to/from to a TextureStorage multiple times, // If an app's behavior results in an Image11 copying its data to/from to a TextureStorage multiple times,
// then we should just keep the staging texture around to prevent the copying from impacting perf. // then we should just keep the staging texture around to prevent the copying from impacting perf.
// We allow the Image11 to copy its data to/from TextureStorage once. // We allow the Image11 to copy its data to/from TextureStorage once.
......
...@@ -38,10 +38,7 @@ class Image11 : public ImageD3D ...@@ -38,10 +38,7 @@ class Image11 : public ImageD3D
virtual bool isDirty() const; virtual bool isDirty() const;
virtual gl::Error copyToStorage2D(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region); virtual gl::Error copyToStorage(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region);
virtual gl::Error copyToStorageCube(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region);
virtual gl::Error copyToStorage3D(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region);
virtual gl::Error copyToStorage2DArray(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region);
virtual bool redefine(Renderer *renderer, GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, bool forceRelease); virtual bool redefine(Renderer *renderer, GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, bool forceRelease);
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
#include "libGLESv2/Framebuffer.h" #include "libGLESv2/Framebuffer.h"
#include "libGLESv2/FramebufferAttachment.h" #include "libGLESv2/FramebufferAttachment.h"
#include "libGLESv2/Renderbuffer.h" #include "libGLESv2/Renderbuffer.h"
#include "common/utilities.h"
namespace rx namespace rx
{ {
...@@ -319,42 +319,29 @@ gl::Error Image9::setManagedSurface(IDirect3DSurface9 *surface) ...@@ -319,42 +319,29 @@ gl::Error Image9::setManagedSurface(IDirect3DSurface9 *surface)
return gl::Error(GL_NO_ERROR); return gl::Error(GL_NO_ERROR);
} }
gl::Error Image9::copyToStorage2D(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region) gl::Error Image9::copyToStorage(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region)
{ {
ASSERT(getSurface() != NULL); ASSERT(getSurface() != NULL);
TextureStorage9_2D *storage9 = TextureStorage9_2D::makeTextureStorage9_2D(storage);
IDirect3DSurface9 *destSurface = storage9->getSurfaceLevel(index.mipIndex, true);
gl::Error error = copyToSurface(destSurface, region.x, region.y, region.width, region.height); IDirect3DSurface9 *destSurface = NULL;
SafeRelease(destSurface);
return error;
}
gl::Error Image9::copyToStorageCube(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region) if (index.type == GL_TEXTURE_2D)
{ {
ASSERT(getSurface() != NULL); TextureStorage9_2D *storage9 = TextureStorage9_2D::makeTextureStorage9_2D(storage);
TextureStorage9_Cube *storage9 = TextureStorage9_Cube::makeTextureStorage9_Cube(storage); destSurface = storage9->getSurfaceLevel(index.mipIndex, true);
IDirect3DSurface9 *destSurface = storage9->getCubeMapSurface(index.type, index.mipIndex, true); }
else
{
ASSERT(gl::IsCubemapTextureTarget(index.type));
TextureStorage9_Cube *storage9 = TextureStorage9_Cube::makeTextureStorage9_Cube(storage);
destSurface = storage9->getCubeMapSurface(index.type, index.mipIndex, true);
}
gl::Error error = copyToSurface(destSurface, region.x, region.y, region.width, region.height); gl::Error error = copyToSurface(destSurface, region.x, region.y, region.width, region.height);
SafeRelease(destSurface); SafeRelease(destSurface);
return error; return error;
} }
gl::Error Image9::copyToStorage3D(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region)
{
// 3D textures are not supported by the D3D9 backend.
UNREACHABLE();
return gl::Error(GL_INVALID_OPERATION);
}
gl::Error Image9::copyToStorage2DArray(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region)
{
// 2D array textures are not supported by the D3D9 backend.
UNREACHABLE();
return gl::Error(GL_INVALID_OPERATION);
}
gl::Error Image9::copyToSurface(IDirect3DSurface9 *destSurface, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height) gl::Error Image9::copyToSurface(IDirect3DSurface9 *destSurface, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height)
{ {
ASSERT(width > 0 && height > 0); ASSERT(width > 0 && height > 0);
......
...@@ -44,10 +44,7 @@ class Image9 : public ImageD3D ...@@ -44,10 +44,7 @@ class Image9 : public ImageD3D
virtual gl::Error setManagedSurface2D(TextureStorage *storage, int level); virtual gl::Error setManagedSurface2D(TextureStorage *storage, int level);
virtual gl::Error setManagedSurfaceCube(TextureStorage *storage, int face, int level); virtual gl::Error setManagedSurfaceCube(TextureStorage *storage, int face, int level);
virtual gl::Error copyToStorage2D(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region); virtual gl::Error copyToStorage(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region);
virtual gl::Error copyToStorageCube(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region);
virtual gl::Error copyToStorage3D(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region);
virtual gl::Error copyToStorage2DArray(TextureStorage *storage, const gl::ImageIndex &index, const gl::Box &region);
virtual gl::Error loadData(GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, virtual gl::Error loadData(GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth,
GLint unpackAlignment, GLenum type, const void *input); GLint unpackAlignment, GLenum type, const void *input);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment