Commit b4dedf3e by Geoff Lang

Merge the Image class into ImageD3D.

BUG=angle:681 Change-Id: I0c0d41fb3ff9592b08ede58a8c2ec2bd2d94a0b2 Reviewed-on: https://chromium-review.googlesource.com/238470Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarBrandon Jones <bajones@chromium.org> Tested-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent 909b90ce
...@@ -7,12 +7,8 @@ ...@@ -7,12 +7,8 @@
// Texture.cpp: Implements the gl::Texture class. [OpenGL ES 2.0.24] section 3.7 page 63. // Texture.cpp: Implements the gl::Texture class. [OpenGL ES 2.0.24] section 3.7 page 63.
#include "libANGLE/Texture.h" #include "libANGLE/Texture.h"
#include "libANGLE/Context.h" #include "libANGLE/Data.h"
#include "libANGLE/formatutils.h" #include "libANGLE/formatutils.h"
#include "libANGLE/ImageIndex.h"
#include "libANGLE/Renderbuffer.h"
#include "libANGLE/renderer/Image.h"
#include "libANGLE/renderer/d3d/TextureStorage.h"
#include "libANGLE/Surface.h" #include "libANGLE/Surface.h"
......
//
// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Image.h: Implements the rx::Image class, an abstract base class for the
// renderer-specific classes which will define the interface to the underlying
// surfaces or resources.
#include "libANGLE/renderer/Image.h"
namespace rx
{
Image::Image()
{
mWidth = 0;
mHeight = 0;
mDepth = 0;
mInternalFormat = GL_NONE;
mTarget = GL_NONE;
mRenderable = false;
mDirty = false;
}
}
// //
// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. // Copyright (c) 2002-2015 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// //
...@@ -18,15 +18,16 @@ namespace rx ...@@ -18,15 +18,16 @@ namespace rx
{ {
ImageD3D::ImageD3D() ImageD3D::ImageD3D()
: mWidth(0),
mHeight(0),
mDepth(0),
mInternalFormat(GL_NONE),
mTarget(GL_NONE),
mRenderable(false),
mDirty(false)
{ {
} }
ImageD3D *ImageD3D::makeImageD3D(Image *img)
{
ASSERT(HAS_DYNAMIC_TYPE(ImageD3D*, img));
return static_cast<ImageD3D*>(img);
}
gl::Error ImageD3D::copy(const gl::Offset &destOffset, const gl::Rectangle &sourceArea, const gl::Framebuffer *source) gl::Error ImageD3D::copy(const gl::Offset &destOffset, const gl::Rectangle &sourceArea, const gl::Framebuffer *source)
{ {
gl::FramebufferAttachment *colorbuffer = source->getReadColorbuffer(); gl::FramebufferAttachment *colorbuffer = source->getReadColorbuffer();
......
// //
// Copyright (c) 2002-2012 The ANGLE Project Authors. All rights reserved. // Copyright (c) 2002-2015 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
// //
// Image.h: Defines the rx::Image class, an abstract base class for the // ImageD3D.h: Defines the rx::ImageD3D class, an abstract base class for the
// renderer-specific classes which will define the interface to the underlying // renderer-specific classes which will define the interface to the underlying
// surfaces or resources. // surfaces or resources.
...@@ -12,36 +12,67 @@ ...@@ -12,36 +12,67 @@
#define LIBANGLE_RENDERER_D3D_IMAGED3D_H_ #define LIBANGLE_RENDERER_D3D_IMAGED3D_H_
#include "common/debug.h" #include "common/debug.h"
#include "libANGLE/renderer/Image.h"
#include "libANGLE/Error.h"
namespace gl namespace gl
{ {
class Framebuffer; class Framebuffer;
struct ImageIndex; struct ImageIndex;
struct Box; struct Box;
struct Extents;
struct Offset;
struct Rectangle;
} }
namespace rx namespace rx
{ {
class TextureStorage; class TextureStorage;
class RendererD3D;
class RenderTarget;
class ImageD3D : public Image class ImageD3D
{ {
public: public:
ImageD3D(); ImageD3D();
virtual ~ImageD3D() {}; virtual ~ImageD3D() {};
static ImageD3D *makeImageD3D(Image *img); GLsizei getWidth() const { return mWidth; }
GLsizei getHeight() const { return mHeight; }
GLsizei getDepth() const { return mDepth; }
GLenum getInternalFormat() const { return mInternalFormat; }
GLenum getTarget() const { return mTarget; }
bool isRenderableFormat() const { return mRenderable; }
void markDirty() { mDirty = true; }
void markClean() { mDirty = false; }
virtual bool isDirty() const = 0; virtual bool isDirty() const = 0;
virtual bool redefine(GLenum target, GLenum internalformat, const gl::Extents &size, bool forceRelease) = 0;
virtual gl::Error loadData(const gl::Box &area, GLint unpackAlignment, GLenum type, const void *input) = 0;
virtual gl::Error loadCompressedData(const gl::Box &area, const void *input) = 0;
virtual gl::Error setManagedSurface2D(TextureStorage *storage, int level) { return gl::Error(GL_NO_ERROR); }; virtual gl::Error setManagedSurface2D(TextureStorage *storage, 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 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 copyToStorage(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;
gl::Error copy(const gl::Offset &destOffset, const gl::Rectangle &sourceArea, const gl::Framebuffer *source) override; virtual gl::Error copy(const gl::Offset &destOffset, const gl::Rectangle &sourceArea,
const gl::ImageIndex &sourceIndex, TextureStorage *source) = 0;
gl::Error copy(const gl::Offset &destOffset, const gl::Rectangle &sourceArea, const gl::Framebuffer *source);
protected:
GLsizei mWidth;
GLsizei mHeight;
GLsizei mDepth;
GLenum mInternalFormat;
bool mRenderable;
GLenum mTarget;
bool mDirty;
private: private:
DISALLOW_COPY_AND_ASSIGN(ImageD3D); DISALLOW_COPY_AND_ASSIGN(ImageD3D);
......
...@@ -26,7 +26,7 @@ class Texture; ...@@ -26,7 +26,7 @@ class Texture;
namespace rx namespace rx
{ {
class Image; class ImageD3D;
class IndexBuffer; class IndexBuffer;
class RenderTarget; class RenderTarget;
class ShaderExecutable; class ShaderExecutable;
...@@ -130,8 +130,8 @@ class RendererD3D : public Renderer ...@@ -130,8 +130,8 @@ class RendererD3D : public Renderer
virtual UniformStorage *createUniformStorage(size_t storageSize) = 0; virtual UniformStorage *createUniformStorage(size_t storageSize) = 0;
// Image operations // Image operations
virtual Image *createImage() = 0; virtual ImageD3D *createImage() = 0;
virtual gl::Error generateMipmap(Image *dest, Image *source) = 0; virtual gl::Error generateMipmap(ImageD3D *dest, ImageD3D *source) = 0;
virtual TextureStorage *createTextureStorage2D(SwapChain *swapChain) = 0; virtual TextureStorage *createTextureStorage2D(SwapChain *swapChain) = 0;
virtual TextureStorage *createTextureStorage2D(GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, int levels, bool hintLevelZeroOnly) = 0; virtual TextureStorage *createTextureStorage2D(GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, int levels, bool hintLevelZeroOnly) = 0;
virtual TextureStorage *createTextureStorageCube(GLenum internalformat, bool renderTarget, int size, int levels) = 0; virtual TextureStorage *createTextureStorageCube(GLenum internalformat, bool renderTarget, int size, int levels) = 0;
......
...@@ -99,19 +99,19 @@ TextureStorage *TextureD3D::getNativeTexture() ...@@ -99,19 +99,19 @@ TextureStorage *TextureD3D::getNativeTexture()
GLint TextureD3D::getBaseLevelWidth() const GLint TextureD3D::getBaseLevelWidth() const
{ {
const Image *baseImage = getBaseLevelImage(); const ImageD3D *baseImage = getBaseLevelImage();
return (baseImage ? baseImage->getWidth() : 0); return (baseImage ? baseImage->getWidth() : 0);
} }
GLint TextureD3D::getBaseLevelHeight() const GLint TextureD3D::getBaseLevelHeight() const
{ {
const Image *baseImage = getBaseLevelImage(); const ImageD3D *baseImage = getBaseLevelImage();
return (baseImage ? baseImage->getHeight() : 0); return (baseImage ? baseImage->getHeight() : 0);
} }
GLint TextureD3D::getBaseLevelDepth() const GLint TextureD3D::getBaseLevelDepth() const
{ {
const Image *baseImage = getBaseLevelImage(); const ImageD3D *baseImage = getBaseLevelImage();
return (baseImage ? baseImage->getDepth() : 0); return (baseImage ? baseImage->getDepth() : 0);
} }
...@@ -120,11 +120,11 @@ GLint TextureD3D::getBaseLevelDepth() const ...@@ -120,11 +120,11 @@ GLint TextureD3D::getBaseLevelDepth() const
// the base level image for anything except querying texture format and size. // the base level image for anything except querying texture format and size.
GLenum TextureD3D::getBaseLevelInternalFormat() const GLenum TextureD3D::getBaseLevelInternalFormat() const
{ {
const Image *baseImage = getBaseLevelImage(); const ImageD3D *baseImage = getBaseLevelImage();
return (baseImage ? baseImage->getInternalFormat() : GL_NONE); return (baseImage ? baseImage->getInternalFormat() : GL_NONE);
} }
bool TextureD3D::shouldUseSetData(const Image *image) const bool TextureD3D::shouldUseSetData(const ImageD3D *image) const
{ {
if (!mRenderer->getWorkarounds().setDataFasterThanImageUpload) if (!mRenderer->getWorkarounds().setDataFasterThanImageUpload)
{ {
...@@ -146,7 +146,7 @@ bool TextureD3D::shouldUseSetData(const Image *image) const ...@@ -146,7 +146,7 @@ bool TextureD3D::shouldUseSetData(const Image *image) const
gl::Error TextureD3D::setImage(const gl::ImageIndex &index, GLenum type, const gl::PixelUnpackState &unpack, const uint8_t *pixels) gl::Error TextureD3D::setImage(const gl::ImageIndex &index, GLenum type, const gl::PixelUnpackState &unpack, const uint8_t *pixels)
{ {
Image *image = getImage(index); ImageD3D *image = getImage(index);
ASSERT(image); ASSERT(image);
// No-op // No-op
...@@ -202,7 +202,7 @@ gl::Error TextureD3D::subImage(const gl::ImageIndex &index, const gl::Box &area, ...@@ -202,7 +202,7 @@ gl::Error TextureD3D::subImage(const gl::ImageIndex &index, const gl::Box &area,
if (pixelData != NULL) if (pixelData != NULL)
{ {
Image *image = getImage(index); ImageD3D *image = getImage(index);
ASSERT(image); ASSERT(image);
if (shouldUseSetData(image)) if (shouldUseSetData(image))
...@@ -241,7 +241,7 @@ gl::Error TextureD3D::setCompressedImage(const gl::ImageIndex &index, const gl:: ...@@ -241,7 +241,7 @@ gl::Error TextureD3D::setCompressedImage(const gl::ImageIndex &index, const gl::
if (pixelData != NULL) if (pixelData != NULL)
{ {
Image *image = getImage(index); ImageD3D *image = getImage(index);
ASSERT(image); ASSERT(image);
gl::Box fullImageArea(0, 0, 0, image->getWidth(), image->getHeight(), image->getDepth()); gl::Box fullImageArea(0, 0, 0, image->getWidth(), image->getHeight(), image->getDepth());
...@@ -269,7 +269,7 @@ gl::Error TextureD3D::subImageCompressed(const gl::ImageIndex &index, const gl:: ...@@ -269,7 +269,7 @@ gl::Error TextureD3D::subImageCompressed(const gl::ImageIndex &index, const gl::
if (pixelData != NULL) if (pixelData != NULL)
{ {
Image *image = getImage(index); ImageD3D *image = getImage(index);
ASSERT(image); ASSERT(image);
gl::Error error = image->loadCompressedData(area, pixelData); gl::Error error = image->loadCompressedData(area, pixelData);
...@@ -338,7 +338,7 @@ TextureStorage *TextureD3D::getStorage() ...@@ -338,7 +338,7 @@ TextureStorage *TextureD3D::getStorage()
return mTexStorage; return mTexStorage;
} }
Image *TextureD3D::getBaseLevelImage() const ImageD3D *TextureD3D::getBaseLevelImage() const
{ {
return getImage(getImageIndex(0, 0)); return getImage(getImageIndex(0, 0));
} }
...@@ -380,7 +380,7 @@ gl::Error TextureD3D::generateMipmaps() ...@@ -380,7 +380,7 @@ gl::Error TextureD3D::generateMipmaps()
{ {
gl::ImageIndex srcIndex = getImageIndex(0, layer); gl::ImageIndex srcIndex = getImageIndex(0, layer);
Image *image = getImage(srcIndex); ImageD3D *image = getImage(srcIndex);
gl::Rectangle area(0, 0, image->getWidth(), image->getHeight()); gl::Rectangle area(0, 0, image->getWidth(), image->getHeight());
gl::Offset offset(0, 0, 0); gl::Offset offset(0, 0, 0);
gl::Error error = image->copy(offset, area, srcIndex, mTexStorage); gl::Error error = image->copy(offset, area, srcIndex, mTexStorage);
...@@ -442,7 +442,7 @@ gl::Error TextureD3D::generateMipmaps() ...@@ -442,7 +442,7 @@ gl::Error TextureD3D::generateMipmaps()
bool TextureD3D::isBaseImageZeroSize() const bool TextureD3D::isBaseImageZeroSize() const
{ {
Image *baseImage = getBaseLevelImage(); ImageD3D *baseImage = getBaseLevelImage();
if (!baseImage || baseImage->getWidth() <= 0) if (!baseImage || baseImage->getWidth() <= 0)
{ {
...@@ -508,7 +508,7 @@ gl::Error TextureD3D::ensureRenderTarget() ...@@ -508,7 +508,7 @@ gl::Error TextureD3D::ensureRenderTarget()
bool TextureD3D::canCreateRenderTargetForImage(const gl::ImageIndex &index) const bool TextureD3D::canCreateRenderTargetForImage(const gl::ImageIndex &index) const
{ {
Image *image = getImage(index); ImageD3D *image = getImage(index);
bool levelsComplete = (isImageComplete(index) && isImageComplete(getImageIndex(0, 0))); bool levelsComplete = (isImageComplete(index) && isImageComplete(getImageIndex(0, 0)));
return (image->isRenderableFormat() && levelsComplete); return (image->isRenderableFormat() && levelsComplete);
} }
...@@ -518,9 +518,8 @@ gl::Error TextureD3D::commitRegion(const gl::ImageIndex &index, const gl::Box &r ...@@ -518,9 +518,8 @@ gl::Error TextureD3D::commitRegion(const gl::ImageIndex &index, const gl::Box &r
if (mTexStorage) if (mTexStorage)
{ {
ASSERT(isValidIndex(index)); ASSERT(isValidIndex(index));
Image *image = getImage(index); ImageD3D *image = getImage(index);
ImageD3D *imageD3D = ImageD3D::makeImageD3D(image); gl::Error error = image->copyToStorage(mTexStorage, index, region);
gl::Error error = imageD3D->copyToStorage(mTexStorage, index, region);
if (error.isError()) if (error.isError())
{ {
return error; return error;
...@@ -537,7 +536,7 @@ TextureD3D_2D::TextureD3D_2D(RendererD3D *renderer) ...@@ -537,7 +536,7 @@ TextureD3D_2D::TextureD3D_2D(RendererD3D *renderer)
{ {
for (int i = 0; i < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS; ++i) for (int i = 0; i < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS; ++i)
{ {
mImageArray[i] = ImageD3D::makeImageD3D(renderer->createImage()); mImageArray[i] = renderer->createImage();
} }
} }
...@@ -554,14 +553,14 @@ TextureD3D_2D::~TextureD3D_2D() ...@@ -554,14 +553,14 @@ TextureD3D_2D::~TextureD3D_2D()
SafeDelete(mTexStorage); SafeDelete(mTexStorage);
} }
Image *TextureD3D_2D::getImage(int level, int layer) const ImageD3D *TextureD3D_2D::getImage(int level, int layer) const
{ {
ASSERT(level < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS); ASSERT(level < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS);
ASSERT(layer == 0); ASSERT(layer == 0);
return mImageArray[level]; return mImageArray[level];
} }
Image *TextureD3D_2D::getImage(const gl::ImageIndex &index) const ImageD3D *TextureD3D_2D::getImage(const gl::ImageIndex &index) const
{ {
ASSERT(index.mipIndex < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS); ASSERT(index.mipIndex < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS);
ASSERT(!index.hasLayer()); ASSERT(!index.hasLayer());
...@@ -929,7 +928,7 @@ bool TextureD3D_2D::isLevelComplete(int level) const ...@@ -929,7 +928,7 @@ bool TextureD3D_2D::isLevelComplete(int level) const
return true; return true;
} }
const Image *baseImage = getBaseLevelImage(); const ImageD3D *baseImage = getBaseLevelImage();
GLsizei width = baseImage->getWidth(); GLsizei width = baseImage->getWidth();
GLsizei height = baseImage->getHeight(); GLsizei height = baseImage->getHeight();
...@@ -1160,7 +1159,7 @@ TextureD3D_Cube::TextureD3D_Cube(RendererD3D *renderer) ...@@ -1160,7 +1159,7 @@ TextureD3D_Cube::TextureD3D_Cube(RendererD3D *renderer)
{ {
for (int j = 0; j < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS; ++j) for (int j = 0; j < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS; ++j)
{ {
mImageArray[i][j] = ImageD3D::makeImageD3D(renderer->createImage()); mImageArray[i][j] = renderer->createImage();
} }
} }
} }
...@@ -1181,14 +1180,14 @@ TextureD3D_Cube::~TextureD3D_Cube() ...@@ -1181,14 +1180,14 @@ TextureD3D_Cube::~TextureD3D_Cube()
SafeDelete(mTexStorage); SafeDelete(mTexStorage);
} }
Image *TextureD3D_Cube::getImage(int level, int layer) const ImageD3D *TextureD3D_Cube::getImage(int level, int layer) const
{ {
ASSERT(level < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS); ASSERT(level < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS);
ASSERT(layer >= 0 && layer < 6); ASSERT(layer >= 0 && layer < 6);
return mImageArray[layer][level]; return mImageArray[layer][level];
} }
Image *TextureD3D_Cube::getImage(const gl::ImageIndex &index) const ImageD3D *TextureD3D_Cube::getImage(const gl::ImageIndex &index) const
{ {
ASSERT(index.mipIndex < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS); ASSERT(index.mipIndex < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS);
ASSERT(index.layerIndex >= 0 && index.layerIndex < 6); ASSERT(index.layerIndex >= 0 && index.layerIndex < 6);
...@@ -1702,7 +1701,7 @@ TextureD3D_3D::TextureD3D_3D(RendererD3D *renderer) ...@@ -1702,7 +1701,7 @@ TextureD3D_3D::TextureD3D_3D(RendererD3D *renderer)
{ {
for (int i = 0; i < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS; ++i) for (int i = 0; i < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS; ++i)
{ {
mImageArray[i] = ImageD3D::makeImageD3D(renderer->createImage()); mImageArray[i] = renderer->createImage();
} }
} }
...@@ -1719,14 +1718,14 @@ TextureD3D_3D::~TextureD3D_3D() ...@@ -1719,14 +1718,14 @@ TextureD3D_3D::~TextureD3D_3D()
SafeDelete(mTexStorage); SafeDelete(mTexStorage);
} }
Image *TextureD3D_3D::getImage(int level, int layer) const ImageD3D *TextureD3D_3D::getImage(int level, int layer) const
{ {
ASSERT(level < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS); ASSERT(level < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS);
ASSERT(layer == 0); ASSERT(layer == 0);
return mImageArray[level]; return mImageArray[level];
} }
Image *TextureD3D_3D::getImage(const gl::ImageIndex &index) const ImageD3D *TextureD3D_3D::getImage(const gl::ImageIndex &index) const
{ {
ASSERT(index.mipIndex < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS); ASSERT(index.mipIndex < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS);
ASSERT(!index.hasLayer()); ASSERT(!index.hasLayer());
...@@ -2272,7 +2271,7 @@ TextureD3D_2DArray::~TextureD3D_2DArray() ...@@ -2272,7 +2271,7 @@ TextureD3D_2DArray::~TextureD3D_2DArray()
SafeDelete(mTexStorage); SafeDelete(mTexStorage);
} }
Image *TextureD3D_2DArray::getImage(int level, int layer) const ImageD3D *TextureD3D_2DArray::getImage(int level, int layer) const
{ {
ASSERT(level < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS); ASSERT(level < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS);
ASSERT((layer == 0 && mLayerCounts[level] == 0) || ASSERT((layer == 0 && mLayerCounts[level] == 0) ||
...@@ -2280,7 +2279,7 @@ Image *TextureD3D_2DArray::getImage(int level, int layer) const ...@@ -2280,7 +2279,7 @@ Image *TextureD3D_2DArray::getImage(int level, int layer) const
return (mImageArray[level] ? mImageArray[level][layer] : NULL); return (mImageArray[level] ? mImageArray[level][layer] : NULL);
} }
Image *TextureD3D_2DArray::getImage(const gl::ImageIndex &index) const ImageD3D *TextureD3D_2DArray::getImage(const gl::ImageIndex &index) const
{ {
ASSERT(index.mipIndex < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS); ASSERT(index.mipIndex < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS);
ASSERT((index.layerIndex == 0 && mLayerCounts[index.mipIndex] == 0) || ASSERT((index.layerIndex == 0 && mLayerCounts[index.mipIndex] == 0) ||
...@@ -2498,7 +2497,7 @@ gl::Error TextureD3D_2DArray::setStorage(GLenum target, size_t levels, GLenum in ...@@ -2498,7 +2497,7 @@ gl::Error TextureD3D_2DArray::setStorage(GLenum target, size_t levels, GLenum in
for (int layer = 0; layer < mLayerCounts[level]; layer++) for (int layer = 0; layer < mLayerCounts[level]; layer++)
{ {
mImageArray[level][layer] = ImageD3D::makeImageD3D(mRenderer->createImage()); mImageArray[level][layer] = mRenderer->createImage();
mImageArray[level][layer]->redefine(GL_TEXTURE_2D_ARRAY, internalFormat, levelLayerSize, true); mImageArray[level][layer]->redefine(GL_TEXTURE_2D_ARRAY, internalFormat, levelLayerSize, true);
} }
} }
...@@ -2778,7 +2777,7 @@ void TextureD3D_2DArray::redefineImage(GLint level, GLenum internalformat, const ...@@ -2778,7 +2777,7 @@ void TextureD3D_2DArray::redefineImage(GLint level, GLenum internalformat, const
for (int layer = 0; layer < mLayerCounts[level]; layer++) for (int layer = 0; layer < mLayerCounts[level]; layer++)
{ {
mImageArray[level][layer] = ImageD3D::makeImageD3D(mRenderer->createImage()); mImageArray[level][layer] = mRenderer->createImage();
mImageArray[level][layer]->redefine(GL_TEXTURE_2D_ARRAY, internalformat, mImageArray[level][layer]->redefine(GL_TEXTURE_2D_ARRAY, internalformat,
gl::Extents(size.width, size.height, 1), false); gl::Extents(size.width, size.height, 1), false);
} }
......
...@@ -21,7 +21,7 @@ class Framebuffer; ...@@ -21,7 +21,7 @@ class Framebuffer;
namespace rx namespace rx
{ {
class Image; class ImageD3D;
class ImageD3D; class ImageD3D;
class RendererD3D; class RendererD3D;
class RenderTarget; class RenderTarget;
...@@ -41,7 +41,7 @@ class TextureD3D : public TextureImpl ...@@ -41,7 +41,7 @@ class TextureD3D : public TextureImpl
bool hasDirtyImages() const { return mDirtyImages; } bool hasDirtyImages() const { return mDirtyImages; }
void resetDirty() { mDirtyImages = false; } void resetDirty() { mDirtyImages = false; }
virtual Image *getImage(const gl::ImageIndex &index) const = 0; virtual ImageD3D *getImage(const gl::ImageIndex &index) const = 0;
virtual GLsizei getLayerCount(int level) const = 0; virtual GLsizei getLayerCount(int level) const = 0;
GLint getBaseLevelWidth() const; GLint getBaseLevelWidth() const;
...@@ -64,7 +64,7 @@ class TextureD3D : public TextureImpl ...@@ -64,7 +64,7 @@ class TextureD3D : public TextureImpl
virtual gl::Error generateMipmaps(); virtual gl::Error generateMipmaps();
TextureStorage *getStorage(); TextureStorage *getStorage();
Image *getBaseLevelImage() const; ImageD3D *getBaseLevelImage() const;
protected: protected:
gl::Error setImage(const gl::ImageIndex &index, GLenum type, const gl::PixelUnpackState &unpack, const uint8_t *pixels); gl::Error setImage(const gl::ImageIndex &index, GLenum type, const gl::PixelUnpackState &unpack, const uint8_t *pixels);
...@@ -106,7 +106,7 @@ class TextureD3D : public TextureImpl ...@@ -106,7 +106,7 @@ class TextureD3D : public TextureImpl
virtual gl::Error updateStorage() = 0; virtual gl::Error updateStorage() = 0;
bool shouldUseSetData(const Image *image) const; bool shouldUseSetData(const ImageD3D *image) const;
}; };
class TextureD3D_2D : public TextureD3D class TextureD3D_2D : public TextureD3D
...@@ -115,8 +115,8 @@ class TextureD3D_2D : public TextureD3D ...@@ -115,8 +115,8 @@ class TextureD3D_2D : public TextureD3D
TextureD3D_2D(RendererD3D *renderer); TextureD3D_2D(RendererD3D *renderer);
virtual ~TextureD3D_2D(); virtual ~TextureD3D_2D();
virtual Image *getImage(int level, int layer) const; virtual ImageD3D *getImage(int level, int layer) const;
virtual Image *getImage(const gl::ImageIndex &index) const; virtual ImageD3D *getImage(const gl::ImageIndex &index) const;
virtual GLsizei getLayerCount(int level) const; virtual GLsizei getLayerCount(int level) const;
GLsizei getWidth(GLint level) const; GLsizei getWidth(GLint level) const;
...@@ -178,8 +178,8 @@ class TextureD3D_Cube : public TextureD3D ...@@ -178,8 +178,8 @@ class TextureD3D_Cube : public TextureD3D
TextureD3D_Cube(RendererD3D *renderer); TextureD3D_Cube(RendererD3D *renderer);
virtual ~TextureD3D_Cube(); virtual ~TextureD3D_Cube();
virtual Image *getImage(int level, int layer) const; virtual ImageD3D *getImage(int level, int layer) const;
virtual Image *getImage(const gl::ImageIndex &index) const; virtual ImageD3D *getImage(const gl::ImageIndex &index) const;
virtual GLsizei getLayerCount(int level) const; virtual GLsizei getLayerCount(int level) const;
virtual bool hasDirtyImages() const { return mDirtyImages; } virtual bool hasDirtyImages() const { return mDirtyImages; }
...@@ -243,8 +243,8 @@ class TextureD3D_3D : public TextureD3D ...@@ -243,8 +243,8 @@ class TextureD3D_3D : public TextureD3D
TextureD3D_3D(RendererD3D *renderer); TextureD3D_3D(RendererD3D *renderer);
virtual ~TextureD3D_3D(); virtual ~TextureD3D_3D();
virtual Image *getImage(int level, int layer) const; virtual ImageD3D *getImage(int level, int layer) const;
virtual Image *getImage(const gl::ImageIndex &index) const; virtual ImageD3D *getImage(const gl::ImageIndex &index) const;
virtual GLsizei getLayerCount(int level) const; virtual GLsizei getLayerCount(int level) const;
GLsizei getWidth(GLint level) const; GLsizei getWidth(GLint level) const;
...@@ -306,8 +306,8 @@ class TextureD3D_2DArray : public TextureD3D ...@@ -306,8 +306,8 @@ class TextureD3D_2DArray : public TextureD3D
TextureD3D_2DArray(RendererD3D *renderer); TextureD3D_2DArray(RendererD3D *renderer);
virtual ~TextureD3D_2DArray(); virtual ~TextureD3D_2DArray();
virtual Image *getImage(int level, int layer) const; virtual ImageD3D *getImage(int level, int layer) const;
virtual Image *getImage(const gl::ImageIndex &index) const; virtual ImageD3D *getImage(const gl::ImageIndex &index) const;
virtual GLsizei getLayerCount(int level) const; virtual GLsizei getLayerCount(int level) const;
GLsizei getWidth(GLint level) const; GLsizei getWidth(GLint level) const;
......
...@@ -28,7 +28,7 @@ namespace rx ...@@ -28,7 +28,7 @@ namespace rx
{ {
class SwapChain; class SwapChain;
class RenderTarget; class RenderTarget;
class Image; class ImageD3D;
class TextureStorage class TextureStorage
{ {
...@@ -45,7 +45,7 @@ class TextureStorage ...@@ -45,7 +45,7 @@ class TextureStorage
virtual gl::Error generateMipmap(const gl::ImageIndex &sourceIndex, const gl::ImageIndex &destIndex) = 0; virtual gl::Error generateMipmap(const gl::ImageIndex &sourceIndex, const gl::ImageIndex &destIndex) = 0;
virtual gl::Error copyToStorage(TextureStorage *destStorage) = 0; virtual gl::Error copyToStorage(TextureStorage *destStorage) = 0;
virtual gl::Error setData(const gl::ImageIndex &index, Image *image, const gl::Box *destBox, GLenum type, virtual gl::Error setData(const gl::ImageIndex &index, ImageD3D *image, const gl::Box *destBox, GLenum type,
const gl::PixelUnpackState &unpack, const uint8_t *pixelData) = 0; const gl::PixelUnpackState &unpack, const uint8_t *pixelData) = 0;
unsigned int getRenderTargetSerial(const gl::ImageIndex &index) const; unsigned int getRenderTargetSerial(const gl::ImageIndex &index) const;
......
...@@ -42,7 +42,7 @@ Image11::~Image11() ...@@ -42,7 +42,7 @@ Image11::~Image11()
releaseStagingTexture(); releaseStagingTexture();
} }
Image11 *Image11::makeImage11(Image *img) Image11 *Image11::makeImage11(ImageD3D *img)
{ {
ASSERT(HAS_DYNAMIC_TYPE(Image11*, img)); ASSERT(HAS_DYNAMIC_TYPE(Image11*, img));
return static_cast<Image11*>(img); return static_cast<Image11*>(img);
......
...@@ -31,7 +31,7 @@ class Image11 : public ImageD3D ...@@ -31,7 +31,7 @@ class Image11 : public ImageD3D
Image11(Renderer11 *renderer); Image11(Renderer11 *renderer);
virtual ~Image11(); virtual ~Image11();
static Image11 *makeImage11(Image *img); static Image11 *makeImage11(ImageD3D *img);
static gl::Error generateMipmap(Image11 *dest, Image11 *src); static gl::Error generateMipmap(Image11 *dest, Image11 *src);
......
...@@ -2767,12 +2767,12 @@ gl::Error Renderer11::fastCopyBufferToTexture(const gl::PixelUnpackState &unpack ...@@ -2767,12 +2767,12 @@ gl::Error Renderer11::fastCopyBufferToTexture(const gl::PixelUnpackState &unpack
return mPixelTransfer->copyBufferToTexture(unpack, offset, destRenderTarget, destinationFormat, sourcePixelsType, destArea); return mPixelTransfer->copyBufferToTexture(unpack, offset, destRenderTarget, destinationFormat, sourcePixelsType, destArea);
} }
Image *Renderer11::createImage() ImageD3D *Renderer11::createImage()
{ {
return new Image11(this); return new Image11(this);
} }
gl::Error Renderer11::generateMipmap(Image *dest, Image *src) gl::Error Renderer11::generateMipmap(ImageD3D *dest, ImageD3D *src)
{ {
Image11 *dest11 = Image11::makeImage11(dest); Image11 *dest11 = Image11::makeImage11(dest);
Image11 *src11 = Image11::makeImage11(src); Image11 *src11 = Image11::makeImage11(src);
......
...@@ -151,8 +151,8 @@ class Renderer11 : public RendererD3D ...@@ -151,8 +151,8 @@ class Renderer11 : public RendererD3D
virtual UniformStorage *createUniformStorage(size_t storageSize); virtual UniformStorage *createUniformStorage(size_t storageSize);
// Image operations // Image operations
virtual Image *createImage(); virtual ImageD3D *createImage();
gl::Error generateMipmap(Image *dest, Image *source) override; gl::Error generateMipmap(ImageD3D *dest, ImageD3D *source) override;
virtual TextureStorage *createTextureStorage2D(SwapChain *swapChain); virtual TextureStorage *createTextureStorage2D(SwapChain *swapChain);
virtual TextureStorage *createTextureStorage2D(GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, int levels, bool hintLevelZeroOnly); virtual TextureStorage *createTextureStorage2D(GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, int levels, bool hintLevelZeroOnly);
virtual TextureStorage *createTextureStorageCube(GLenum internalformat, bool renderTarget, int size, int levels); virtual TextureStorage *createTextureStorageCube(GLenum internalformat, bool renderTarget, int size, int levels);
......
...@@ -501,7 +501,7 @@ gl::Error TextureStorage11::copyToStorage(TextureStorage *destStorage) ...@@ -501,7 +501,7 @@ gl::Error TextureStorage11::copyToStorage(TextureStorage *destStorage)
return gl::Error(GL_NO_ERROR); return gl::Error(GL_NO_ERROR);
} }
gl::Error TextureStorage11::setData(const gl::ImageIndex &index, Image *image, const gl::Box *destBox, GLenum type, gl::Error TextureStorage11::setData(const gl::ImageIndex &index, ImageD3D *image, const gl::Box *destBox, GLenum type,
const gl::PixelUnpackState &unpack, const uint8_t *pixelData) const gl::PixelUnpackState &unpack, const uint8_t *pixelData)
{ {
ID3D11Resource *resource = NULL; ID3D11Resource *resource = NULL;
......
...@@ -68,7 +68,7 @@ class TextureStorage11 : public TextureStorage ...@@ -68,7 +68,7 @@ class TextureStorage11 : public TextureStorage
virtual gl::Error releaseAssociatedImage(const gl::ImageIndex &index, Image11* incomingImage) = 0; virtual gl::Error releaseAssociatedImage(const gl::ImageIndex &index, Image11* incomingImage) = 0;
virtual gl::Error copyToStorage(TextureStorage *destStorage); virtual gl::Error copyToStorage(TextureStorage *destStorage);
virtual gl::Error setData(const gl::ImageIndex &index, Image *image, const gl::Box *destBox, GLenum type, virtual gl::Error setData(const gl::ImageIndex &index, ImageD3D *image, const gl::Box *destBox, GLenum type,
const gl::PixelUnpackState &unpack, const uint8_t *pixelData); const gl::PixelUnpackState &unpack, const uint8_t *pixelData);
protected: protected:
......
...@@ -93,7 +93,7 @@ gl::Error Image9::generateMip(IDirect3DSurface9 *destSurface, IDirect3DSurface9 ...@@ -93,7 +93,7 @@ gl::Error Image9::generateMip(IDirect3DSurface9 *destSurface, IDirect3DSurface9
return gl::Error(GL_NO_ERROR); return gl::Error(GL_NO_ERROR);
} }
Image9 *Image9::makeImage9(Image *img) Image9 *Image9::makeImage9(ImageD3D *img)
{ {
ASSERT(HAS_DYNAMIC_TYPE(Image9*, img)); ASSERT(HAS_DYNAMIC_TYPE(Image9*, img));
return static_cast<Image9*>(img); return static_cast<Image9*>(img);
......
...@@ -28,7 +28,7 @@ class Image9 : public ImageD3D ...@@ -28,7 +28,7 @@ class Image9 : public ImageD3D
Image9(Renderer9 *renderer); Image9(Renderer9 *renderer);
~Image9(); ~Image9();
static Image9 *makeImage9(Image *img); static Image9 *makeImage9(ImageD3D *img);
static gl::Error generateMipmap(Image9 *dest, Image9 *source); static gl::Error generateMipmap(Image9 *dest, Image9 *source);
static gl::Error generateMip(IDirect3DSurface9 *destSurface, IDirect3DSurface9 *sourceSurface); static gl::Error generateMip(IDirect3DSurface9 *destSurface, IDirect3DSurface9 *sourceSurface);
......
...@@ -2808,12 +2808,12 @@ gl::Error Renderer9::copyToRenderTarget(IDirect3DSurface9 *dest, IDirect3DSurfac ...@@ -2808,12 +2808,12 @@ gl::Error Renderer9::copyToRenderTarget(IDirect3DSurface9 *dest, IDirect3DSurfac
return gl::Error(GL_NO_ERROR); return gl::Error(GL_NO_ERROR);
} }
Image *Renderer9::createImage() ImageD3D *Renderer9::createImage()
{ {
return new Image9(this); return new Image9(this);
} }
gl::Error Renderer9::generateMipmap(Image *dest, Image *src) gl::Error Renderer9::generateMipmap(ImageD3D *dest, ImageD3D *src)
{ {
Image9 *src9 = Image9::makeImage9(src); Image9 *src9 = Image9::makeImage9(src);
Image9 *dst9 = Image9::makeImage9(dest); Image9 *dst9 = Image9::makeImage9(dest);
......
...@@ -160,8 +160,8 @@ class Renderer9 : public RendererD3D ...@@ -160,8 +160,8 @@ class Renderer9 : public RendererD3D
virtual UniformStorage *createUniformStorage(size_t storageSize); virtual UniformStorage *createUniformStorage(size_t storageSize);
// Image operations // Image operations
virtual Image *createImage(); virtual ImageD3D *createImage();
gl::Error generateMipmap(Image *dest, Image *source) override; gl::Error generateMipmap(ImageD3D *dest, ImageD3D *source) override;
virtual TextureStorage *createTextureStorage2D(SwapChain *swapChain); virtual TextureStorage *createTextureStorage2D(SwapChain *swapChain);
virtual TextureStorage *createTextureStorage2D(GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, int levels, bool hintLevelZeroOnly); virtual TextureStorage *createTextureStorage2D(GLenum internalformat, bool renderTarget, GLsizei width, GLsizei height, int levels, bool hintLevelZeroOnly);
virtual TextureStorage *createTextureStorageCube(GLenum internalformat, bool renderTarget, int size, int levels); virtual TextureStorage *createTextureStorageCube(GLenum internalformat, bool renderTarget, int size, int levels);
......
...@@ -91,7 +91,7 @@ int TextureStorage9::getLevelCount() const ...@@ -91,7 +91,7 @@ int TextureStorage9::getLevelCount() const
return mMipLevels - mTopLevel; return mMipLevels - mTopLevel;
} }
gl::Error TextureStorage9::setData(const gl::ImageIndex &index, Image *image, const gl::Box *destBox, GLenum type, gl::Error TextureStorage9::setData(const gl::ImageIndex &index, ImageD3D *image, const gl::Box *destBox, GLenum type,
const gl::PixelUnpackState &unpack, const uint8_t *pixelData) const gl::PixelUnpackState &unpack, const uint8_t *pixelData)
{ {
UNREACHABLE(); UNREACHABLE();
......
...@@ -41,7 +41,7 @@ class TextureStorage9 : public TextureStorage ...@@ -41,7 +41,7 @@ class TextureStorage9 : public TextureStorage
virtual bool isManaged() const; virtual bool isManaged() const;
virtual int getLevelCount() const; virtual int getLevelCount() const;
virtual gl::Error setData(const gl::ImageIndex &index, Image *image, const gl::Box *destBox, GLenum type, virtual gl::Error setData(const gl::ImageIndex &index, ImageD3D *image, const gl::Box *destBox, GLenum type,
const gl::PixelUnpackState &unpack, const uint8_t *pixelData); const gl::PixelUnpackState &unpack, const uint8_t *pixelData);
protected: protected:
......
...@@ -113,8 +113,6 @@ ...@@ -113,8 +113,6 @@
'libANGLE/renderer/DisplayImpl.h', 'libANGLE/renderer/DisplayImpl.h',
'libANGLE/renderer/FenceImpl.h', 'libANGLE/renderer/FenceImpl.h',
'libANGLE/renderer/FramebufferImpl.h', 'libANGLE/renderer/FramebufferImpl.h',
'libANGLE/renderer/Image.cpp',
'libANGLE/renderer/Image.h',
'libANGLE/renderer/IndexRangeCache.cpp', 'libANGLE/renderer/IndexRangeCache.cpp',
'libANGLE/renderer/IndexRangeCache.h', 'libANGLE/renderer/IndexRangeCache.h',
'libANGLE/renderer/ProgramImpl.cpp', 'libANGLE/renderer/ProgramImpl.cpp',
......
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