Commit c9dcc553 by Aditya Kushwah Committed by Angle LUCI CQ

Move Objectlabel from Texture object to TextureState object.

Created a subscriber function onLabelUpdated in the storage base class. The derived storage class will pass the label reference to the base storage class in the constructor. Future changes will use this label reference to update the label string with D3D. Bug: chromium:1164111 Change-Id: Ic5ca73bac61427afe392bb5bcc6a6eab8e785941 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2981451Reviewed-by: 's avatarRafael Cintron <rafael.cintron@microsoft.com> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
parent cb87d78c
......@@ -744,7 +744,6 @@ Texture::Texture(rx::GLImplFactory *factory, TextureID id, TextureType type)
mTexture(factory->createTexture(mState)),
mImplObserver(this, rx::kTextureImageImplObserverMessageIndex),
mBufferObserver(this, kBufferSubjectIndex),
mLabel(),
mBoundSurface(nullptr),
mBoundStream(nullptr)
{
......@@ -784,13 +783,13 @@ Texture::~Texture()
void Texture::setLabel(const Context *context, const std::string &label)
{
mLabel = label;
mState.mLabel = label;
signalDirtyState(DIRTY_BIT_LABEL);
}
const std::string &Texture::getLabel() const
{
return mLabel;
return mState.mLabel;
}
void Texture::setSwizzleRed(const Context *context, GLenum swizzleRed)
......
......@@ -174,6 +174,8 @@ class TextureState final : private angle::NonCopyable
const OffsetBindingPointer<Buffer> &getBuffer() const { return mBuffer; }
const std::string &getLabel() const { return mLabel; }
private:
// Texture needs access to the ImageDesc functions.
friend class Texture;
......@@ -239,6 +241,7 @@ class TextureState final : private angle::NonCopyable
mutable SamplerFormat mCachedSamplerFormat;
mutable GLenum mCachedSamplerCompareMode;
mutable bool mCachedSamplerFormatValid;
std::string mLabel;
};
bool operator==(const TextureState &a, const TextureState &b);
......@@ -644,8 +647,6 @@ class Texture final : public RefCountObject<TextureID>,
// For EXT_texture_buffer, observes buffer changes.
angle::ObserverBinding mBufferObserver;
std::string mLabel;
egl::Surface *mBoundSurface;
egl::Stream *mBoundStream;
......
......@@ -289,13 +289,13 @@ class RendererD3D : public BufferFactoryD3D
const gl::Context *context,
EGLenum target,
EGLClientBuffer buffer,
const egl::AttributeMap &attribs) = 0;
const egl::AttributeMap &attribs) = 0;
virtual angle::Result generateMipmap(const gl::Context *context,
ImageD3D *dest,
ImageD3D *source) = 0;
ImageD3D *source) = 0;
virtual angle::Result generateMipmapUsingD3D(const gl::Context *context,
TextureStorage *storage,
const gl::TextureState &textureState) = 0;
const gl::TextureState &textureState) = 0;
virtual angle::Result copyImage(const gl::Context *context,
ImageD3D *dest,
ImageD3D *source,
......@@ -303,49 +303,58 @@ class RendererD3D : public BufferFactoryD3D
const gl::Offset &destOffset,
bool unpackFlipY,
bool unpackPremultiplyAlpha,
bool unpackUnmultiplyAlpha) = 0;
virtual TextureStorage *createTextureStorage2D(SwapChainD3D *swapChain) = 0;
bool unpackUnmultiplyAlpha) = 0;
virtual TextureStorage *createTextureStorage2D(SwapChainD3D *swapChain,
const std::string &label) = 0;
virtual TextureStorage *createTextureStorageEGLImage(EGLImageD3D *eglImage,
RenderTargetD3D *renderTargetD3D) = 0;
RenderTargetD3D *renderTargetD3D,
const std::string &label) = 0;
virtual TextureStorage *createTextureStorageExternal(
egl::Stream *stream,
const egl::Stream::GLTextureDescription &desc) = 0;
const egl::Stream::GLTextureDescription &desc,
const std::string &label) = 0;
virtual TextureStorage *createTextureStorage2D(GLenum internalformat,
bool renderTarget,
GLsizei width,
GLsizei height,
int levels,
bool hintLevelZeroOnly) = 0;
const std::string &label,
bool hintLevelZeroOnly) = 0;
virtual TextureStorage *createTextureStorageCube(GLenum internalformat,
bool renderTarget,
int size,
int levels,
bool hintLevelZeroOnly) = 0;
bool hintLevelZeroOnly,
const std::string &label) = 0;
virtual TextureStorage *createTextureStorage3D(GLenum internalformat,
bool renderTarget,
GLsizei width,
GLsizei height,
GLsizei depth,
int levels) = 0;
int levels,
const std::string &label) = 0;
virtual TextureStorage *createTextureStorage2DArray(GLenum internalformat,
bool renderTarget,
GLsizei width,
GLsizei height,
GLsizei depth,
int levels) = 0;
int levels,
const std::string &label) = 0;
virtual TextureStorage *createTextureStorage2DMultisample(GLenum internalformat,
GLsizei width,
GLsizei height,
int levels,
int samples,
bool fixedSampleLocations) = 0;
bool fixedSampleLocations,
const std::string &label) = 0;
virtual TextureStorage *createTextureStorage2DMultisampleArray(GLenum internalformat,
GLsizei width,
GLsizei height,
GLsizei depth,
int levels,
int samples,
bool fixedSampleLocations) = 0;
bool fixedSampleLocations,
const std::string &label) = 0;
// Buffer-to-texture and Texture-to-buffer copies
virtual bool supportsFastCopyBufferToTexture(GLenum internalFormat) const = 0;
......
......@@ -699,6 +699,10 @@ angle::Result TextureD3D::syncState(const gl::Context *context,
const gl::Texture::DirtyBits &dirtyBits,
gl::Command source)
{
if (dirtyBits.test(gl::Texture::DirtyBitType::DIRTY_BIT_LABEL))
{
mTexStorage->onLabelUpdate();
}
// This could be improved using dirty bits.
return angle::Result::Continue;
}
......@@ -1307,7 +1311,8 @@ angle::Result TextureD3D_2D::setStorage(const gl::Context *context,
bool renderTarget = IsRenderTargetUsage(mState.getUsage());
TexStoragePointer storage(context);
storage.reset(mRenderer->createTextureStorage2D(internalFormat, renderTarget, size.width,
size.height, static_cast<int>(levels), false));
size.height, static_cast<int>(levels),
mState.getLabel(), false));
ANGLE_TRY(setCompleteTexStorage(context, storage.get()));
storage.release();
......@@ -1331,7 +1336,7 @@ angle::Result TextureD3D_2D::bindTexImage(const gl::Context *context, egl::Surfa
SurfaceD3D *surfaceD3D = GetImplAs<SurfaceD3D>(surface);
ASSERT(surfaceD3D);
mTexStorage = mRenderer->createTextureStorage2D(surfaceD3D->getSwapChain());
mTexStorage = mRenderer->createTextureStorage2D(surfaceD3D->getSwapChain(), mState.getLabel());
mEGLImageTarget = false;
mDirtyImages = false;
......@@ -1379,7 +1384,8 @@ angle::Result TextureD3D_2D::setEGLImageTarget(const gl::Context *context,
RenderTargetD3D *renderTargetD3D = nullptr;
ANGLE_TRY(eglImaged3d->getRenderTarget(context, &renderTargetD3D));
mTexStorage = mRenderer->createTextureStorageEGLImage(eglImaged3d, renderTargetD3D);
mTexStorage =
mRenderer->createTextureStorageEGLImage(eglImaged3d, renderTargetD3D, mState.getLabel());
mEGLImageTarget = true;
return angle::Result::Continue;
......@@ -1524,8 +1530,8 @@ angle::Result TextureD3D_2D::createCompleteStorage(bool renderTarget,
}
// TODO(geofflang): Determine if the texture creation succeeded
outStorage->reset(mRenderer->createTextureStorage2D(internalFormat, renderTarget, width, height,
levels, hintLevelZeroOnly));
outStorage->reset(mRenderer->createTextureStorage2D(
internalFormat, renderTarget, width, height, levels, mState.getLabel(), hintLevelZeroOnly));
return angle::Result::Continue;
}
......@@ -2046,7 +2052,8 @@ angle::Result TextureD3D_Cube::setStorage(const gl::Context *context,
TexStoragePointer storage(context);
storage.reset(mRenderer->createTextureStorageCube(internalFormat, renderTarget, size.width,
static_cast<int>(levels), false));
static_cast<int>(levels), false,
mState.getLabel()));
ANGLE_TRY(setCompleteTexStorage(context, storage.get()));
storage.release();
......@@ -2188,8 +2195,9 @@ angle::Result TextureD3D_Cube::createCompleteStorage(bool renderTarget,
}
// TODO (geofflang): detect if storage creation succeeded
outStorage->reset(mRenderer->createTextureStorageCube(
getBaseLevelInternalFormat(), renderTarget, size, levels, hintLevelZeroOnly));
outStorage->reset(mRenderer->createTextureStorageCube(getBaseLevelInternalFormat(),
renderTarget, size, levels,
hintLevelZeroOnly, mState.getLabel()));
return angle::Result::Continue;
}
......@@ -2759,7 +2767,7 @@ angle::Result TextureD3D_3D::setStorage(const gl::Context *context,
TexStoragePointer storage(context);
storage.reset(mRenderer->createTextureStorage3D(internalFormat, renderTarget, size.width,
size.height, size.depth,
static_cast<int>(levels)));
static_cast<int>(levels), mState.getLabel()));
ANGLE_TRY(setCompleteTexStorage(context, storage.get()));
storage.release();
......@@ -2866,7 +2874,7 @@ angle::Result TextureD3D_3D::createCompleteStorage(bool renderTarget,
// TODO: Verify creation of the storage succeeded
outStorage->reset(mRenderer->createTextureStorage3D(internalFormat, renderTarget, width, height,
depth, levels));
depth, levels, mState.getLabel()));
return angle::Result::Continue;
}
......@@ -3489,9 +3497,9 @@ angle::Result TextureD3D_2DArray::setStorage(const gl::Context *context,
// TODO(geofflang): Verify storage creation had no errors
bool renderTarget = IsRenderTargetUsage(mState.getUsage());
TexStoragePointer storage(context);
storage.reset(mRenderer->createTextureStorage2DArray(internalFormat, renderTarget, size.width,
size.height, size.depth,
static_cast<int>(levels)));
storage.reset(mRenderer->createTextureStorage2DArray(
internalFormat, renderTarget, size.width, size.height, size.depth, static_cast<int>(levels),
mState.getLabel()));
ANGLE_TRY(setCompleteTexStorage(context, storage.get()));
storage.release();
......@@ -3592,8 +3600,8 @@ angle::Result TextureD3D_2DArray::createCompleteStorage(bool renderTarget,
GLint levels = (mTexStorage ? mTexStorage->getLevelCount() : creationLevels(width, height, 1));
// TODO(geofflang): Verify storage creation succeeds
outStorage->reset(mRenderer->createTextureStorage2DArray(internalFormat, renderTarget, width,
height, depth, levels));
outStorage->reset(mRenderer->createTextureStorage2DArray(
internalFormat, renderTarget, width, height, depth, levels, mState.getLabel()));
return angle::Result::Continue;
}
......@@ -3955,7 +3963,7 @@ angle::Result TextureD3D_External::setImageExternal(const gl::Context *context,
// If the stream is null, the external image is unbound and we release the storage
if (stream != nullptr)
{
mTexStorage = mRenderer->createTextureStorageExternal(stream, desc);
mTexStorage = mRenderer->createTextureStorageExternal(stream, desc, mState.getLabel());
}
return angle::Result::Continue;
......@@ -3972,7 +3980,8 @@ angle::Result TextureD3D_External::setEGLImageTarget(const gl::Context *context,
ANGLE_TRY(eglImaged3d->getRenderTarget(context, &renderTargetD3D));
ANGLE_TRY(releaseTexStorage(context));
mTexStorage = mRenderer->createTextureStorageEGLImage(eglImaged3d, renderTargetD3D);
mTexStorage =
mRenderer->createTextureStorageEGLImage(eglImaged3d, renderTargetD3D, mState.getLabel());
return angle::Result::Continue;
}
......@@ -4067,9 +4076,9 @@ angle::Result TextureD3D_2DMultisample::setStorageMultisample(const gl::Context
// We allocate storage immediately instead of doing it lazily like other TextureD3D classes do.
// This requires less state in this class.
TexStoragePointer storage(context);
storage.reset(mRenderer->createTextureStorage2DMultisample(internalformat, size.width,
size.height, static_cast<int>(0),
samples, fixedSampleLocations));
storage.reset(mRenderer->createTextureStorage2DMultisample(
internalformat, size.width, size.height, static_cast<int>(0), samples, fixedSampleLocations,
mState.getLabel()));
ANGLE_TRY(setCompleteTexStorage(context, storage.get()));
storage.release();
......@@ -4187,7 +4196,7 @@ angle::Result TextureD3D_2DMultisampleArray::setStorageMultisample(const gl::Con
TexStoragePointer storage(context);
storage.reset(mRenderer->createTextureStorage2DMultisampleArray(
internalformat, size.width, size.height, size.depth, static_cast<int>(0), samples,
fixedSampleLocations));
fixedSampleLocations, mState.getLabel()));
ANGLE_TRY(setCompleteTexStorage(context, storage.get()));
storage.release();
......
......@@ -40,7 +40,7 @@ constexpr size_t kTextureStorageObserverMessageIndex = 0;
class TextureStorage : public angle::Subject
{
public:
TextureStorage() {}
TextureStorage(const std::string &label) : mTextureLabel(label) {}
~TextureStorage() override {}
virtual angle::Result onDestroy(const gl::Context *context);
......@@ -85,8 +85,11 @@ class TextureStorage : public angle::Subject
virtual angle::Result resolveTexture(const gl::Context *context);
virtual GLsizei getRenderToTextureSamples() const;
virtual void onLabelUpdate() {}
protected:
const angle::Subject *mSubject;
const std::string &mTextureLabel;
};
inline angle::Result TextureStorage::onDestroy(const gl::Context *context)
......
......@@ -3287,23 +3287,27 @@ angle::Result Renderer11::copyImage(const gl::Context *context,
unpackPremultiplyAlpha, unpackUnmultiplyAlpha, mRenderer11DeviceCaps);
}
TextureStorage *Renderer11::createTextureStorage2D(SwapChainD3D *swapChain)
TextureStorage *Renderer11::createTextureStorage2D(SwapChainD3D *swapChain,
const std::string &label)
{
SwapChain11 *swapChain11 = GetAs<SwapChain11>(swapChain);
return new TextureStorage11_2D(this, swapChain11);
return new TextureStorage11_2D(this, swapChain11, label);
}
TextureStorage *Renderer11::createTextureStorageEGLImage(EGLImageD3D *eglImage,
RenderTargetD3D *renderTargetD3D)
RenderTargetD3D *renderTargetD3D,
const std::string &label)
{
return new TextureStorage11_EGLImage(this, eglImage, GetAs<RenderTarget11>(renderTargetD3D));
return new TextureStorage11_EGLImage(this, eglImage, GetAs<RenderTarget11>(renderTargetD3D),
label);
}
TextureStorage *Renderer11::createTextureStorageExternal(
egl::Stream *stream,
const egl::Stream::GLTextureDescription &desc)
const egl::Stream::GLTextureDescription &desc,
const std::string &label)
{
return new TextureStorage11_External(this, stream, desc);
return new TextureStorage11_External(this, stream, desc, label);
}
TextureStorage *Renderer11::createTextureStorage2D(GLenum internalformat,
......@@ -3311,9 +3315,10 @@ TextureStorage *Renderer11::createTextureStorage2D(GLenum internalformat,
GLsizei width,
GLsizei height,
int levels,
const std::string &label,
bool hintLevelZeroOnly)
{
return new TextureStorage11_2D(this, internalformat, renderTarget, width, height, levels,
return new TextureStorage11_2D(this, internalformat, renderTarget, width, height, levels, label,
hintLevelZeroOnly);
}
......@@ -3321,10 +3326,11 @@ TextureStorage *Renderer11::createTextureStorageCube(GLenum internalformat,
bool renderTarget,
int size,
int levels,
bool hintLevelZeroOnly)
bool hintLevelZeroOnly,
const std::string &label)
{
return new TextureStorage11_Cube(this, internalformat, renderTarget, size, levels,
hintLevelZeroOnly);
hintLevelZeroOnly, label);
}
TextureStorage *Renderer11::createTextureStorage3D(GLenum internalformat,
......@@ -3332,10 +3338,11 @@ TextureStorage *Renderer11::createTextureStorage3D(GLenum internalformat,
GLsizei width,
GLsizei height,
GLsizei depth,
int levels)
int levels,
const std::string &label)
{
return new TextureStorage11_3D(this, internalformat, renderTarget, width, height, depth,
levels);
return new TextureStorage11_3D(this, internalformat, renderTarget, width, height, depth, levels,
label);
}
TextureStorage *Renderer11::createTextureStorage2DArray(GLenum internalformat,
......@@ -3343,10 +3350,11 @@ TextureStorage *Renderer11::createTextureStorage2DArray(GLenum internalformat,
GLsizei width,
GLsizei height,
GLsizei depth,
int levels)
int levels,
const std::string &label)
{
return new TextureStorage11_2DArray(this, internalformat, renderTarget, width, height, depth,
levels);
levels, label);
}
TextureStorage *Renderer11::createTextureStorage2DMultisample(GLenum internalformat,
......@@ -3354,10 +3362,11 @@ TextureStorage *Renderer11::createTextureStorage2DMultisample(GLenum internalfor
GLsizei height,
int levels,
int samples,
bool fixedSampleLocations)
bool fixedSampleLocations,
const std::string &label)
{
return new TextureStorage11_2DMultisample(this, internalformat, width, height, levels, samples,
fixedSampleLocations);
fixedSampleLocations, label);
}
TextureStorage *Renderer11::createTextureStorage2DMultisampleArray(GLenum internalformat,
......@@ -3366,10 +3375,11 @@ TextureStorage *Renderer11::createTextureStorage2DMultisampleArray(GLenum intern
GLsizei depth,
int levels,
int samples,
bool fixedSampleLocations)
bool fixedSampleLocations,
const std::string &label)
{
return new TextureStorage11_2DMultisampleArray(this, internalformat, width, height, depth,
levels, samples, fixedSampleLocations);
levels, samples, fixedSampleLocations, label);
}
angle::Result Renderer11::readFromAttachment(const gl::Context *context,
......
......@@ -233,48 +233,56 @@ class Renderer11 : public RendererD3D
bool unpackPremultiplyAlpha,
bool unpackUnmultiplyAlpha) override;
TextureStorage *createTextureStorage2D(SwapChainD3D *swapChain) override;
TextureStorage *createTextureStorage2D(SwapChainD3D *swapChain,
const std::string &label) override;
TextureStorage *createTextureStorageEGLImage(EGLImageD3D *eglImage,
RenderTargetD3D *renderTargetD3D) override;
TextureStorage *createTextureStorageExternal(
egl::Stream *stream,
const egl::Stream::GLTextureDescription &desc) override;
RenderTargetD3D *renderTargetD3D,
const std::string &label) override;
TextureStorage *createTextureStorageExternal(egl::Stream *stream,
const egl::Stream::GLTextureDescription &desc,
const std::string &label) override;
TextureStorage *createTextureStorage2D(GLenum internalformat,
bool renderTarget,
GLsizei width,
GLsizei height,
int levels,
const std::string &label,
bool hintLevelZeroOnly) override;
TextureStorage *createTextureStorageCube(GLenum internalformat,
bool renderTarget,
int size,
int levels,
bool hintLevelZeroOnly) override;
bool hintLevelZeroOnly,
const std::string &label) override;
TextureStorage *createTextureStorage3D(GLenum internalformat,
bool renderTarget,
GLsizei width,
GLsizei height,
GLsizei depth,
int levels) override;
int levels,
const std::string &label) override;
TextureStorage *createTextureStorage2DArray(GLenum internalformat,
bool renderTarget,
GLsizei width,
GLsizei height,
GLsizei depth,
int levels) override;
int levels,
const std::string &label) override;
TextureStorage *createTextureStorage2DMultisample(GLenum internalformat,
GLsizei width,
GLsizei height,
int levels,
int samples,
bool fixedSampleLocations) override;
bool fixedSampleLocations,
const std::string &label) override;
TextureStorage *createTextureStorage2DMultisampleArray(GLenum internalformat,
GLsizei width,
GLsizei height,
GLsizei depth,
int levels,
int samples,
bool fixedSampleLocations) override;
bool fixedSampleLocations,
const std::string &label) override;
VertexBuffer *createVertexBuffer() override;
IndexBuffer *createIndexBuffer() override;
......
......@@ -143,7 +143,11 @@ class TextureStorage11 : public TextureStorage
GLsizei getRenderToTextureSamples() const override;
protected:
TextureStorage11(Renderer11 *renderer, UINT bindFlags, UINT miscFlags, GLenum internalFormat);
TextureStorage11(Renderer11 *renderer,
UINT bindFlags,
UINT miscFlags,
GLenum internalFormat,
const std::string &label);
int getLevelWidth(int mipLevel) const;
int getLevelHeight(int mipLevel) const;
int getLevelDepth(int mipLevel) const;
......@@ -277,13 +281,14 @@ class TextureStorage11 : public TextureStorage
class TextureStorage11_2D : public TextureStorage11
{
public:
TextureStorage11_2D(Renderer11 *renderer, SwapChain11 *swapchain);
TextureStorage11_2D(Renderer11 *renderer, SwapChain11 *swapchain, const std::string &label);
TextureStorage11_2D(Renderer11 *renderer,
GLenum internalformat,
bool renderTarget,
GLsizei width,
GLsizei height,
int levels,
const std::string &label,
bool hintLevelZeroOnly = false);
~TextureStorage11_2D() override;
......@@ -377,7 +382,8 @@ class TextureStorage11_External : public TextureStorage11
public:
TextureStorage11_External(Renderer11 *renderer,
egl::Stream *stream,
const egl::Stream::GLTextureDescription &glDesc);
const egl::Stream::GLTextureDescription &glDesc,
const std::string &label);
~TextureStorage11_External() override;
angle::Result onDestroy(const gl::Context *context) override;
......@@ -444,7 +450,8 @@ class TextureStorage11ImmutableBase : public TextureStorage11
TextureStorage11ImmutableBase(Renderer11 *renderer,
UINT bindFlags,
UINT miscFlags,
GLenum internalFormat);
GLenum internalFormat,
const std::string &label);
void associateImage(Image11 *image, const gl::ImageIndex &index) override;
void disassociateImage(const gl::ImageIndex &index, Image11 *expectedImage) override;
......@@ -470,7 +477,8 @@ class TextureStorage11_EGLImage final : public TextureStorage11ImmutableBase
public:
TextureStorage11_EGLImage(Renderer11 *renderer,
EGLImageD3D *eglImage,
RenderTarget11 *renderTarget11);
RenderTarget11 *renderTarget11,
const std::string &label);
~TextureStorage11_EGLImage() override;
angle::Result getSubresourceIndex(const gl::Context *context,
......@@ -535,7 +543,8 @@ class TextureStorage11_Cube : public TextureStorage11
bool renderTarget,
int size,
int levels,
bool hintLevelZeroOnly);
bool hintLevelZeroOnly,
const std::string &label);
~TextureStorage11_Cube() override;
angle::Result onDestroy(const gl::Context *context) override;
......@@ -630,7 +639,8 @@ class TextureStorage11_3D : public TextureStorage11
GLsizei width,
GLsizei height,
GLsizei depth,
int levels);
int levels,
const std::string &label);
~TextureStorage11_3D() override;
angle::Result onDestroy(const gl::Context *context) override;
......@@ -701,7 +711,8 @@ class TextureStorage11_2DArray : public TextureStorage11
GLsizei width,
GLsizei height,
GLsizei depth,
int levels);
int levels,
const std::string &label);
~TextureStorage11_2DArray() override;
angle::Result onDestroy(const gl::Context *context) override;
......@@ -799,7 +810,8 @@ class TextureStorage11_2DMultisample final : public TextureStorage11ImmutableBas
GLsizei height,
int levels,
int samples,
bool fixedSampleLocations);
bool fixedSampleLocations,
const std::string &label);
~TextureStorage11_2DMultisample() override;
angle::Result onDestroy(const gl::Context *context) override;
......@@ -854,7 +866,8 @@ class TextureStorage11_2DMultisampleArray final : public TextureStorage11Immutab
GLsizei depth,
int levels,
int samples,
bool fixedSampleLocations);
bool fixedSampleLocations,
const std::string &label);
~TextureStorage11_2DMultisampleArray() override;
angle::Result onDestroy(const gl::Context *context) override;
......
......@@ -2868,21 +2868,24 @@ angle::Result Renderer9::copyImage(const gl::Context *context,
unpackPremultiplyAlpha, unpackUnmultiplyAlpha);
}
TextureStorage *Renderer9::createTextureStorage2D(SwapChainD3D *swapChain)
TextureStorage *Renderer9::createTextureStorage2D(SwapChainD3D *swapChain, const std::string &label)
{
SwapChain9 *swapChain9 = GetAs<SwapChain9>(swapChain);
return new TextureStorage9_2D(this, swapChain9);
return new TextureStorage9_2D(this, swapChain9, label);
}
TextureStorage *Renderer9::createTextureStorageEGLImage(EGLImageD3D *eglImage,
RenderTargetD3D *renderTargetD3D)
RenderTargetD3D *renderTargetD3D,
const std::string &label)
{
return new TextureStorage9_EGLImage(this, eglImage, GetAs<RenderTarget9>(renderTargetD3D));
return new TextureStorage9_EGLImage(this, eglImage, GetAs<RenderTarget9>(renderTargetD3D),
label);
}
TextureStorage *Renderer9::createTextureStorageExternal(
egl::Stream *stream,
const egl::Stream::GLTextureDescription &desc)
const egl::Stream::GLTextureDescription &desc,
const std::string &label)
{
UNIMPLEMENTED();
return nullptr;
......@@ -2893,19 +2896,21 @@ TextureStorage *Renderer9::createTextureStorage2D(GLenum internalformat,
GLsizei width,
GLsizei height,
int levels,
const std::string &label,
bool hintLevelZeroOnly)
{
return new TextureStorage9_2D(this, internalformat, renderTarget, width, height, levels);
return new TextureStorage9_2D(this, internalformat, renderTarget, width, height, levels, label);
}
TextureStorage *Renderer9::createTextureStorageCube(GLenum internalformat,
bool renderTarget,
int size,
int levels,
bool hintLevelZeroOnly)
bool hintLevelZeroOnly,
const std::string &label)
{
return new TextureStorage9_Cube(this, internalformat, renderTarget, size, levels,
hintLevelZeroOnly);
hintLevelZeroOnly, label);
}
TextureStorage *Renderer9::createTextureStorage3D(GLenum internalformat,
......@@ -2913,7 +2918,8 @@ TextureStorage *Renderer9::createTextureStorage3D(GLenum internalformat,
GLsizei width,
GLsizei height,
GLsizei depth,
int levels)
int levels,
const std::string &label)
{
// 3D textures are not supported by the D3D9 backend.
UNREACHABLE();
......@@ -2926,7 +2932,8 @@ TextureStorage *Renderer9::createTextureStorage2DArray(GLenum internalformat,
GLsizei width,
GLsizei height,
GLsizei depth,
int levels)
int levels,
const std::string &label)
{
// 2D array textures are not supported by the D3D9 backend.
UNREACHABLE();
......@@ -2939,7 +2946,8 @@ TextureStorage *Renderer9::createTextureStorage2DMultisample(GLenum internalform
GLsizei height,
int levels,
int samples,
bool fixedSampleLocations)
bool fixedSampleLocations,
const std::string &label)
{
// 2D multisampled textures are not supported by the D3D9 backend.
UNREACHABLE();
......@@ -2953,7 +2961,8 @@ TextureStorage *Renderer9::createTextureStorage2DMultisampleArray(GLenum interna
GLsizei depth,
int levels,
int samples,
bool fixedSampleLocations)
bool fixedSampleLocations,
const std::string &label)
{
// 2D multisampled textures are not supported by the D3D9 backend.
UNREACHABLE();
......
......@@ -275,49 +275,57 @@ class Renderer9 : public RendererD3D
bool unpackFlipY,
bool unpackPremultiplyAlpha,
bool unpackUnmultiplyAlpha) override;
TextureStorage *createTextureStorage2D(SwapChainD3D *swapChain) override;
TextureStorage *createTextureStorage2D(SwapChainD3D *swapChain,
const std::string &label) override;
TextureStorage *createTextureStorageEGLImage(EGLImageD3D *eglImage,
RenderTargetD3D *renderTargetD3D) override;
TextureStorage *createTextureStorageExternal(
egl::Stream *stream,
const egl::Stream::GLTextureDescription &desc) override;
RenderTargetD3D *renderTargetD3D,
const std::string &label) override;
TextureStorage *createTextureStorageExternal(egl::Stream *stream,
const egl::Stream::GLTextureDescription &desc,
const std::string &label) override;
TextureStorage *createTextureStorage2D(GLenum internalformat,
bool renderTarget,
GLsizei width,
GLsizei height,
int levels,
const std::string &label,
bool hintLevelZeroOnly) override;
TextureStorage *createTextureStorageCube(GLenum internalformat,
bool renderTarget,
int size,
int levels,
bool hintLevelZeroOnly) override;
bool hintLevelZeroOnly,
const std::string &label) override;
TextureStorage *createTextureStorage3D(GLenum internalformat,
bool renderTarget,
GLsizei width,
GLsizei height,
GLsizei depth,
int levels) override;
int levels,
const std::string &label) override;
TextureStorage *createTextureStorage2DArray(GLenum internalformat,
bool renderTarget,
GLsizei width,
GLsizei height,
GLsizei depth,
int levels) override;
int levels,
const std::string &label) override;
TextureStorage *createTextureStorage2DMultisample(GLenum internalformat,
GLsizei width,
GLsizei height,
int levels,
int samples,
bool fixedSampleLocations) override;
bool fixedSampleLocations,
const std::string &label) override;
TextureStorage *createTextureStorage2DMultisampleArray(GLenum internalformat,
GLsizei width,
GLsizei height,
GLsizei depth,
int levels,
int samples,
bool fixedSampleLocations) override;
bool fixedSampleLocations,
const std::string &label) override;
// Buffer creation
VertexBuffer *createVertexBuffer() override;
......
......@@ -24,8 +24,9 @@
namespace rx
{
TextureStorage9::TextureStorage9(Renderer9 *renderer, DWORD usage)
: mTopLevel(0),
TextureStorage9::TextureStorage9(Renderer9 *renderer, DWORD usage, const std::string &label)
: TextureStorage(label),
mTopLevel(0),
mMipLevels(0),
mTextureWidth(0),
mTextureHeight(0),
......@@ -103,8 +104,10 @@ angle::Result TextureStorage9::setData(const gl::Context *context,
return angle::Result::Stop;
}
TextureStorage9_2D::TextureStorage9_2D(Renderer9 *renderer, SwapChain9 *swapchain)
: TextureStorage9(renderer, D3DUSAGE_RENDERTARGET)
TextureStorage9_2D::TextureStorage9_2D(Renderer9 *renderer,
SwapChain9 *swapchain,
const std::string &label)
: TextureStorage9(renderer, D3DUSAGE_RENDERTARGET, label)
{
IDirect3DTexture9 *surfaceTexture = swapchain->getOffscreenTexture();
mTexture = surfaceTexture;
......@@ -126,8 +129,9 @@ TextureStorage9_2D::TextureStorage9_2D(Renderer9 *renderer,
bool renderTarget,
GLsizei width,
GLsizei height,
int levels)
: TextureStorage9(renderer, GetTextureUsage(internalformat, renderTarget))
int levels,
const std::string &label)
: TextureStorage9(renderer, GetTextureUsage(internalformat, renderTarget), label)
{
mTexture = nullptr;
......@@ -285,9 +289,11 @@ angle::Result TextureStorage9_2D::copyToStorage(const gl::Context *context,
TextureStorage9_EGLImage::TextureStorage9_EGLImage(Renderer9 *renderer,
EGLImageD3D *image,
RenderTarget9 *renderTarget9)
: TextureStorage9(renderer, D3DUSAGE_RENDERTARGET), mImage(image)
RenderTarget9 *renderTarget9,
const std::string &label)
: TextureStorage9(renderer, D3DUSAGE_RENDERTARGET, label), mImage(image)
{
mInternalFormat = renderTarget9->getInternalFormat();
mTextureFormat = renderTarget9->getD3DFormat();
mTextureWidth = renderTarget9->getWidth();
......@@ -397,8 +403,9 @@ TextureStorage9_Cube::TextureStorage9_Cube(Renderer9 *renderer,
bool renderTarget,
int size,
int levels,
bool hintLevelZeroOnly)
: TextureStorage9(renderer, GetTextureUsage(internalformat, renderTarget))
bool hintLevelZeroOnly,
const std::string &label)
: TextureStorage9(renderer, GetTextureUsage(internalformat, renderTarget), label)
{
mTexture = nullptr;
for (size_t i = 0; i < gl::kCubeFaceCount; ++i)
......
......@@ -64,7 +64,7 @@ class TextureStorage9 : public TextureStorage
Renderer9 *mRenderer;
TextureStorage9(Renderer9 *renderer, DWORD usage);
TextureStorage9(Renderer9 *renderer, DWORD usage, const std::string &label);
private:
const DWORD mD3DUsage;
......@@ -74,13 +74,14 @@ class TextureStorage9 : public TextureStorage
class TextureStorage9_2D : public TextureStorage9
{
public:
TextureStorage9_2D(Renderer9 *renderer, SwapChain9 *swapchain);
TextureStorage9_2D(Renderer9 *renderer, SwapChain9 *swapchain, const std::string &label);
TextureStorage9_2D(Renderer9 *renderer,
GLenum internalformat,
bool renderTarget,
GLsizei width,
GLsizei height,
int levels);
int levels,
const std::string &label);
~TextureStorage9_2D() override;
angle::Result getSurfaceLevel(const gl::Context *context,
......@@ -111,7 +112,10 @@ class TextureStorage9_2D : public TextureStorage9
class TextureStorage9_EGLImage final : public TextureStorage9
{
public:
TextureStorage9_EGLImage(Renderer9 *renderer, EGLImageD3D *image, RenderTarget9 *renderTarget9);
TextureStorage9_EGLImage(Renderer9 *renderer,
EGLImageD3D *image,
RenderTarget9 *renderTarget9,
const std::string &label);
~TextureStorage9_EGLImage() override;
angle::Result getSurfaceLevel(const gl::Context *context,
......@@ -146,7 +150,9 @@ class TextureStorage9_Cube : public TextureStorage9
bool renderTarget,
int size,
int levels,
bool hintLevelZeroOnly);
bool hintLevelZeroOnly,
const std::string &label);
~TextureStorage9_Cube() override;
angle::Result getSurfaceLevel(const gl::Context *context,
......
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