Commit 8897afa1 by Jamie Madill Committed by Commit Bot

Pass Context around to Texture::copyImage.

Passing this through the chain will allow us to have access to the platform methods, as well as be useful in the future for Vulkan. BUG=angleproject:1660 Change-Id: I819984fceeb5a2a299aa54e59ef3b428f5f9c91f Reviewed-on: https://chromium-review.googlesource.com/438684Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
parent a631e93b
......@@ -2629,7 +2629,7 @@ void Context::copyTexImage2D(GLenum target,
const Framebuffer *framebuffer = mGLState.getReadFramebuffer();
Texture *texture =
getTargetTexture(IsCubeMapTextureTarget(target) ? GL_TEXTURE_CUBE_MAP : target);
handleError(texture->copyImage(target, level, sourceArea, internalformat, framebuffer));
handleError(texture->copyImage(this, target, level, sourceArea, internalformat, framebuffer));
}
void Context::copyTexSubImage2D(GLenum target,
......@@ -2655,7 +2655,7 @@ void Context::copyTexSubImage2D(GLenum target,
const Framebuffer *framebuffer = mGLState.getReadFramebuffer();
Texture *texture =
getTargetTexture(IsCubeMapTextureTarget(target) ? GL_TEXTURE_CUBE_MAP : target);
handleError(texture->copySubImage(target, level, destOffset, sourceArea, framebuffer));
handleError(texture->copySubImage(this, target, level, destOffset, sourceArea, framebuffer));
}
void Context::copyTexSubImage3D(GLenum target,
......@@ -2681,7 +2681,7 @@ void Context::copyTexSubImage3D(GLenum target,
const Framebuffer *framebuffer = mGLState.getReadFramebuffer();
Texture *texture = getTargetTexture(target);
handleError(texture->copySubImage(target, level, destOffset, sourceArea, framebuffer));
handleError(texture->copySubImage(this, target, level, destOffset, sourceArea, framebuffer));
}
void Context::framebufferTexture2D(GLenum target,
......@@ -2865,8 +2865,8 @@ void Context::texImage2D(GLenum target,
Extents size(width, height, 1);
Texture *texture =
getTargetTexture(IsCubeMapTextureTarget(target) ? GL_TEXTURE_CUBE_MAP : target);
handleError(texture->setImage(mGLState.getUnpackState(), target, level, internalformat, size,
format, type, reinterpret_cast<const uint8_t *>(pixels)));
handleError(texture->setImage(this, mGLState.getUnpackState(), target, level, internalformat,
size, format, type, reinterpret_cast<const uint8_t *>(pixels)));
}
void Context::texImage3D(GLenum target,
......@@ -2884,8 +2884,8 @@ void Context::texImage3D(GLenum target,
Extents size(width, height, depth);
Texture *texture = getTargetTexture(target);
handleError(texture->setImage(mGLState.getUnpackState(), target, level, internalformat, size,
format, type, reinterpret_cast<const uint8_t *>(pixels)));
handleError(texture->setImage(this, mGLState.getUnpackState(), target, level, internalformat,
size, format, type, reinterpret_cast<const uint8_t *>(pixels)));
}
void Context::texSubImage2D(GLenum target,
......@@ -2909,8 +2909,8 @@ void Context::texSubImage2D(GLenum target,
Box area(xoffset, yoffset, 0, width, height, 1);
Texture *texture =
getTargetTexture(IsCubeMapTextureTarget(target) ? GL_TEXTURE_CUBE_MAP : target);
handleError(texture->setSubImage(mGLState.getUnpackState(), target, level, area, format, type,
reinterpret_cast<const uint8_t *>(pixels)));
handleError(texture->setSubImage(this, mGLState.getUnpackState(), target, level, area, format,
type, reinterpret_cast<const uint8_t *>(pixels)));
}
void Context::texSubImage3D(GLenum target,
......@@ -2935,8 +2935,8 @@ void Context::texSubImage3D(GLenum target,
Box area(xoffset, yoffset, zoffset, width, height, depth);
Texture *texture = getTargetTexture(target);
handleError(texture->setSubImage(mGLState.getUnpackState(), target, level, area, format, type,
reinterpret_cast<const uint8_t *>(pixels)));
handleError(texture->setSubImage(this, mGLState.getUnpackState(), target, level, area, format,
type, reinterpret_cast<const uint8_t *>(pixels)));
}
void Context::compressedTexImage2D(GLenum target,
......@@ -2953,7 +2953,7 @@ void Context::compressedTexImage2D(GLenum target,
Extents size(width, height, 1);
Texture *texture =
getTargetTexture(IsCubeMapTextureTarget(target) ? GL_TEXTURE_CUBE_MAP : target);
handleError(texture->setCompressedImage(mGLState.getUnpackState(), target, level,
handleError(texture->setCompressedImage(this, mGLState.getUnpackState(), target, level,
internalformat, size, imageSize,
reinterpret_cast<const uint8_t *>(data)));
}
......@@ -2972,7 +2972,7 @@ void Context::compressedTexImage3D(GLenum target,
Extents size(width, height, depth);
Texture *texture = getTargetTexture(target);
handleError(texture->setCompressedImage(mGLState.getUnpackState(), target, level,
handleError(texture->setCompressedImage(this, mGLState.getUnpackState(), target, level,
internalformat, size, imageSize,
reinterpret_cast<const uint8_t *>(data)));
}
......@@ -2992,7 +2992,7 @@ void Context::compressedTexSubImage2D(GLenum target,
Box area(xoffset, yoffset, 0, width, height, 1);
Texture *texture =
getTargetTexture(IsCubeMapTextureTarget(target) ? GL_TEXTURE_CUBE_MAP : target);
handleError(texture->setCompressedSubImage(mGLState.getUnpackState(), target, level, area,
handleError(texture->setCompressedSubImage(this, mGLState.getUnpackState(), target, level, area,
format, imageSize,
reinterpret_cast<const uint8_t *>(data)));
}
......@@ -3019,7 +3019,7 @@ void Context::compressedTexSubImage3D(GLenum target,
Box area(xoffset, yoffset, zoffset, width, height, depth);
Texture *texture = getTargetTexture(target);
handleError(texture->setCompressedSubImage(mGLState.getUnpackState(), target, level, area,
handleError(texture->setCompressedSubImage(this, mGLState.getUnpackState(), target, level, area,
format, imageSize,
reinterpret_cast<const uint8_t *>(data)));
}
......@@ -3027,7 +3027,7 @@ void Context::compressedTexSubImage3D(GLenum target,
void Context::generateMipmap(GLenum target)
{
Texture *texture = getTargetTexture(target);
handleError(texture->generateMipmap());
handleError(texture->generateMipmap(this));
}
void Context::copyTextureCHROMIUM(GLuint sourceId,
......@@ -3042,7 +3042,7 @@ void Context::copyTextureCHROMIUM(GLuint sourceId,
gl::Texture *sourceTexture = getTexture(sourceId);
gl::Texture *destTexture = getTexture(destId);
handleError(destTexture->copyTexture(internalFormat, destType, unpackFlipY == GL_TRUE,
handleError(destTexture->copyTexture(this, internalFormat, destType, unpackFlipY == GL_TRUE,
unpackPremultiplyAlpha == GL_TRUE,
unpackUnmultiplyAlpha == GL_TRUE, sourceTexture));
}
......@@ -3071,7 +3071,7 @@ void Context::copySubTextureCHROMIUM(GLuint sourceId,
gl::Texture *destTexture = getTexture(destId);
Offset offset(xoffset, yoffset, 0);
Rectangle area(x, y, width, height);
handleError(destTexture->copySubTexture(offset, area, unpackFlipY == GL_TRUE,
handleError(destTexture->copySubTexture(this, offset, area, unpackFlipY == GL_TRUE,
unpackPremultiplyAlpha == GL_TRUE,
unpackUnmultiplyAlpha == GL_TRUE, sourceTexture));
}
......@@ -3082,7 +3082,7 @@ void Context::compressedCopyTextureCHROMIUM(GLuint sourceId, GLuint destId)
gl::Texture *sourceTexture = getTexture(sourceId);
gl::Texture *destTexture = getTexture(destId);
handleError(destTexture->copyCompressedTexture(sourceTexture));
handleError(destTexture->copyCompressedTexture(this, sourceTexture));
}
void Context::getBufferPointerv(GLenum target, GLenum pname, void **params)
......@@ -3696,7 +3696,7 @@ void Context::texStorage2DMultisample(GLenum target,
{
Extents size(width, height, 1);
Texture *texture = getTargetTexture(target);
handleError(texture->setStorageMultisample(target, samples, internalformat, size,
handleError(texture->setStorageMultisample(this, target, samples, internalformat, size,
fixedsamplelocations));
}
......
......@@ -93,11 +93,11 @@ TEST(ImageTest, RespecificationReleasesReferences)
gl::PixelUnpackState defaultUnpackState;
EXPECT_CALL(*textureImpl, setImage(_, _, _, _, _, _, _, _))
EXPECT_CALL(*textureImpl, setImage(_, _, _, _, _, _, _, _, _))
.WillOnce(Return(gl::NoError()))
.RetiresOnSaturation();
texture->setImage(defaultUnpackState, GL_TEXTURE_2D, 0, GL_RGBA8, gl::Extents(1, 1, 1), GL_RGBA,
GL_UNSIGNED_BYTE, nullptr);
texture->setImage(nullptr, defaultUnpackState, GL_TEXTURE_2D, 0, GL_RGBA8, gl::Extents(1, 1, 1),
GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
rx::MockImageImpl *imageImpl = new rx::MockImageImpl();
egl::Image *image = new egl::Image(imageImpl, EGL_GL_TEXTURE_2D, texture, egl::AttributeMap());
......@@ -110,12 +110,12 @@ TEST(ImageTest, RespecificationReleasesReferences)
// Respecify the texture and verify that the image releases its reference
EXPECT_CALL(*imageImpl, orphan(_)).WillOnce(Return(gl::NoError())).RetiresOnSaturation();
EXPECT_CALL(*textureImpl, setImage(_, _, _, _, _, _, _, _))
EXPECT_CALL(*textureImpl, setImage(_, _, _, _, _, _, _, _, _))
.WillOnce(Return(gl::NoError()))
.RetiresOnSaturation();
texture->setImage(defaultUnpackState, GL_TEXTURE_2D, 0, GL_RGBA8, gl::Extents(1, 1, 1), GL_RGBA,
GL_UNSIGNED_BYTE, nullptr);
texture->setImage(nullptr, defaultUnpackState, GL_TEXTURE_2D, 0, GL_RGBA8, gl::Extents(1, 1, 1),
GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
EXPECT_EQ(texture->getRefCount(), 1u);
EXPECT_EQ(image->getRefCount(), 1u);
......
......@@ -24,7 +24,7 @@ namespace gl
namespace
{
bool IsPointSampled(const gl::SamplerState &samplerState)
bool IsPointSampled(const SamplerState &samplerState)
{
return (samplerState.magFilter == GL_NEAREST &&
(samplerState.minFilter == GL_NEAREST ||
......@@ -38,7 +38,7 @@ size_t GetImageDescIndex(GLenum target, size_t level)
}
} // namespace
bool IsMipmapFiltered(const gl::SamplerState &samplerState)
bool IsMipmapFiltered(const SamplerState &samplerState)
{
switch (samplerState.minFilter)
{
......@@ -118,7 +118,7 @@ GLuint TextureState::getEffectiveBaseLevel() const
// effective base level to max levels these arrays need just one extra item to store properties
// that should be returned for all out-of-range base level values, instead of needing special
// handling for out-of-range base levels.
return std::min(mBaseLevel, static_cast<GLuint>(gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS));
return std::min(mBaseLevel, static_cast<GLuint>(IMPLEMENTATION_MAX_TEXTURE_LEVELS));
}
GLuint TextureState::getEffectiveMaxLevel() const
......@@ -232,7 +232,7 @@ bool TextureState::computeSamplerCompleteness(const SamplerState &samplerState,
}
// The cases where the texture is incomplete because base level is out of range should be
// handled by the above condition.
ASSERT(mBaseLevel < gl::IMPLEMENTATION_MAX_TEXTURE_LEVELS || mImmutableFormat);
ASSERT(mBaseLevel < IMPLEMENTATION_MAX_TEXTURE_LEVELS || mImmutableFormat);
if (mTarget == GL_TEXTURE_CUBE_MAP && baseImageDesc.size.width != baseImageDesc.size.height)
{
......@@ -247,8 +247,8 @@ bool TextureState::computeSamplerCompleteness(const SamplerState &samplerState,
bool npotSupport = data.getExtensions().textureNPOT || data.getClientMajorVersion() >= 3;
if (!npotSupport)
{
if ((samplerState.wrapS != GL_CLAMP_TO_EDGE && !gl::isPow2(baseImageDesc.size.width)) ||
(samplerState.wrapT != GL_CLAMP_TO_EDGE && !gl::isPow2(baseImageDesc.size.height)))
if ((samplerState.wrapS != GL_CLAMP_TO_EDGE && !isPow2(baseImageDesc.size.width)) ||
(samplerState.wrapT != GL_CLAMP_TO_EDGE && !isPow2(baseImageDesc.size.height)))
{
return false;
}
......@@ -258,7 +258,7 @@ bool TextureState::computeSamplerCompleteness(const SamplerState &samplerState,
{
if (!npotSupport)
{
if (!gl::isPow2(baseImageDesc.size.width) || !gl::isPow2(baseImageDesc.size.height))
if (!isPow2(baseImageDesc.size.width) || !isPow2(baseImageDesc.size.height))
{
return false;
}
......@@ -845,7 +845,8 @@ egl::Stream *Texture::getBoundStream() const
return mBoundStream;
}
Error Texture::setImage(const PixelUnpackState &unpackState,
Error Texture::setImage(const Context *context,
const PixelUnpackState &unpackState,
GLenum target,
size_t level,
GLenum internalFormat,
......@@ -861,8 +862,8 @@ Error Texture::setImage(const PixelUnpackState &unpackState,
releaseTexImageInternal();
orphanImages();
ANGLE_TRY(
mTexture->setImage(target, level, internalFormat, size, format, type, unpackState, pixels));
ANGLE_TRY(mTexture->setImage(rx::SafeGetImpl(context), target, level, internalFormat, size,
format, type, unpackState, pixels));
mState.setImageDesc(target, level, ImageDesc(size, Format(internalFormat, format, type)));
mDirtyChannel.signal();
......@@ -870,7 +871,8 @@ Error Texture::setImage(const PixelUnpackState &unpackState,
return NoError();
}
Error Texture::setSubImage(const PixelUnpackState &unpackState,
Error Texture::setSubImage(const Context *context,
const PixelUnpackState &unpackState,
GLenum target,
size_t level,
const Box &area,
......@@ -880,10 +882,12 @@ Error Texture::setSubImage(const PixelUnpackState &unpackState,
{
ASSERT(target == mState.mTarget ||
(mState.mTarget == GL_TEXTURE_CUBE_MAP && IsCubeMapTextureTarget(target)));
return mTexture->setSubImage(target, level, area, format, type, unpackState, pixels);
return mTexture->setSubImage(rx::SafeGetImpl(context), target, level, area, format, type,
unpackState, pixels);
}
Error Texture::setCompressedImage(const PixelUnpackState &unpackState,
Error Texture::setCompressedImage(const Context *context,
const PixelUnpackState &unpackState,
GLenum target,
size_t level,
GLenum internalFormat,
......@@ -898,8 +902,8 @@ Error Texture::setCompressedImage(const PixelUnpackState &unpackState,
releaseTexImageInternal();
orphanImages();
ANGLE_TRY(mTexture->setCompressedImage(target, level, internalFormat, size, unpackState,
imageSize, pixels));
ANGLE_TRY(mTexture->setCompressedImage(rx::SafeGetImpl(context), target, level, internalFormat,
size, unpackState, imageSize, pixels));
mState.setImageDesc(target, level, ImageDesc(size, Format(internalFormat)));
mDirtyChannel.signal();
......@@ -907,7 +911,8 @@ Error Texture::setCompressedImage(const PixelUnpackState &unpackState,
return NoError();
}
Error Texture::setCompressedSubImage(const PixelUnpackState &unpackState,
Error Texture::setCompressedSubImage(const Context *context,
const PixelUnpackState &unpackState,
GLenum target,
size_t level,
const Box &area,
......@@ -918,11 +923,12 @@ Error Texture::setCompressedSubImage(const PixelUnpackState &unpackState,
ASSERT(target == mState.mTarget ||
(mState.mTarget == GL_TEXTURE_CUBE_MAP && IsCubeMapTextureTarget(target)));
return mTexture->setCompressedSubImage(target, level, area, format, unpackState, imageSize,
pixels);
return mTexture->setCompressedSubImage(rx::SafeGetImpl(context), target, level, area, format,
unpackState, imageSize, pixels);
}
Error Texture::copyImage(GLenum target,
Error Texture::copyImage(const Context *context,
GLenum target,
size_t level,
const Rectangle &sourceArea,
GLenum internalFormat,
......@@ -935,7 +941,8 @@ Error Texture::copyImage(GLenum target,
releaseTexImageInternal();
orphanImages();
ANGLE_TRY(mTexture->copyImage(target, level, sourceArea, internalFormat, source));
ANGLE_TRY(mTexture->copyImage(rx::SafeGetImpl(context), target, level, sourceArea,
internalFormat, source));
const GLenum sizedFormat = GetSizedInternalFormat(internalFormat, GL_UNSIGNED_BYTE);
mState.setImageDesc(target, level, ImageDesc(Extents(sourceArea.width, sourceArea.height, 1),
......@@ -945,7 +952,8 @@ Error Texture::copyImage(GLenum target,
return NoError();
}
Error Texture::copySubImage(GLenum target,
Error Texture::copySubImage(const Context *context,
GLenum target,
size_t level,
const Offset &destOffset,
const Rectangle &sourceArea,
......@@ -954,10 +962,12 @@ Error Texture::copySubImage(GLenum target,
ASSERT(target == mState.mTarget ||
(mState.mTarget == GL_TEXTURE_CUBE_MAP && IsCubeMapTextureTarget(target)));
return mTexture->copySubImage(target, level, destOffset, sourceArea, source);
return mTexture->copySubImage(rx::SafeGetImpl(context), target, level, destOffset, sourceArea,
source);
}
Error Texture::copyTexture(GLenum internalFormat,
Error Texture::copyTexture(const Context *context,
GLenum internalFormat,
GLenum type,
bool unpackFlipY,
bool unpackPremultiplyAlpha,
......@@ -968,8 +978,8 @@ Error Texture::copyTexture(GLenum internalFormat,
releaseTexImageInternal();
orphanImages();
ANGLE_TRY(mTexture->copyTexture(internalFormat, type, unpackFlipY, unpackPremultiplyAlpha,
unpackUnmultiplyAlpha, source));
ANGLE_TRY(mTexture->copyTexture(rx::SafeGetImpl(context), internalFormat, type, unpackFlipY,
unpackPremultiplyAlpha, unpackUnmultiplyAlpha, source));
const auto &sourceDesc = source->mState.getImageDesc(source->getTarget(), 0);
const GLenum sizedFormat = GetSizedInternalFormat(internalFormat, type);
......@@ -979,24 +989,25 @@ Error Texture::copyTexture(GLenum internalFormat,
return NoError();
}
Error Texture::copySubTexture(const Offset &destOffset,
Error Texture::copySubTexture(const Context *context,
const Offset &destOffset,
const Rectangle &sourceArea,
bool unpackFlipY,
bool unpackPremultiplyAlpha,
bool unpackUnmultiplyAlpha,
const Texture *source)
{
return mTexture->copySubTexture(destOffset, sourceArea, unpackFlipY, unpackPremultiplyAlpha,
unpackUnmultiplyAlpha, source);
return mTexture->copySubTexture(rx::SafeGetImpl(context), destOffset, sourceArea, unpackFlipY,
unpackPremultiplyAlpha, unpackUnmultiplyAlpha, source);
}
Error Texture::copyCompressedTexture(const Texture *source)
Error Texture::copyCompressedTexture(const Context *context, const Texture *source)
{
// Release from previous calls to eglBindTexImage, to avoid calling the Impl after
releaseTexImageInternal();
orphanImages();
ANGLE_TRY(mTexture->copyCompressedTexture(source));
ANGLE_TRY(mTexture->copyCompressedTexture(rx::SafeGetImpl(context), source));
ASSERT(source->getTarget() != GL_TEXTURE_CUBE_MAP && getTarget() != GL_TEXTURE_CUBE_MAP);
const auto &sourceDesc = source->mState.getImageDesc(source->getTarget(), 0);
......@@ -1005,7 +1016,11 @@ Error Texture::copyCompressedTexture(const Texture *source)
return NoError();
}
Error Texture::setStorage(GLenum target, GLsizei levels, GLenum internalFormat, const Extents &size)
Error Texture::setStorage(const Context *context,
GLenum target,
GLsizei levels,
GLenum internalFormat,
const Extents &size)
{
ASSERT(target == mState.mTarget);
......@@ -1013,7 +1028,7 @@ Error Texture::setStorage(GLenum target, GLsizei levels, GLenum internalFormat,
releaseTexImageInternal();
orphanImages();
ANGLE_TRY(mTexture->setStorage(target, levels, internalFormat, size));
ANGLE_TRY(mTexture->setStorage(rx::SafeGetImpl(context), target, levels, internalFormat, size));
mState.mImmutableFormat = true;
mState.mImmutableLevels = static_cast<GLuint>(levels);
......@@ -1032,7 +1047,8 @@ Error Texture::setStorage(GLenum target, GLsizei levels, GLenum internalFormat,
return NoError();
}
Error Texture::setStorageMultisample(GLenum target,
Error Texture::setStorageMultisample(const Context *context,
GLenum target,
GLsizei samples,
GLint internalFormat,
const Extents &size,
......@@ -1044,8 +1060,8 @@ Error Texture::setStorageMultisample(GLenum target,
releaseTexImageInternal();
orphanImages();
ANGLE_TRY(mTexture->setStorageMultisample(target, samples, internalFormat, size,
fixedSampleLocations));
ANGLE_TRY(mTexture->setStorageMultisample(rx::SafeGetImpl(context), target, samples,
internalFormat, size, fixedSampleLocations));
mState.mImmutableFormat = true;
mState.mImmutableLevels = static_cast<GLuint>(1);
......@@ -1058,7 +1074,7 @@ Error Texture::setStorageMultisample(GLenum target,
return NoError();
}
Error Texture::generateMipmap()
Error Texture::generateMipmap(const Context *context)
{
// Release from previous calls to eglBindTexImage, to avoid calling the Impl after
releaseTexImageInternal();
......@@ -1076,7 +1092,7 @@ Error Texture::generateMipmap()
if (maxLevel > baseLevel)
{
syncImplState();
ANGLE_TRY(mTexture->generateMipmap());
ANGLE_TRY(mTexture->generateMipmap(rx::SafeGetImpl(context)));
const ImageDesc &baseImageInfo =
mState.getImageDesc(mState.getBaseImageTarget(), baseLevel);
......@@ -1193,17 +1209,17 @@ Error Texture::setEGLImageTarget(GLenum target, egl::Image *imageTarget)
return NoError();
}
Extents Texture::getAttachmentSize(const gl::FramebufferAttachment::Target &target) const
Extents Texture::getAttachmentSize(const FramebufferAttachment::Target &target) const
{
return mState.getImageDesc(target.textureIndex().type, target.textureIndex().mipIndex).size;
}
const Format &Texture::getAttachmentFormat(const gl::FramebufferAttachment::Target &target) const
const Format &Texture::getAttachmentFormat(const FramebufferAttachment::Target &target) const
{
return getFormat(target.textureIndex().type, target.textureIndex().mipIndex);
}
GLsizei Texture::getAttachmentSamples(const gl::FramebufferAttachment::Target &target) const
GLsizei Texture::getAttachmentSamples(const FramebufferAttachment::Target &target) const
{
return getSamples(target.textureIndex().type, 0);
}
......
......@@ -263,7 +263,8 @@ class Texture final : public egl::ImageSibling,
bool isMipmapComplete() const;
Error setImage(const PixelUnpackState &unpackState,
Error setImage(const Context *context,
const PixelUnpackState &unpackState,
GLenum target,
size_t level,
GLenum internalFormat,
......@@ -271,7 +272,8 @@ class Texture final : public egl::ImageSibling,
GLenum format,
GLenum type,
const uint8_t *pixels);
Error setSubImage(const PixelUnpackState &unpackState,
Error setSubImage(const Context *context,
const PixelUnpackState &unpackState,
GLenum target,
size_t level,
const Box &area,
......@@ -279,14 +281,16 @@ class Texture final : public egl::ImageSibling,
GLenum type,
const uint8_t *pixels);
Error setCompressedImage(const PixelUnpackState &unpackState,
Error setCompressedImage(const Context *context,
const PixelUnpackState &unpackState,
GLenum target,
size_t level,
GLenum internalFormat,
const Extents &size,
size_t imageSize,
const uint8_t *pixels);
Error setCompressedSubImage(const PixelUnpackState &unpackState,
Error setCompressedSubImage(const Context *context,
const PixelUnpackState &unpackState,
GLenum target,
size_t level,
const Box &area,
......@@ -294,34 +298,43 @@ class Texture final : public egl::ImageSibling,
size_t imageSize,
const uint8_t *pixels);
Error copyImage(GLenum target,
Error copyImage(const Context *context,
GLenum target,
size_t level,
const Rectangle &sourceArea,
GLenum internalFormat,
const Framebuffer *source);
Error copySubImage(GLenum target,
Error copySubImage(const Context *context,
GLenum target,
size_t level,
const Offset &destOffset,
const Rectangle &sourceArea,
const Framebuffer *source);
Error copyTexture(GLenum internalFormat,
Error copyTexture(const Context *context,
GLenum internalFormat,
GLenum type,
bool unpackFlipY,
bool unpackPremultiplyAlpha,
bool unpackUnmultiplyAlpha,
const Texture *source);
Error copySubTexture(const Offset &destOffset,
Error copySubTexture(const Context *context,
const Offset &destOffset,
const Rectangle &sourceArea,
bool unpackFlipY,
bool unpackPremultiplyAlpha,
bool unpackUnmultiplyAlpha,
const Texture *source);
Error copyCompressedTexture(const Texture *source);
Error copyCompressedTexture(const Context *context, const Texture *source);
Error setStorage(GLenum target, GLsizei levels, GLenum internalFormat, const Extents &size);
Error setStorage(const Context *context,
GLenum target,
GLsizei levels,
GLenum internalFormat,
const Extents &size);
Error setStorageMultisample(GLenum target,
Error setStorageMultisample(const Context *context,
GLenum target,
GLsizei samples,
GLint internalformat,
const Extents &size,
......@@ -329,7 +342,7 @@ class Texture final : public egl::ImageSibling,
Error setEGLImageTarget(GLenum target, egl::Image *imageTarget);
Error generateMipmap();
Error generateMipmap(const Context *context);
egl::Surface *getBoundSurface() const;
egl::Stream *getBoundStream() const;
......
......@@ -19,7 +19,8 @@ TextureImpl::~TextureImpl()
{
}
gl::Error TextureImpl::copyTexture(GLenum internalFormat,
gl::Error TextureImpl::copyTexture(ContextImpl *contextImpl,
GLenum internalFormat,
GLenum type,
bool unpackFlipY,
bool unpackPremultiplyAlpha,
......@@ -30,7 +31,8 @@ gl::Error TextureImpl::copyTexture(GLenum internalFormat,
return gl::Error(GL_INVALID_OPERATION, "CHROMIUM_copy_texture exposed but not implemented.");
}
gl::Error TextureImpl::copySubTexture(const gl::Offset &destOffset,
gl::Error TextureImpl::copySubTexture(ContextImpl *contextImpl,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
bool unpackFlipY,
bool unpackPremultiplyAlpha,
......@@ -41,10 +43,10 @@ gl::Error TextureImpl::copySubTexture(const gl::Offset &destOffset,
return gl::Error(GL_INVALID_OPERATION, "CHROMIUM_copy_texture exposed but not implemented.");
}
gl::Error TextureImpl::copyCompressedTexture(const gl::Texture *source)
gl::Error TextureImpl::copyCompressedTexture(ContextImpl *contextImpl, const gl::Texture *source)
{
UNREACHABLE();
return gl::Error(GL_INVALID_OPERATION,
"CHROMIUM_copy_compressed_texture exposed but not implemented.");
}
}
} // namespace rx
......@@ -38,6 +38,7 @@ struct TextureState;
namespace rx
{
class ContextImpl;
class TextureImpl : public FramebufferAttachmentObjectImpl
{
......@@ -45,39 +46,79 @@ class TextureImpl : public FramebufferAttachmentObjectImpl
TextureImpl(const gl::TextureState &state);
virtual ~TextureImpl();
virtual gl::Error setImage(GLenum target, size_t level, GLenum internalFormat, const gl::Extents &size, GLenum format, GLenum type,
const gl::PixelUnpackState &unpack, const uint8_t *pixels) = 0;
virtual gl::Error setSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format, GLenum type,
const gl::PixelUnpackState &unpack, const uint8_t *pixels) = 0;
virtual gl::Error setCompressedImage(GLenum target, size_t level, GLenum internalFormat, const gl::Extents &size,
const gl::PixelUnpackState &unpack, size_t imageSize, const uint8_t *pixels) = 0;
virtual gl::Error setCompressedSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format,
const gl::PixelUnpackState &unpack, size_t imageSize, const uint8_t *pixels) = 0;
virtual gl::Error copyImage(GLenum target, size_t level, const gl::Rectangle &sourceArea, GLenum internalFormat,
virtual gl::Error setImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
GLenum format,
GLenum type,
const gl::PixelUnpackState &unpack,
const uint8_t *pixels) = 0;
virtual gl::Error setSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
GLenum type,
const gl::PixelUnpackState &unpack,
const uint8_t *pixels) = 0;
virtual gl::Error setCompressedImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
const gl::PixelUnpackState &unpack,
size_t imageSize,
const uint8_t *pixels) = 0;
virtual gl::Error setCompressedSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
const gl::PixelUnpackState &unpack,
size_t imageSize,
const uint8_t *pixels) = 0;
virtual gl::Error copyImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Rectangle &sourceArea,
GLenum internalFormat,
const gl::Framebuffer *source) = 0;
virtual gl::Error copySubImage(GLenum target, size_t level, const gl::Offset &destOffset, const gl::Rectangle &sourceArea,
virtual gl::Error copySubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
const gl::Framebuffer *source) = 0;
virtual gl::Error copyTexture(GLenum internalFormat,
virtual gl::Error copyTexture(ContextImpl *contextImpl,
GLenum internalFormat,
GLenum type,
bool unpackFlipY,
bool unpackPremultiplyAlpha,
bool unpackUnmultiplyAlpha,
const gl::Texture *source);
virtual gl::Error copySubTexture(const gl::Offset &destOffset,
virtual gl::Error copySubTexture(ContextImpl *contextImpl,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
bool unpackFlipY,
bool unpackPremultiplyAlpha,
bool unpackUnmultiplyAlpha,
const gl::Texture *source);
virtual gl::Error copyCompressedTexture(const gl::Texture *source);
virtual gl::Error copyCompressedTexture(ContextImpl *contextImpl, const gl::Texture *source);
virtual gl::Error setStorage(GLenum target, size_t levels, GLenum internalFormat, const gl::Extents &size) = 0;
virtual gl::Error setStorage(ContextImpl *contextImpl,
GLenum target,
size_t levels,
GLenum internalFormat,
const gl::Extents &size) = 0;
virtual gl::Error setStorageMultisample(GLenum target,
virtual gl::Error setStorageMultisample(ContextImpl *contextImpl,
GLenum target,
GLsizei samples,
GLint internalformat,
const gl::Extents &size,
......@@ -89,7 +130,7 @@ class TextureImpl : public FramebufferAttachmentObjectImpl
egl::Stream *stream,
const egl::Stream::GLTextureDescription &desc) = 0;
virtual gl::Error generateMipmap() = 0;
virtual gl::Error generateMipmap(ContextImpl *contextImpl) = 0;
virtual void setBaseLevel(GLuint baseLevel) = 0;
......
......@@ -21,33 +21,80 @@ class MockTextureImpl : public TextureImpl
public:
MockTextureImpl() : TextureImpl(mMockState), mMockState(GL_TEXTURE_2D) {}
virtual ~MockTextureImpl() { destructor(); }
MOCK_METHOD8(setImage, gl::Error(GLenum, size_t, GLenum, const gl::Extents &, GLenum, GLenum, const gl::PixelUnpackState &, const uint8_t *));
MOCK_METHOD7(setSubImage, gl::Error(GLenum, size_t, const gl::Box &, GLenum, GLenum, const gl::PixelUnpackState &, const uint8_t *));
MOCK_METHOD7(setCompressedImage, gl::Error(GLenum, size_t, GLenum, const gl::Extents &, const gl::PixelUnpackState &, size_t, const uint8_t *));
MOCK_METHOD7(setCompressedSubImage, gl::Error(GLenum, size_t, const gl::Box &, GLenum, const gl::PixelUnpackState &, size_t, const uint8_t *));
MOCK_METHOD5(copyImage, gl::Error(GLenum, size_t, const gl::Rectangle &, GLenum, const gl::Framebuffer *));
MOCK_METHOD5(copySubImage, gl::Error(GLenum, size_t, const gl::Offset &, const gl::Rectangle &, const gl::Framebuffer *));
MOCK_METHOD6(copyTexture, gl::Error(GLenum, GLenum, bool, bool, bool, const gl::Texture *));
MOCK_METHOD6(copySubTexture,
gl::Error(const gl::Offset &,
MOCK_METHOD9(setImage,
gl::Error(ContextImpl *,
GLenum,
size_t,
GLenum,
const gl::Extents &,
GLenum,
GLenum,
const gl::PixelUnpackState &,
const uint8_t *));
MOCK_METHOD8(setSubImage,
gl::Error(ContextImpl *,
GLenum,
size_t,
const gl::Box &,
GLenum,
GLenum,
const gl::PixelUnpackState &,
const uint8_t *));
MOCK_METHOD8(setCompressedImage,
gl::Error(ContextImpl *,
GLenum,
size_t,
GLenum,
const gl::Extents &,
const gl::PixelUnpackState &,
size_t,
const uint8_t *));
MOCK_METHOD8(setCompressedSubImage,
gl::Error(ContextImpl *,
GLenum,
size_t,
const gl::Box &,
GLenum,
const gl::PixelUnpackState &,
size_t,
const uint8_t *));
MOCK_METHOD6(copyImage,
gl::Error(ContextImpl *,
GLenum,
size_t,
const gl::Rectangle &,
GLenum,
const gl::Framebuffer *));
MOCK_METHOD6(copySubImage,
gl::Error(ContextImpl *,
GLenum,
size_t,
const gl::Offset &,
const gl::Rectangle &,
const gl::Framebuffer *));
MOCK_METHOD7(copyTexture,
gl::Error(ContextImpl *, GLenum, GLenum, bool, bool, bool, const gl::Texture *));
MOCK_METHOD7(copySubTexture,
gl::Error(ContextImpl *,
const gl::Offset &,
const gl::Rectangle &,
bool,
bool,
bool,
const gl::Texture *));
MOCK_METHOD1(copyCompressedTexture, gl::Error(const gl::Texture *source));
MOCK_METHOD4(setStorage, gl::Error(GLenum, size_t, GLenum, const gl::Extents &));
MOCK_METHOD2(copyCompressedTexture, gl::Error(ContextImpl *, const gl::Texture *source));
MOCK_METHOD5(setStorage, gl::Error(ContextImpl *, GLenum, size_t, GLenum, const gl::Extents &));
MOCK_METHOD3(setImageExternal,
gl::Error(GLenum, egl::Stream *, const egl::Stream::GLTextureDescription &));
MOCK_METHOD2(setEGLImageTarget, gl::Error(GLenum, egl::Image *));
MOCK_METHOD0(generateMipmap, gl::Error());
MOCK_METHOD1(generateMipmap, gl::Error(ContextImpl *));
MOCK_METHOD1(bindTexImage, void(egl::Surface *));
MOCK_METHOD0(releaseTexImage, void(void));
MOCK_METHOD2(getAttachmentRenderTarget, gl::Error(const gl::FramebufferAttachment::Target &, FramebufferAttachmentRenderTarget **));
MOCK_METHOD5(setStorageMultisample,
gl::Error(GLenum, GLsizei, GLint, const gl::Extents &, GLboolean));
MOCK_METHOD6(setStorageMultisample,
gl::Error(ContextImpl *, GLenum, GLsizei, GLint, const gl::Extents &, GLboolean));
MOCK_METHOD1(setBaseLevel, void(GLuint));
......
......@@ -256,19 +256,19 @@ gl::Texture *RendererD3D::getIncompleteTexture(GLImplFactory *implFactory, GLenu
// Skip the API layer to avoid needing to pass the Context and mess with dirty bits.
gl::Texture *t =
new gl::Texture(implFactory, std::numeric_limits<GLuint>::max(), createType);
t->setStorage(createType, 1, GL_RGBA8, colorSize);
t->setStorage(nullptr, createType, 1, GL_RGBA8, colorSize);
if (type == GL_TEXTURE_CUBE_MAP)
{
for (GLenum face = GL_TEXTURE_CUBE_MAP_POSITIVE_X; face <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z; face++)
{
t->getImplementation()->setSubImage(face, 0, area, GL_RGBA8, GL_UNSIGNED_BYTE,
unpack, color);
t->getImplementation()->setSubImage(nullptr, face, 0, area, GL_RGBA8,
GL_UNSIGNED_BYTE, unpack, color);
}
}
else
{
t->getImplementation()->setSubImage(createType, 0, area, GL_RGBA8, GL_UNSIGNED_BYTE, unpack,
color);
t->getImplementation()->setSubImage(nullptr, createType, 0, area, GL_RGBA8,
GL_UNSIGNED_BYTE, unpack, color);
}
mIncompleteTextures[type].set(t);
}
......
......@@ -144,7 +144,8 @@ GLenum TextureD3D::getBaseLevelInternalFormat() const
return (baseImage ? baseImage->getInternalFormat() : GL_NONE);
}
gl::Error TextureD3D::setStorageMultisample(GLenum target,
gl::Error TextureD3D::setStorageMultisample(ContextImpl *contextImpl,
GLenum target,
GLsizei samples,
GLint internalFormat,
const gl::Extents &size,
......@@ -361,7 +362,7 @@ gl::Error TextureD3D::setImageExternal(GLenum target,
return gl::Error(GL_INVALID_OPERATION);
}
gl::Error TextureD3D::generateMipmap()
gl::Error TextureD3D::generateMipmap(ContextImpl *contextImpl)
{
const GLuint baseLevel = mState.getEffectiveBaseLevel();
const GLuint maxLevel = mState.getMipmapMaxLevel();
......@@ -599,7 +600,8 @@ ImageD3D *TextureD3D_2DMultisample::getImage(const gl::ImageIndex &index) const
return nullptr;
}
gl::Error TextureD3D_2DMultisample::setImage(GLenum target,
gl::Error TextureD3D_2DMultisample::setImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
......@@ -612,7 +614,8 @@ gl::Error TextureD3D_2DMultisample::setImage(GLenum target,
return gl::InternalError();
}
gl::Error TextureD3D_2DMultisample::setSubImage(GLenum target,
gl::Error TextureD3D_2DMultisample::setSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
......@@ -624,7 +627,8 @@ gl::Error TextureD3D_2DMultisample::setSubImage(GLenum target,
return gl::InternalError();
}
gl::Error TextureD3D_2DMultisample::setCompressedImage(GLenum target,
gl::Error TextureD3D_2DMultisample::setCompressedImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
......@@ -636,7 +640,8 @@ gl::Error TextureD3D_2DMultisample::setCompressedImage(GLenum target,
return gl::InternalError();
}
gl::Error TextureD3D_2DMultisample::setCompressedSubImage(GLenum target,
gl::Error TextureD3D_2DMultisample::setCompressedSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
......@@ -648,7 +653,8 @@ gl::Error TextureD3D_2DMultisample::setCompressedSubImage(GLenum target,
return gl::InternalError();
}
gl::Error TextureD3D_2DMultisample::copyImage(GLenum target,
gl::Error TextureD3D_2DMultisample::copyImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Rectangle &sourceArea,
GLenum internalFormat,
......@@ -658,7 +664,8 @@ gl::Error TextureD3D_2DMultisample::copyImage(GLenum target,
return gl::InternalError();
}
gl::Error TextureD3D_2DMultisample::copySubImage(GLenum target,
gl::Error TextureD3D_2DMultisample::copySubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
......@@ -668,7 +675,8 @@ gl::Error TextureD3D_2DMultisample::copySubImage(GLenum target,
return gl::InternalError();
}
gl::Error TextureD3D_2DMultisample::setStorage(GLenum target,
gl::Error TextureD3D_2DMultisample::setStorage(ContextImpl *contextImpl,
GLenum target,
size_t levels,
GLenum internalFormat,
const gl::Extents &size)
......@@ -836,7 +844,8 @@ bool TextureD3D_2D::isDepth(GLint level) const
return gl::GetInternalFormatInfo(getInternalFormat(level)).depthBits > 0;
}
gl::Error TextureD3D_2D::setImage(GLenum target,
gl::Error TextureD3D_2D::setImage(ContextImpl *contextImpl,
GLenum target,
size_t imageLevel,
GLenum internalFormat,
const gl::Extents &size,
......@@ -882,7 +891,8 @@ gl::Error TextureD3D_2D::setImage(GLenum target,
return gl::NoError();
}
gl::Error TextureD3D_2D::setSubImage(GLenum target,
gl::Error TextureD3D_2D::setSubImage(ContextImpl *contextImpl,
GLenum target,
size_t imageLevel,
const gl::Box &area,
GLenum format,
......@@ -908,7 +918,8 @@ gl::Error TextureD3D_2D::setSubImage(GLenum target,
}
}
gl::Error TextureD3D_2D::setCompressedImage(GLenum target,
gl::Error TextureD3D_2D::setCompressedImage(ContextImpl *contextImpl,
GLenum target,
size_t imageLevel,
GLenum internalFormat,
const gl::Extents &size,
......@@ -925,8 +936,14 @@ gl::Error TextureD3D_2D::setCompressedImage(GLenum target,
return setCompressedImageImpl(gl::ImageIndex::Make2D(level), unpack, pixels, 0);
}
gl::Error TextureD3D_2D::setCompressedSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format,
const gl::PixelUnpackState &unpack, size_t imageSize, const uint8_t *pixels)
gl::Error TextureD3D_2D::setCompressedSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
const gl::PixelUnpackState &unpack,
size_t imageSize,
const uint8_t *pixels)
{
ASSERT(target == GL_TEXTURE_2D && area.depth == 1 && area.z == 0);
......@@ -936,7 +953,8 @@ gl::Error TextureD3D_2D::setCompressedSubImage(GLenum target, size_t level, cons
return commitRegion(index, area);
}
gl::Error TextureD3D_2D::copyImage(GLenum target,
gl::Error TextureD3D_2D::copyImage(ContextImpl *contextImpl,
GLenum target,
size_t imageLevel,
const gl::Rectangle &sourceArea,
GLenum internalFormat,
......@@ -974,7 +992,8 @@ gl::Error TextureD3D_2D::copyImage(GLenum target,
return gl::NoError();
}
gl::Error TextureD3D_2D::copySubImage(GLenum target,
gl::Error TextureD3D_2D::copySubImage(ContextImpl *contextImpl,
GLenum target,
size_t imageLevel,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
......@@ -1011,7 +1030,8 @@ gl::Error TextureD3D_2D::copySubImage(GLenum target,
return gl::NoError();
}
gl::Error TextureD3D_2D::copyTexture(GLenum internalFormat,
gl::Error TextureD3D_2D::copyTexture(ContextImpl *contextImpl,
GLenum internalFormat,
GLenum type,
bool unpackFlipY,
bool unpackPremultiplyAlpha,
......@@ -1044,7 +1064,8 @@ gl::Error TextureD3D_2D::copyTexture(GLenum internalFormat,
return gl::NoError();
}
gl::Error TextureD3D_2D::copySubTexture(const gl::Offset &destOffset,
gl::Error TextureD3D_2D::copySubTexture(ContextImpl *contextImpl,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
bool unpackFlipY,
bool unpackPremultiplyAlpha,
......@@ -1068,7 +1089,7 @@ gl::Error TextureD3D_2D::copySubTexture(const gl::Offset &destOffset,
return gl::NoError();
}
gl::Error TextureD3D_2D::copyCompressedTexture(const gl::Texture *source)
gl::Error TextureD3D_2D::copyCompressedTexture(ContextImpl *contextImpl, const gl::Texture *source)
{
GLenum sourceTarget = source->getTarget();
GLint sourceLevel = 0;
......@@ -1088,7 +1109,11 @@ gl::Error TextureD3D_2D::copyCompressedTexture(const gl::Texture *source)
return gl::NoError();
}
gl::Error TextureD3D_2D::setStorage(GLenum target, size_t levels, GLenum internalFormat, const gl::Extents &size)
gl::Error TextureD3D_2D::setStorage(ContextImpl *contextImpl,
GLenum target,
size_t levels,
GLenum internalFormat,
const gl::Extents &size)
{
ASSERT(GL_TEXTURE_2D && size.depth == 1);
......@@ -1442,7 +1467,8 @@ void TextureD3D_2D::markAllImagesDirty()
mDirtyImages = true;
}
gl::Error TextureD3D_2D::setStorageMultisample(GLenum target,
gl::Error TextureD3D_2D::setStorageMultisample(ContextImpl *contextImpl,
GLenum target,
GLsizei samples,
GLint internalFormat,
const gl::Extents &size,
......@@ -1519,8 +1545,15 @@ gl::Error TextureD3D_Cube::setEGLImageTarget(GLenum target, egl::Image *image)
return gl::Error(GL_INVALID_OPERATION);
}
gl::Error TextureD3D_Cube::setImage(GLenum target, size_t level, GLenum internalFormat, const gl::Extents &size, GLenum format, GLenum type,
const gl::PixelUnpackState &unpack, const uint8_t *pixels)
gl::Error TextureD3D_Cube::setImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
GLenum format,
GLenum type,
const gl::PixelUnpackState &unpack,
const uint8_t *pixels)
{
ASSERT(size.depth == 1);
......@@ -1532,8 +1565,14 @@ gl::Error TextureD3D_Cube::setImage(GLenum target, size_t level, GLenum internal
return setImageImpl(index, type, unpack, pixels, 0);
}
gl::Error TextureD3D_Cube::setSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format, GLenum type,
const gl::PixelUnpackState &unpack, const uint8_t *pixels)
gl::Error TextureD3D_Cube::setSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
GLenum type,
const gl::PixelUnpackState &unpack,
const uint8_t *pixels)
{
ASSERT(area.depth == 1 && area.z == 0);
......@@ -1541,8 +1580,14 @@ gl::Error TextureD3D_Cube::setSubImage(GLenum target, size_t level, const gl::Bo
return TextureD3D::subImage(index, area, format, type, unpack, pixels, 0);
}
gl::Error TextureD3D_Cube::setCompressedImage(GLenum target, size_t level, GLenum internalFormat, const gl::Extents &size,
const gl::PixelUnpackState &unpack, size_t imageSize, const uint8_t *pixels)
gl::Error TextureD3D_Cube::setCompressedImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
const gl::PixelUnpackState &unpack,
size_t imageSize,
const uint8_t *pixels)
{
ASSERT(size.depth == 1);
......@@ -1555,8 +1600,14 @@ gl::Error TextureD3D_Cube::setCompressedImage(GLenum target, size_t level, GLenu
return setCompressedImageImpl(index, unpack, pixels, 0);
}
gl::Error TextureD3D_Cube::setCompressedSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format,
const gl::PixelUnpackState &unpack, size_t imageSize, const uint8_t *pixels)
gl::Error TextureD3D_Cube::setCompressedSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
const gl::PixelUnpackState &unpack,
size_t imageSize,
const uint8_t *pixels)
{
ASSERT(area.depth == 1 && area.z == 0);
......@@ -1566,7 +1617,8 @@ gl::Error TextureD3D_Cube::setCompressedSubImage(GLenum target, size_t level, co
return commitRegion(index, area);
}
gl::Error TextureD3D_Cube::copyImage(GLenum target,
gl::Error TextureD3D_Cube::copyImage(ContextImpl *contextImpl,
GLenum target,
size_t imageLevel,
const gl::Rectangle &sourceArea,
GLenum internalFormat,
......@@ -1608,7 +1660,8 @@ gl::Error TextureD3D_Cube::copyImage(GLenum target,
return gl::NoError();
}
gl::Error TextureD3D_Cube::copySubImage(GLenum target,
gl::Error TextureD3D_Cube::copySubImage(ContextImpl *contextImpl,
GLenum target,
size_t imageLevel,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
......@@ -1647,7 +1700,11 @@ gl::Error TextureD3D_Cube::copySubImage(GLenum target,
return gl::NoError();
}
gl::Error TextureD3D_Cube::setStorage(GLenum target, size_t levels, GLenum internalFormat, const gl::Extents &size)
gl::Error TextureD3D_Cube::setStorage(ContextImpl *contextImpl,
GLenum target,
size_t levels,
GLenum internalFormat,
const gl::Extents &size)
{
ASSERT(size.width == size.height);
ASSERT(size.depth == 1);
......@@ -2068,7 +2125,8 @@ gl::Error TextureD3D_3D::setEGLImageTarget(GLenum target, egl::Image *image)
return gl::Error(GL_INVALID_OPERATION);
}
gl::Error TextureD3D_3D::setImage(GLenum target,
gl::Error TextureD3D_3D::setImage(ContextImpl *contextImpl,
GLenum target,
size_t imageLevel,
GLenum internalFormat,
const gl::Extents &size,
......@@ -2113,7 +2171,8 @@ gl::Error TextureD3D_3D::setImage(GLenum target,
return gl::NoError();
}
gl::Error TextureD3D_3D::setSubImage(GLenum target,
gl::Error TextureD3D_3D::setSubImage(ContextImpl *contextImpl,
GLenum target,
size_t imageLevel,
const gl::Box &area,
GLenum format,
......@@ -2141,7 +2200,8 @@ gl::Error TextureD3D_3D::setSubImage(GLenum target,
}
}
gl::Error TextureD3D_3D::setCompressedImage(GLenum target,
gl::Error TextureD3D_3D::setCompressedImage(ContextImpl *contextImpl,
GLenum target,
size_t imageLevel,
GLenum internalFormat,
const gl::Extents &size,
......@@ -2159,8 +2219,14 @@ gl::Error TextureD3D_3D::setCompressedImage(GLenum target,
return setCompressedImageImpl(index, unpack, pixels, 0);
}
gl::Error TextureD3D_3D::setCompressedSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format,
const gl::PixelUnpackState &unpack, size_t imageSize, const uint8_t *pixels)
gl::Error TextureD3D_3D::setCompressedSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
const gl::PixelUnpackState &unpack,
size_t imageSize,
const uint8_t *pixels)
{
ASSERT(target == GL_TEXTURE_3D);
......@@ -2169,14 +2235,19 @@ gl::Error TextureD3D_3D::setCompressedSubImage(GLenum target, size_t level, cons
return commitRegion(index, area);
}
gl::Error TextureD3D_3D::copyImage(GLenum target, size_t level, const gl::Rectangle &sourceArea, GLenum internalFormat,
gl::Error TextureD3D_3D::copyImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Rectangle &sourceArea,
GLenum internalFormat,
const gl::Framebuffer *source)
{
UNIMPLEMENTED();
return gl::Error(GL_INVALID_OPERATION, "Copying 3D textures is unimplemented.");
}
gl::Error TextureD3D_3D::copySubImage(GLenum target,
gl::Error TextureD3D_3D::copySubImage(ContextImpl *contextImpl,
GLenum target,
size_t imageLevel,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
......@@ -2207,7 +2278,11 @@ gl::Error TextureD3D_3D::copySubImage(GLenum target,
return gl::NoError();
}
gl::Error TextureD3D_3D::setStorage(GLenum target, size_t levels, GLenum internalFormat, const gl::Extents &size)
gl::Error TextureD3D_3D::setStorage(ContextImpl *contextImpl,
GLenum target,
size_t levels,
GLenum internalFormat,
const gl::Extents &size)
{
ASSERT(target == GL_TEXTURE_3D);
......@@ -2565,7 +2640,8 @@ gl::Error TextureD3D_2DArray::setEGLImageTarget(GLenum target, egl::Image *image
return gl::Error(GL_INVALID_OPERATION);
}
gl::Error TextureD3D_2DArray::setImage(GLenum target,
gl::Error TextureD3D_2DArray::setImage(ContextImpl *contextImpl,
GLenum target,
size_t imageLevel,
GLenum internalFormat,
const gl::Extents &size,
......@@ -2597,7 +2673,8 @@ gl::Error TextureD3D_2DArray::setImage(GLenum target,
return gl::NoError();
}
gl::Error TextureD3D_2DArray::setSubImage(GLenum target,
gl::Error TextureD3D_2DArray::setSubImage(ContextImpl *contextImpl,
GLenum target,
size_t imageLevel,
const gl::Box &area,
GLenum format,
......@@ -2628,7 +2705,8 @@ gl::Error TextureD3D_2DArray::setSubImage(GLenum target,
return gl::NoError();
}
gl::Error TextureD3D_2DArray::setCompressedImage(GLenum target,
gl::Error TextureD3D_2DArray::setCompressedImage(ContextImpl *contextImpl,
GLenum target,
size_t imageLevel,
GLenum internalFormat,
const gl::Extents &size,
......@@ -2659,8 +2737,14 @@ gl::Error TextureD3D_2DArray::setCompressedImage(GLenum target,
return gl::NoError();
}
gl::Error TextureD3D_2DArray::setCompressedSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format,
const gl::PixelUnpackState &unpack, size_t imageSize, const uint8_t *pixels)
gl::Error TextureD3D_2DArray::setCompressedSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
const gl::PixelUnpackState &unpack,
size_t imageSize,
const uint8_t *pixels)
{
ASSERT(target == GL_TEXTURE_2D_ARRAY);
......@@ -2686,14 +2770,19 @@ gl::Error TextureD3D_2DArray::setCompressedSubImage(GLenum target, size_t level,
return gl::NoError();
}
gl::Error TextureD3D_2DArray::copyImage(GLenum target, size_t level, const gl::Rectangle &sourceArea, GLenum internalFormat,
gl::Error TextureD3D_2DArray::copyImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Rectangle &sourceArea,
GLenum internalFormat,
const gl::Framebuffer *source)
{
UNIMPLEMENTED();
return gl::Error(GL_INVALID_OPERATION, "Copying 2D array textures is unimplemented.");
}
gl::Error TextureD3D_2DArray::copySubImage(GLenum target,
gl::Error TextureD3D_2DArray::copySubImage(ContextImpl *contextImpl,
GLenum target,
size_t imageLevel,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
......@@ -2727,7 +2816,11 @@ gl::Error TextureD3D_2DArray::copySubImage(GLenum target,
return gl::NoError();
}
gl::Error TextureD3D_2DArray::setStorage(GLenum target, size_t levels, GLenum internalFormat, const gl::Extents &size)
gl::Error TextureD3D_2DArray::setStorage(ContextImpl *contextImpl,
GLenum target,
size_t levels,
GLenum internalFormat,
const gl::Extents &size)
{
ASSERT(target == GL_TEXTURE_2D_ARRAY);
......@@ -3108,7 +3201,8 @@ GLsizei TextureD3D_External::getLayerCount(int level) const
return 1;
}
gl::Error TextureD3D_External::setImage(GLenum target,
gl::Error TextureD3D_External::setImage(ContextImpl *contextImpl,
GLenum target,
size_t imageLevel,
GLenum internalFormat,
const gl::Extents &size,
......@@ -3122,7 +3216,8 @@ gl::Error TextureD3D_External::setImage(GLenum target,
return gl::Error(GL_INVALID_OPERATION);
}
gl::Error TextureD3D_External::setSubImage(GLenum target,
gl::Error TextureD3D_External::setSubImage(ContextImpl *contextImpl,
GLenum target,
size_t imageLevel,
const gl::Box &area,
GLenum format,
......@@ -3134,7 +3229,8 @@ gl::Error TextureD3D_External::setSubImage(GLenum target,
return gl::Error(GL_INVALID_OPERATION);
}
gl::Error TextureD3D_External::setCompressedImage(GLenum target,
gl::Error TextureD3D_External::setCompressedImage(ContextImpl *contextImpl,
GLenum target,
size_t imageLevel,
GLenum internalFormat,
const gl::Extents &size,
......@@ -3146,7 +3242,8 @@ gl::Error TextureD3D_External::setCompressedImage(GLenum target,
return gl::Error(GL_INVALID_OPERATION);
}
gl::Error TextureD3D_External::setCompressedSubImage(GLenum target,
gl::Error TextureD3D_External::setCompressedSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
......@@ -3158,7 +3255,8 @@ gl::Error TextureD3D_External::setCompressedSubImage(GLenum target,
return gl::Error(GL_INVALID_OPERATION);
}
gl::Error TextureD3D_External::copyImage(GLenum target,
gl::Error TextureD3D_External::copyImage(ContextImpl *contextImpl,
GLenum target,
size_t imageLevel,
const gl::Rectangle &sourceArea,
GLenum internalFormat,
......@@ -3168,7 +3266,8 @@ gl::Error TextureD3D_External::copyImage(GLenum target,
return gl::Error(GL_INVALID_OPERATION);
}
gl::Error TextureD3D_External::copySubImage(GLenum target,
gl::Error TextureD3D_External::copySubImage(ContextImpl *contextImpl,
GLenum target,
size_t imageLevel,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
......@@ -3178,7 +3277,8 @@ gl::Error TextureD3D_External::copySubImage(GLenum target,
return gl::Error(GL_INVALID_OPERATION);
}
gl::Error TextureD3D_External::setStorage(GLenum target,
gl::Error TextureD3D_External::setStorage(ContextImpl *contextImpl,
GLenum target,
size_t levels,
GLenum internalFormat,
const gl::Extents &size)
......
......@@ -45,7 +45,8 @@ class TextureD3D : public TextureImpl
GLint getBaseLevelHeight() const;
GLenum getBaseLevelInternalFormat() const;
gl::Error setStorageMultisample(GLenum target,
gl::Error setStorageMultisample(ContextImpl *contextImpl,
GLenum target,
GLsizei samples,
GLint internalFormat,
const gl::Extents &size,
......@@ -66,7 +67,7 @@ class TextureD3D : public TextureImpl
virtual gl::Error setImageExternal(GLenum target,
egl::Stream *stream,
const egl::Stream::GLTextureDescription &desc) override;
gl::Error generateMipmap() override;
gl::Error generateMipmap(ContextImpl *contextImpl) override;
TextureStorage *getStorage();
ImageD3D *getBaseLevelImage() const;
......@@ -151,36 +152,75 @@ class TextureD3D_2D : public TextureD3D
GLenum getInternalFormat(GLint level) const;
bool isDepth(GLint level) const;
gl::Error setImage(GLenum target, size_t level, GLenum internalFormat, const gl::Extents &size, GLenum format, GLenum type,
const gl::PixelUnpackState &unpack, const uint8_t *pixels) override;
gl::Error setSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format, GLenum type,
const gl::PixelUnpackState &unpack, const uint8_t *pixels) override;
gl::Error setImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
GLenum format,
GLenum type,
const gl::PixelUnpackState &unpack,
const uint8_t *pixels) override;
gl::Error setSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
GLenum type,
const gl::PixelUnpackState &unpack,
const uint8_t *pixels) override;
gl::Error setCompressedImage(GLenum target, size_t level, GLenum internalFormat, const gl::Extents &size,
const gl::PixelUnpackState &unpack, size_t imageSize, const uint8_t *pixels) override;
gl::Error setCompressedSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format,
const gl::PixelUnpackState &unpack, size_t imageSize, const uint8_t *pixels) override;
gl::Error setCompressedImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
const gl::PixelUnpackState &unpack,
size_t imageSize,
const uint8_t *pixels) override;
gl::Error setCompressedSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
const gl::PixelUnpackState &unpack,
size_t imageSize,
const uint8_t *pixels) override;
gl::Error copyImage(GLenum target, size_t level, const gl::Rectangle &sourceArea, GLenum internalFormat,
gl::Error copyImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Rectangle &sourceArea,
GLenum internalFormat,
const gl::Framebuffer *source) override;
gl::Error copySubImage(GLenum target, size_t level, const gl::Offset &destOffset, const gl::Rectangle &sourceArea,
gl::Error copySubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
const gl::Framebuffer *source) override;
gl::Error copyTexture(GLenum internalFormat,
gl::Error copyTexture(ContextImpl *contextImpl,
GLenum internalFormat,
GLenum type,
bool unpackFlipY,
bool unpackPremultiplyAlpha,
bool unpackUnmultiplyAlpha,
const gl::Texture *source) override;
gl::Error copySubTexture(const gl::Offset &destOffset,
gl::Error copySubTexture(ContextImpl *contextImpl,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
bool unpackFlipY,
bool unpackPremultiplyAlpha,
bool unpackUnmultiplyAlpha,
const gl::Texture *source) override;
gl::Error copyCompressedTexture(const gl::Texture *source) override;
gl::Error copyCompressedTexture(ContextImpl *contextImpl, const gl::Texture *source) override;
gl::Error setStorage(GLenum target, size_t levels, GLenum internalFormat, const gl::Extents &size) override;
gl::Error setStorage(ContextImpl *contextImpl,
GLenum target,
size_t levels,
GLenum internalFormat,
const gl::Extents &size) override;
virtual void bindTexImage(egl::Surface *surface);
virtual void releaseTexImage();
......@@ -193,11 +233,12 @@ class TextureD3D_2D : public TextureD3D
virtual gl::ImageIndex getImageIndex(GLint mip, GLint layer) const;
virtual bool isValidIndex(const gl::ImageIndex &index) const;
gl::Error setStorageMultisample(GLenum target,
gl::Error setStorageMultisample(ContextImpl *contextImpl,
GLenum target,
GLsizei samples,
GLint internalFormat,
const gl::Extents &size,
GLboolean fixedSampleLocations);
GLboolean fixedSampleLocations) override;
protected:
void markAllImagesDirty() override;
......@@ -241,22 +282,59 @@ class TextureD3D_Cube : public TextureD3D
GLenum getInternalFormat(GLint level, GLint layer) const;
bool isDepth(GLint level, GLint layer) const;
gl::Error setImage(GLenum target, size_t level, GLenum internalFormat, const gl::Extents &size, GLenum format, GLenum type,
const gl::PixelUnpackState &unpack, const uint8_t *pixels) override;
gl::Error setSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format, GLenum type,
const gl::PixelUnpackState &unpack, const uint8_t *pixels) override;
gl::Error setImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
GLenum format,
GLenum type,
const gl::PixelUnpackState &unpack,
const uint8_t *pixels) override;
gl::Error setSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
GLenum type,
const gl::PixelUnpackState &unpack,
const uint8_t *pixels) override;
gl::Error setCompressedImage(GLenum target, size_t level, GLenum internalFormat, const gl::Extents &size,
const gl::PixelUnpackState &unpack, size_t imageSize, const uint8_t *pixels) override;
gl::Error setCompressedSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format,
const gl::PixelUnpackState &unpack, size_t imageSize, const uint8_t *pixels) override;
gl::Error setCompressedImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
const gl::PixelUnpackState &unpack,
size_t imageSize,
const uint8_t *pixels) override;
gl::Error setCompressedSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
const gl::PixelUnpackState &unpack,
size_t imageSize,
const uint8_t *pixels) override;
gl::Error copyImage(GLenum target, size_t level, const gl::Rectangle &sourceArea, GLenum internalFormat,
gl::Error copyImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Rectangle &sourceArea,
GLenum internalFormat,
const gl::Framebuffer *source) override;
gl::Error copySubImage(GLenum target, size_t level, const gl::Offset &destOffset, const gl::Rectangle &sourceArea,
gl::Error copySubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
const gl::Framebuffer *source) override;
gl::Error setStorage(GLenum target, size_t levels, GLenum internalFormat, const gl::Extents &size) override;
gl::Error setStorage(ContextImpl *contextImpl,
GLenum target,
size_t levels,
GLenum internalFormat,
const gl::Extents &size) override;
virtual void bindTexImage(egl::Surface *surface);
virtual void releaseTexImage();
......@@ -307,22 +385,59 @@ class TextureD3D_3D : public TextureD3D
GLenum getInternalFormat(GLint level) const;
bool isDepth(GLint level) const;
gl::Error setImage(GLenum target, size_t level, GLenum internalFormat, const gl::Extents &size, GLenum format, GLenum type,
const gl::PixelUnpackState &unpack, const uint8_t *pixels) override;
gl::Error setSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format, GLenum type,
const gl::PixelUnpackState &unpack, const uint8_t *pixels) override;
gl::Error setImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
GLenum format,
GLenum type,
const gl::PixelUnpackState &unpack,
const uint8_t *pixels) override;
gl::Error setSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
GLenum type,
const gl::PixelUnpackState &unpack,
const uint8_t *pixels) override;
gl::Error setCompressedImage(GLenum target, size_t level, GLenum internalFormat, const gl::Extents &size,
const gl::PixelUnpackState &unpack, size_t imageSize, const uint8_t *pixels) override;
gl::Error setCompressedSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format,
const gl::PixelUnpackState &unpack, size_t imageSize, const uint8_t *pixels) override;
gl::Error setCompressedImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
const gl::PixelUnpackState &unpack,
size_t imageSize,
const uint8_t *pixels) override;
gl::Error setCompressedSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
const gl::PixelUnpackState &unpack,
size_t imageSize,
const uint8_t *pixels) override;
gl::Error copyImage(GLenum target, size_t level, const gl::Rectangle &sourceArea, GLenum internalFormat,
gl::Error copyImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Rectangle &sourceArea,
GLenum internalFormat,
const gl::Framebuffer *source) override;
gl::Error copySubImage(GLenum target, size_t level, const gl::Offset &destOffset, const gl::Rectangle &sourceArea,
gl::Error copySubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
const gl::Framebuffer *source) override;
gl::Error setStorage(GLenum target, size_t levels, GLenum internalFormat, const gl::Extents &size) override;
gl::Error setStorage(ContextImpl *contextImpl,
GLenum target,
size_t levels,
GLenum internalFormat,
const gl::Extents &size) override;
virtual void bindTexImage(egl::Surface *surface);
virtual void releaseTexImage();
......@@ -372,22 +487,59 @@ class TextureD3D_2DArray : public TextureD3D
GLenum getInternalFormat(GLint level) const;
bool isDepth(GLint level) const;
gl::Error setImage(GLenum target, size_t level, GLenum internalFormat, const gl::Extents &size, GLenum format, GLenum type,
const gl::PixelUnpackState &unpack, const uint8_t *pixels) override;
gl::Error setSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format, GLenum type,
const gl::PixelUnpackState &unpack, const uint8_t *pixels) override;
gl::Error setImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
GLenum format,
GLenum type,
const gl::PixelUnpackState &unpack,
const uint8_t *pixels) override;
gl::Error setSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
GLenum type,
const gl::PixelUnpackState &unpack,
const uint8_t *pixels) override;
gl::Error setCompressedImage(GLenum target, size_t level, GLenum internalFormat, const gl::Extents &size,
const gl::PixelUnpackState &unpack, size_t imageSize, const uint8_t *pixels) override;
gl::Error setCompressedSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format,
const gl::PixelUnpackState &unpack, size_t imageSize, const uint8_t *pixels) override;
gl::Error setCompressedImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
const gl::PixelUnpackState &unpack,
size_t imageSize,
const uint8_t *pixels) override;
gl::Error setCompressedSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
const gl::PixelUnpackState &unpack,
size_t imageSize,
const uint8_t *pixels) override;
gl::Error copyImage(GLenum target, size_t level, const gl::Rectangle &sourceArea, GLenum internalFormat,
gl::Error copyImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Rectangle &sourceArea,
GLenum internalFormat,
const gl::Framebuffer *source) override;
gl::Error copySubImage(GLenum target, size_t level, const gl::Offset &destOffset, const gl::Rectangle &sourceArea,
gl::Error copySubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
const gl::Framebuffer *source) override;
gl::Error setStorage(GLenum target, size_t levels, GLenum internalFormat, const gl::Extents &size) override;
gl::Error setStorage(ContextImpl *contextImpl,
GLenum target,
size_t levels,
GLenum internalFormat,
const gl::Extents &size) override;
virtual void bindTexImage(egl::Surface *surface);
virtual void releaseTexImage();
......@@ -436,7 +588,8 @@ class TextureD3D_External : public TextureD3D
ImageD3D *getImage(const gl::ImageIndex &index) const override;
GLsizei getLayerCount(int level) const override;
gl::Error setImage(GLenum target,
gl::Error setImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
......@@ -444,7 +597,8 @@ class TextureD3D_External : public TextureD3D
GLenum type,
const gl::PixelUnpackState &unpack,
const uint8_t *pixels) override;
gl::Error setSubImage(GLenum target,
gl::Error setSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
......@@ -452,14 +606,16 @@ class TextureD3D_External : public TextureD3D
const gl::PixelUnpackState &unpack,
const uint8_t *pixels) override;
gl::Error setCompressedImage(GLenum target,
gl::Error setCompressedImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
const gl::PixelUnpackState &unpack,
size_t imageSize,
const uint8_t *pixels) override;
gl::Error setCompressedSubImage(GLenum target,
gl::Error setCompressedSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
......@@ -467,18 +623,21 @@ class TextureD3D_External : public TextureD3D
size_t imageSize,
const uint8_t *pixels) override;
gl::Error copyImage(GLenum target,
gl::Error copyImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Rectangle &sourceArea,
GLenum internalFormat,
const gl::Framebuffer *source) override;
gl::Error copySubImage(GLenum target,
gl::Error copySubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
const gl::Framebuffer *source) override;
gl::Error setStorage(GLenum target,
gl::Error setStorage(ContextImpl *contextImpl,
GLenum target,
size_t levels,
GLenum internalFormat,
const gl::Extents &size) override;
......@@ -520,7 +679,8 @@ class TextureD3D_2DMultisample : public TextureD3D
~TextureD3D_2DMultisample() override;
ImageD3D *getImage(const gl::ImageIndex &index) const override;
gl::Error setImage(GLenum target,
gl::Error setImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
......@@ -528,7 +688,8 @@ class TextureD3D_2DMultisample : public TextureD3D
GLenum type,
const gl::PixelUnpackState &unpack,
const uint8_t *pixels) override;
gl::Error setSubImage(GLenum target,
gl::Error setSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
......@@ -536,14 +697,16 @@ class TextureD3D_2DMultisample : public TextureD3D
const gl::PixelUnpackState &unpack,
const uint8_t *pixels) override;
gl::Error setCompressedImage(GLenum target,
gl::Error setCompressedImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
const gl::PixelUnpackState &unpack,
size_t imageSize,
const uint8_t *pixels) override;
gl::Error setCompressedSubImage(GLenum target,
gl::Error setCompressedSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
......@@ -551,18 +714,21 @@ class TextureD3D_2DMultisample : public TextureD3D
size_t imageSize,
const uint8_t *pixels) override;
gl::Error copyImage(GLenum target,
gl::Error copyImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Rectangle &sourceArea,
GLenum internalFormat,
const gl::Framebuffer *source) override;
gl::Error copySubImage(GLenum target,
gl::Error copySubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
const gl::Framebuffer *source) override;
gl::Error setStorage(GLenum target,
gl::Error setStorage(ContextImpl *contextImpl,
GLenum target,
size_t levels,
GLenum internalFormat,
const gl::Extents &size) override;
......
......@@ -156,7 +156,8 @@ TextureGL::~TextureGL()
mTextureID = 0;
}
gl::Error TextureGL::setImage(GLenum target,
gl::Error TextureGL::setImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
......@@ -257,8 +258,14 @@ void TextureGL::reserveTexImageToBeFilled(GLenum target,
setImageHelper(target, level, internalFormat, size, format, type, nullptr);
}
gl::Error TextureGL::setSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format, GLenum type,
const gl::PixelUnpackState &unpack, const uint8_t *pixels)
gl::Error TextureGL::setSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
GLenum type,
const gl::PixelUnpackState &unpack,
const uint8_t *pixels)
{
ASSERT(CompatibleTextureTarget(getTarget(), target));
......@@ -452,8 +459,14 @@ gl::Error TextureGL::setSubImagePaddingWorkaround(GLenum target,
return gl::NoError();
}
gl::Error TextureGL::setCompressedImage(GLenum target, size_t level, GLenum internalFormat, const gl::Extents &size,
const gl::PixelUnpackState &unpack, size_t imageSize, const uint8_t *pixels)
gl::Error TextureGL::setCompressedImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
const gl::PixelUnpackState &unpack,
size_t imageSize,
const uint8_t *pixels)
{
ASSERT(CompatibleTextureTarget(getTarget(), target));
......@@ -485,8 +498,14 @@ gl::Error TextureGL::setCompressedImage(GLenum target, size_t level, GLenum inte
return gl::NoError();
}
gl::Error TextureGL::setCompressedSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format,
const gl::PixelUnpackState &unpack, size_t imageSize, const uint8_t *pixels)
gl::Error TextureGL::setCompressedSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
const gl::PixelUnpackState &unpack,
size_t imageSize,
const uint8_t *pixels)
{
ASSERT(CompatibleTextureTarget(getTarget(), target));
......@@ -519,7 +538,11 @@ gl::Error TextureGL::setCompressedSubImage(GLenum target, size_t level, const gl
return gl::NoError();
}
gl::Error TextureGL::copyImage(GLenum target, size_t level, const gl::Rectangle &sourceArea, GLenum internalFormat,
gl::Error TextureGL::copyImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Rectangle &sourceArea,
GLenum internalFormat,
const gl::Framebuffer *source)
{
nativegl::CopyTexImageImageFormat copyTexImageFormat = nativegl::GetCopyTexImageImageFormat(
......@@ -561,7 +584,11 @@ gl::Error TextureGL::copyImage(GLenum target, size_t level, const gl::Rectangle
return gl::NoError();
}
gl::Error TextureGL::copySubImage(GLenum target, size_t level, const gl::Offset &destOffset, const gl::Rectangle &sourceArea,
gl::Error TextureGL::copySubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
const gl::Framebuffer *source)
{
const FramebufferGL *sourceFramebufferGL = GetImplAs<FramebufferGL>(source);
......@@ -604,7 +631,8 @@ gl::Error TextureGL::copySubImage(GLenum target, size_t level, const gl::Offset
return gl::NoError();
}
gl::Error TextureGL::copyTexture(GLenum internalFormat,
gl::Error TextureGL::copyTexture(ContextImpl *contextImpl,
GLenum internalFormat,
GLenum type,
bool unpackFlipY,
bool unpackPremultiplyAlpha,
......@@ -623,7 +651,8 @@ gl::Error TextureGL::copyTexture(GLenum internalFormat,
unpackPremultiplyAlpha, unpackUnmultiplyAlpha, source);
}
gl::Error TextureGL::copySubTexture(const gl::Offset &destOffset,
gl::Error TextureGL::copySubTexture(ContextImpl *contextImpl,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
bool unpackFlipY,
bool unpackPremultiplyAlpha,
......@@ -667,7 +696,8 @@ gl::Error TextureGL::copySubTextureHelper(const gl::Offset &destOffset,
unpackFlipY, unpackPremultiplyAlpha, unpackUnmultiplyAlpha);
}
gl::Error TextureGL::setStorage(GLenum target,
gl::Error TextureGL::setStorage(ContextImpl *contextImpl,
GLenum target,
size_t levels,
GLenum internalFormat,
const gl::Extents &size)
......@@ -807,7 +837,8 @@ gl::Error TextureGL::setStorage(GLenum target,
return gl::NoError();
}
gl::Error TextureGL::setStorageMultisample(GLenum target,
gl::Error TextureGL::setStorageMultisample(ContextImpl *contextImpl,
GLenum target,
GLsizei samples,
GLint internalFormat,
const gl::Extents &size,
......@@ -836,7 +867,7 @@ gl::Error TextureGL::setImageExternal(GLenum target,
return gl::Error(GL_INVALID_OPERATION);
}
gl::Error TextureGL::generateMipmap()
gl::Error TextureGL::generateMipmap(ContextImpl *contextImpl)
{
mStateManager->bindTexture(getTarget(), mTextureID);
mFunctions->generateMipmap(getTarget());
......
......@@ -59,28 +59,63 @@ class TextureGL : public TextureImpl
BlitGL *blitter);
~TextureGL() override;
gl::Error setImage(GLenum target, size_t level, GLenum internalFormat, const gl::Extents &size, GLenum format, GLenum type,
const gl::PixelUnpackState &unpack, const uint8_t *pixels) override;
gl::Error setSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format, GLenum type,
const gl::PixelUnpackState &unpack, const uint8_t *pixels) override;
gl::Error setCompressedImage(GLenum target, size_t level, GLenum internalFormat, const gl::Extents &size,
const gl::PixelUnpackState &unpack, size_t imageSize, const uint8_t *pixels) override;
gl::Error setCompressedSubImage(GLenum target, size_t level, const gl::Box &area, GLenum format,
const gl::PixelUnpackState &unpack, size_t imageSize, const uint8_t *pixels) override;
gl::Error copyImage(GLenum target, size_t level, const gl::Rectangle &sourceArea, GLenum internalFormat,
gl::Error setImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
GLenum format,
GLenum type,
const gl::PixelUnpackState &unpack,
const uint8_t *pixels) override;
gl::Error setSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
GLenum type,
const gl::PixelUnpackState &unpack,
const uint8_t *pixels) override;
gl::Error setCompressedImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
const gl::PixelUnpackState &unpack,
size_t imageSize,
const uint8_t *pixels) override;
gl::Error setCompressedSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
const gl::PixelUnpackState &unpack,
size_t imageSize,
const uint8_t *pixels) override;
gl::Error copyImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Rectangle &sourceArea,
GLenum internalFormat,
const gl::Framebuffer *source) override;
gl::Error copySubImage(GLenum target, size_t level, const gl::Offset &destOffset, const gl::Rectangle &sourceArea,
gl::Error copySubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
const gl::Framebuffer *source) override;
gl::Error copyTexture(GLenum internalFormat,
gl::Error copyTexture(ContextImpl *contextImpl,
GLenum internalFormat,
GLenum type,
bool unpackFlipY,
bool unpackPremultiplyAlpha,
bool unpackUnmultiplyAlpha,
const gl::Texture *source) override;
gl::Error copySubTexture(const gl::Offset &destOffset,
gl::Error copySubTexture(ContextImpl *contextImpl,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
bool unpackFlipY,
bool unpackPremultiplyAlpha,
......@@ -94,9 +129,14 @@ class TextureGL : public TextureImpl
bool unpackUnmultiplyAlpha,
const gl::Texture *source);
gl::Error setStorage(GLenum target, size_t levels, GLenum internalFormat, const gl::Extents &size) override;
gl::Error setStorage(ContextImpl *contextImpl,
GLenum target,
size_t levels,
GLenum internalFormat,
const gl::Extents &size) override;
gl::Error setStorageMultisample(GLenum target,
gl::Error setStorageMultisample(ContextImpl *contextImpl,
GLenum target,
GLsizei samples,
GLint internalFormat,
const gl::Extents &size,
......@@ -106,7 +146,7 @@ class TextureGL : public TextureImpl
egl::Stream *stream,
const egl::Stream::GLTextureDescription &desc) override;
gl::Error generateMipmap() override;
gl::Error generateMipmap(ContextImpl *contextImpl) override;
void bindTexImage(egl::Surface *surface) override;
void releaseTexImage() override;
......
......@@ -22,7 +22,8 @@ TextureNULL::~TextureNULL()
{
}
gl::Error TextureNULL::setImage(GLenum target,
gl::Error TextureNULL::setImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
......@@ -36,7 +37,8 @@ gl::Error TextureNULL::setImage(GLenum target,
return gl::NoError();
}
gl::Error TextureNULL::setSubImage(GLenum target,
gl::Error TextureNULL::setSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
......@@ -47,7 +49,8 @@ gl::Error TextureNULL::setSubImage(GLenum target,
return gl::NoError();
}
gl::Error TextureNULL::setCompressedImage(GLenum target,
gl::Error TextureNULL::setCompressedImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
......@@ -58,7 +61,8 @@ gl::Error TextureNULL::setCompressedImage(GLenum target,
return gl::NoError();
}
gl::Error TextureNULL::setCompressedSubImage(GLenum target,
gl::Error TextureNULL::setCompressedSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
......@@ -69,7 +73,8 @@ gl::Error TextureNULL::setCompressedSubImage(GLenum target,
return gl::NoError();
}
gl::Error TextureNULL::copyImage(GLenum target,
gl::Error TextureNULL::copyImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Rectangle &sourceArea,
GLenum internalFormat,
......@@ -78,7 +83,8 @@ gl::Error TextureNULL::copyImage(GLenum target,
return gl::NoError();
}
gl::Error TextureNULL::copySubImage(GLenum target,
gl::Error TextureNULL::copySubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
......@@ -87,7 +93,8 @@ gl::Error TextureNULL::copySubImage(GLenum target,
return gl::NoError();
}
gl::Error TextureNULL::setStorage(GLenum target,
gl::Error TextureNULL::setStorage(ContextImpl *contextImpl,
GLenum target,
size_t levels,
GLenum internalFormat,
const gl::Extents &size)
......@@ -107,7 +114,7 @@ gl::Error TextureNULL::setImageExternal(GLenum target,
return gl::NoError();
}
gl::Error TextureNULL::generateMipmap()
gl::Error TextureNULL::generateMipmap(ContextImpl *contextImpl)
{
return gl::NoError();
}
......@@ -128,7 +135,8 @@ void TextureNULL::syncState(const gl::Texture::DirtyBits &dirtyBits)
{
}
gl::Error TextureNULL::setStorageMultisample(GLenum target,
gl::Error TextureNULL::setStorageMultisample(ContextImpl *contextImpl,
GLenum target,
GLsizei samples,
GLint internalformat,
const gl::Extents &size,
......
......@@ -21,7 +21,8 @@ class TextureNULL : public TextureImpl
TextureNULL(const gl::TextureState &state);
~TextureNULL() override;
gl::Error setImage(GLenum target,
gl::Error setImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
......@@ -29,7 +30,8 @@ class TextureNULL : public TextureImpl
GLenum type,
const gl::PixelUnpackState &unpack,
const uint8_t *pixels) override;
gl::Error setSubImage(GLenum target,
gl::Error setSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
......@@ -37,14 +39,16 @@ class TextureNULL : public TextureImpl
const gl::PixelUnpackState &unpack,
const uint8_t *pixels) override;
gl::Error setCompressedImage(GLenum target,
gl::Error setCompressedImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
const gl::PixelUnpackState &unpack,
size_t imageSize,
const uint8_t *pixels) override;
gl::Error setCompressedSubImage(GLenum target,
gl::Error setCompressedSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
......@@ -52,18 +56,21 @@ class TextureNULL : public TextureImpl
size_t imageSize,
const uint8_t *pixels) override;
gl::Error copyImage(GLenum target,
gl::Error copyImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Rectangle &sourceArea,
GLenum internalFormat,
const gl::Framebuffer *source) override;
gl::Error copySubImage(GLenum target,
gl::Error copySubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
const gl::Framebuffer *source) override;
gl::Error setStorage(GLenum target,
gl::Error setStorage(ContextImpl *contextImpl,
GLenum target,
size_t levels,
GLenum internalFormat,
const gl::Extents &size) override;
......@@ -74,7 +81,7 @@ class TextureNULL : public TextureImpl
egl::Stream *stream,
const egl::Stream::GLTextureDescription &desc) override;
gl::Error generateMipmap() override;
gl::Error generateMipmap(ContextImpl *contextImpl) override;
void setBaseLevel(GLuint baseLevel) override;
......@@ -83,7 +90,8 @@ class TextureNULL : public TextureImpl
void syncState(const gl::Texture::DirtyBits &dirtyBits) override;
gl::Error setStorageMultisample(GLenum target,
gl::Error setStorageMultisample(ContextImpl *contextImpl,
GLenum target,
GLsizei samples,
GLint internalformat,
const gl::Extents &size,
......
......@@ -22,7 +22,8 @@ TextureVk::~TextureVk()
{
}
gl::Error TextureVk::setImage(GLenum target,
gl::Error TextureVk::setImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
......@@ -35,7 +36,8 @@ gl::Error TextureVk::setImage(GLenum target,
return gl::Error(GL_INVALID_OPERATION);
}
gl::Error TextureVk::setSubImage(GLenum target,
gl::Error TextureVk::setSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
......@@ -47,7 +49,8 @@ gl::Error TextureVk::setSubImage(GLenum target,
return gl::Error(GL_INVALID_OPERATION);
}
gl::Error TextureVk::setCompressedImage(GLenum target,
gl::Error TextureVk::setCompressedImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
......@@ -59,7 +62,8 @@ gl::Error TextureVk::setCompressedImage(GLenum target,
return gl::Error(GL_INVALID_OPERATION);
}
gl::Error TextureVk::setCompressedSubImage(GLenum target,
gl::Error TextureVk::setCompressedSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
......@@ -71,7 +75,8 @@ gl::Error TextureVk::setCompressedSubImage(GLenum target,
return gl::Error(GL_INVALID_OPERATION);
}
gl::Error TextureVk::copyImage(GLenum target,
gl::Error TextureVk::copyImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Rectangle &sourceArea,
GLenum internalFormat,
......@@ -81,7 +86,8 @@ gl::Error TextureVk::copyImage(GLenum target,
return gl::Error(GL_INVALID_OPERATION);
}
gl::Error TextureVk::copySubImage(GLenum target,
gl::Error TextureVk::copySubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
......@@ -91,7 +97,8 @@ gl::Error TextureVk::copySubImage(GLenum target,
return gl::Error(GL_INVALID_OPERATION);
}
gl::Error TextureVk::setStorage(GLenum target,
gl::Error TextureVk::setStorage(ContextImpl *contextImpl,
GLenum target,
size_t levels,
GLenum internalFormat,
const gl::Extents &size)
......@@ -114,7 +121,7 @@ gl::Error TextureVk::setImageExternal(GLenum target,
return gl::Error(GL_INVALID_OPERATION);
}
gl::Error TextureVk::generateMipmap()
gl::Error TextureVk::generateMipmap(ContextImpl *contextImpl)
{
UNIMPLEMENTED();
return gl::Error(GL_INVALID_OPERATION);
......@@ -147,7 +154,8 @@ void TextureVk::syncState(const gl::Texture::DirtyBits &dirtyBits)
UNIMPLEMENTED();
}
gl::Error TextureVk::setStorageMultisample(GLenum target,
gl::Error TextureVk::setStorageMultisample(ContextImpl *contextImpl,
GLenum target,
GLsizei samples,
GLint internalformat,
const gl::Extents &size,
......
......@@ -21,7 +21,8 @@ class TextureVk : public TextureImpl
TextureVk(const gl::TextureState &state);
~TextureVk() override;
gl::Error setImage(GLenum target,
gl::Error setImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
......@@ -29,7 +30,8 @@ class TextureVk : public TextureImpl
GLenum type,
const gl::PixelUnpackState &unpack,
const uint8_t *pixels) override;
gl::Error setSubImage(GLenum target,
gl::Error setSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
......@@ -37,14 +39,16 @@ class TextureVk : public TextureImpl
const gl::PixelUnpackState &unpack,
const uint8_t *pixels) override;
gl::Error setCompressedImage(GLenum target,
gl::Error setCompressedImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
GLenum internalFormat,
const gl::Extents &size,
const gl::PixelUnpackState &unpack,
size_t imageSize,
const uint8_t *pixels) override;
gl::Error setCompressedSubImage(GLenum target,
gl::Error setCompressedSubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Box &area,
GLenum format,
......@@ -52,18 +56,21 @@ class TextureVk : public TextureImpl
size_t imageSize,
const uint8_t *pixels) override;
gl::Error copyImage(GLenum target,
gl::Error copyImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Rectangle &sourceArea,
GLenum internalFormat,
const gl::Framebuffer *source) override;
gl::Error copySubImage(GLenum target,
gl::Error copySubImage(ContextImpl *contextImpl,
GLenum target,
size_t level,
const gl::Offset &destOffset,
const gl::Rectangle &sourceArea,
const gl::Framebuffer *source) override;
gl::Error setStorage(GLenum target,
gl::Error setStorage(ContextImpl *contextImpl,
GLenum target,
size_t levels,
GLenum internalFormat,
const gl::Extents &size) override;
......@@ -74,7 +81,7 @@ class TextureVk : public TextureImpl
egl::Stream *stream,
const egl::Stream::GLTextureDescription &desc) override;
gl::Error generateMipmap() override;
gl::Error generateMipmap(ContextImpl *contextImpl) override;
void setBaseLevel(GLuint baseLevel) override;
......@@ -86,7 +93,8 @@ class TextureVk : public TextureImpl
void syncState(const gl::Texture::DirtyBits &dirtyBits) override;
gl::Error setStorageMultisample(GLenum target,
gl::Error setStorageMultisample(ContextImpl *contextImpl,
GLenum target,
GLsizei samples,
GLint internalformat,
const gl::Extents &size,
......
......@@ -80,12 +80,12 @@ TEST(ValidationESTest, DrawElementsWithMaxIndexGivesError)
NiceMock<MockTextureImpl> *textureImpl = new NiceMock<MockTextureImpl>();
EXPECT_CALL(mockFactory, createTexture(_)).WillOnce(Return(textureImpl));
EXPECT_CALL(*textureImpl, setStorage(_, _, _, _)).WillOnce(Return(NoError()));
EXPECT_CALL(*textureImpl, setStorage(_, _, _, _, _)).WillOnce(Return(NoError()));
EXPECT_CALL(*textureImpl, destructor()).Times(1).RetiresOnSaturation();
Texture *texture = new Texture(&mockFactory, 0, GL_TEXTURE_2D);
texture->addRef();
texture->setStorage(GL_TEXTURE_2D, 1, GL_RGBA8, Extents(1, 1, 0));
texture->setStorage(nullptr, GL_TEXTURE_2D, 1, GL_RGBA8, Extents(1, 1, 0));
VertexArray *vertexArray = new VertexArray(&mockFactory, 0, 1);
Framebuffer *framebuffer = new Framebuffer(caps, &mockFactory, 1);
......
......@@ -649,7 +649,7 @@ void GL_APIENTRY TexStorage2DEXT(GLenum target, GLsizei levels, GLenum internalf
Extents size(width, height, 1);
Texture *texture = context->getTargetTexture(target);
Error error = texture->setStorage(target, levels, internalformat, size);
Error error = texture->setStorage(context, target, levels, internalformat, size);
if (error.isError())
{
context->handleError(error);
......
......@@ -2513,7 +2513,7 @@ void GL_APIENTRY TexStorage2D(GLenum target, GLsizei levels, GLenum internalform
Extents size(width, height, 1);
Texture *texture = context->getTargetTexture(target);
Error error = texture->setStorage(target, levels, internalformat, size);
Error error = texture->setStorage(context, target, levels, internalformat, size);
if (error.isError())
{
context->handleError(error);
......@@ -2545,7 +2545,7 @@ void GL_APIENTRY TexStorage3D(GLenum target, GLsizei levels, GLenum internalform
Extents size(width, height, depth);
Texture *texture = context->getTargetTexture(target);
Error error = texture->setStorage(target, levels, internalformat, size);
Error error = texture->setStorage(context, target, levels, internalformat, size);
if (error.isError())
{
context->handleError(error);
......
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