Commit c7b05103 by Alexis Hetu Committed by Alexis Hétu

Pixel store parameters

Adding the missing pixel store parameters needed to use some tests. Added the UnpackInfo structure to minimize function signature changes while sending all unpack parameters to loadImageData(). Change-Id: I86b660697ae726f902923066a9defe6d3a88860f Reviewed-on: https://swiftshader-review.googlesource.com/2943Tested-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarNicolas Capens <capn@google.com>
parent 8216de9b
......@@ -130,7 +130,19 @@ public:
unlockExternal();
}
void loadImageData(GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint unpackAlignment, const void *input);
struct UnpackInfo
{
UnpackInfo() : alignment(4), rowLength(0), imageHeight(0), skipPixels(0), skipRows(0), skipImages(0) {}
GLint alignment;
GLint rowLength;
GLint imageHeight;
GLint skipPixels;
GLint skipRows;
GLint skipImages;
};
void loadImageData(GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const UnpackInfo& unpackInfo, const void *input);
void loadCompressedData(GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei imageSize, const void *pixels);
static sw::Format selectInternalFormat(GLenum format, GLenum type);
......@@ -162,7 +174,7 @@ protected:
virtual ~Image();
void loadD24S8ImageData(GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, int inputPitch, const void *input, void *buffer);
void loadD24S8ImageData(GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, int inputPitch, int inputHeight, const void *input, void *buffer);
};
#ifdef __ANDROID__
......
......@@ -217,7 +217,9 @@ void Texture::setImage(GLenum format, GLenum type, GLint unpackAlignment, const
{
if(pixels && image)
{
image->loadImageData(0, 0, 0, image->getWidth(), image->getHeight(), 1, format, type, unpackAlignment, pixels);
egl::Image::UnpackInfo unpackInfo;
unpackInfo.alignment = unpackAlignment;
image->loadImageData(0, 0, 0, image->getWidth(), image->getHeight(), 1, format, type, unpackInfo, pixels);
}
}
......@@ -253,7 +255,9 @@ void Texture::subImage(GLint xoffset, GLint yoffset, GLsizei width, GLsizei heig
if(pixels)
{
image->loadImageData(xoffset, yoffset, 0, width, height, 1, format, type, unpackAlignment, pixels);
egl::Image::UnpackInfo unpackInfo;
unpackInfo.alignment = unpackAlignment;
image->loadImageData(xoffset, yoffset, 0, width, height, 1, format, type, unpackInfo, pixels);
}
}
......
......@@ -162,7 +162,15 @@ Context::Context(const egl::Config *config, const Context *shareContext, EGLint
mState.currentProgram = 0;
mState.packAlignment = 4;
mState.unpackAlignment = 4;
mState.unpackInfo.alignment = 4;
mState.packRowLength = 0;
mState.packSkipPixels = 0;
mState.packSkipRows = 0;
mState.unpackInfo.rowLength = 0;
mState.unpackInfo.imageHeight = 0;
mState.unpackInfo.skipPixels = 0;
mState.unpackInfo.skipRows = 0;
mState.unpackInfo.skipImages = 0;
mVertexDataManager = NULL;
mIndexDataManager = NULL;
......@@ -821,19 +829,54 @@ void Context::setPackAlignment(GLint alignment)
mState.packAlignment = alignment;
}
GLint Context::getPackAlignment() const
void Context::setUnpackAlignment(GLint alignment)
{
return mState.packAlignment;
mState.unpackInfo.alignment = alignment;
}
void Context::setUnpackAlignment(GLint alignment)
const egl::Image::UnpackInfo& Context::getUnpackInfo() const
{
return mState.unpackInfo;
}
void Context::setPackRowLength(GLint rowLength)
{
mState.packRowLength = rowLength;
}
void Context::setPackSkipPixels(GLint skipPixels)
{
mState.packSkipPixels = skipPixels;
}
void Context::setPackSkipRows(GLint skipRows)
{
mState.packSkipRows = skipRows;
}
void Context::setUnpackRowLength(GLint rowLength)
{
mState.unpackInfo.rowLength = rowLength;
}
void Context::setUnpackImageHeight(GLint imageHeight)
{
mState.unpackInfo.imageHeight = imageHeight;
}
void Context::setUnpackSkipPixels(GLint skipPixels)
{
mState.unpackAlignment = alignment;
mState.unpackInfo.skipPixels = skipPixels;
}
GLint Context::getUnpackAlignment() const
void Context::setUnpackSkipRows(GLint skipRows)
{
return mState.unpackAlignment;
mState.unpackInfo.skipRows = skipRows;
}
void Context::setUnpackSkipImages(GLint skipImages)
{
mState.unpackInfo.skipImages = skipImages;
}
GLuint Context::createBuffer()
......@@ -1752,7 +1795,7 @@ template<typename T> bool Context::getIntegerv(GLenum pname, T *params) const
case GL_RENDERBUFFER_BINDING: *params = mState.renderbuffer.name(); break;
case GL_CURRENT_PROGRAM: *params = mState.currentProgram; break;
case GL_PACK_ALIGNMENT: *params = mState.packAlignment; break;
case GL_UNPACK_ALIGNMENT: *params = mState.unpackAlignment; break;
case GL_UNPACK_ALIGNMENT: *params = mState.unpackInfo.alignment; break;
case GL_GENERATE_MIPMAP_HINT: *params = mState.generateMipmapHint; break;
case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES: *params = mState.fragmentShaderDerivativeHint; break;
case GL_ACTIVE_TEXTURE: *params = (mState.activeSampler + GL_TEXTURE0); break;
......@@ -2113,16 +2156,13 @@ template<typename T> bool Context::getIntegerv(GLenum pname, T *params) const
*params = 0;
break;
case GL_PACK_ROW_LENGTH: // integer, initially 0
UNIMPLEMENTED();
*params = 0;
*params = mState.packRowLength;
break;
case GL_PACK_SKIP_PIXELS: // integer, initially 0
UNIMPLEMENTED();
*params = 0;
*params = mState.packSkipPixels;
break;
case GL_PACK_SKIP_ROWS: // integer, initially 0
UNIMPLEMENTED();
*params = 0;
*params = mState.packSkipRows;
break;
case GL_PIXEL_PACK_BUFFER_BINDING: // integer, initially 0
if(clientVersion >= 3)
......@@ -2179,24 +2219,19 @@ template<typename T> bool Context::getIntegerv(GLenum pname, T *params) const
*params = 0;
break;
case GL_UNPACK_IMAGE_HEIGHT: // integer, initially 0
UNIMPLEMENTED();
*params = 0;
*params = mState.unpackInfo.imageHeight;
break;
case GL_UNPACK_ROW_LENGTH: // integer, initially 0
UNIMPLEMENTED();
*params = 0;
*params = mState.unpackInfo.rowLength;
break;
case GL_UNPACK_SKIP_IMAGES: // integer, initially 0
UNIMPLEMENTED();
*params = 0;
*params = mState.unpackInfo.skipImages;
break;
case GL_UNPACK_SKIP_PIXELS: // integer, initially 0
UNIMPLEMENTED();
*params = 0;
*params = mState.unpackInfo.skipPixels;
break;
case GL_UNPACK_SKIP_ROWS: // integer, initially 0
UNIMPLEMENTED();
*params = 0;
*params = mState.unpackInfo.skipRows;
break;
case GL_VERTEX_ARRAY_BINDING: // GLint, initially 0
*params = getCurrentVertexArray()->name;
......@@ -3038,7 +3073,7 @@ void Context::readPixels(GLint x, GLint y, GLsizei width, GLsizei height,
}
}
GLsizei outputPitch = egl::ComputePitch(width, format, type, mState.packAlignment);
GLsizei outputPitch = (mState.packRowLength > 0) ? mState.packRowLength : egl::ComputePitch(width, format, type, mState.packAlignment);
// Sized query sanity check
if(bufSize)
......@@ -3057,6 +3092,8 @@ void Context::readPixels(GLint x, GLint y, GLsizei width, GLsizei height,
return error(GL_OUT_OF_MEMORY);
}
x += mState.packSkipPixels;
y += mState.packSkipRows;
sw::Rect rect = {x, y, x + width, y + height};
rect.clip(0, 0, renderTarget->getWidth(), renderTarget->getHeight());
......
......@@ -347,8 +347,11 @@ struct State
gl::BindingPointer<Texture> samplerTexture[TEXTURE_TYPE_COUNT][MAX_COMBINED_TEXTURE_IMAGE_UNITS];
gl::BindingPointer<Query> activeQuery[QUERY_TYPE_COUNT];
GLint unpackAlignment;
egl::Image::UnpackInfo unpackInfo;
GLint packAlignment;
GLint packRowLength;
GLint packSkipPixels;
GLint packSkipRows;
};
class Context : public egl::Context
......@@ -451,10 +454,17 @@ public:
const VertexAttributeArray &getCurrentVertexAttributes();
void setUnpackAlignment(GLint alignment);
GLint getUnpackAlignment() const;
void setUnpackRowLength(GLint rowLength);
void setUnpackImageHeight(GLint imageHeight);
void setUnpackSkipPixels(GLint skipPixels);
void setUnpackSkipRows(GLint skipRows);
void setUnpackSkipImages(GLint skipImages);
const egl::Image::UnpackInfo& getUnpackInfo() const;
void setPackAlignment(GLint alignment);
GLint getPackAlignment() const;
void setPackRowLength(GLint rowLength);
void setPackSkipPixels(GLint skipPixels);
void setPackSkipRows(GLint skipRows);
// These create and destroy methods are merely pass-throughs to
// ResourceManager, which owns these object types
......
......@@ -398,12 +398,12 @@ egl::Image *Texture::createSharedImage(GLenum target, unsigned int level)
return image;
}
void Texture::setImage(GLenum format, GLenum type, GLint unpackAlignment, const void *pixels, egl::Image *image)
void Texture::setImage(GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels, egl::Image *image)
{
if(pixels && image)
{
GLsizei depth = (getTarget() == GL_TEXTURE_3D_OES || getTarget() == GL_TEXTURE_2D_ARRAY) ? image->getDepth() : 1;
image->loadImageData(0, 0, 0, image->getWidth(), image->getHeight(), depth, format, type, unpackAlignment, pixels);
image->loadImageData(0, 0, 0, image->getWidth(), image->getHeight(), depth, format, type, unpackInfo, pixels);
}
}
......@@ -416,7 +416,7 @@ void Texture::setCompressedImage(GLsizei imageSize, const void *pixels, egl::Ima
}
}
void Texture::subImage(GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels, egl::Image *image)
void Texture::subImage(GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels, egl::Image *image)
{
if(!image)
{
......@@ -440,7 +440,7 @@ void Texture::subImage(GLint xoffset, GLint yoffset, GLint zoffset, GLsizei widt
if(pixels)
{
image->loadImageData(xoffset, yoffset, zoffset, width, height, depth, format, type, unpackAlignment, pixels);
image->loadImageData(xoffset, yoffset, zoffset, width, height, depth, format, type, unpackInfo, pixels);
}
}
......@@ -606,7 +606,7 @@ int Texture2D::getLevelCount() const
return levels;
}
void Texture2D::setImage(GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels)
void Texture2D::setImage(GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels)
{
if(image[level])
{
......@@ -620,7 +620,7 @@ void Texture2D::setImage(GLint level, GLsizei width, GLsizei height, GLenum form
return error(GL_OUT_OF_MEMORY);
}
Texture::setImage(format, type, unpackAlignment, pixels, image[level]);
Texture::setImage(format, type, unpackInfo, pixels, image[level]);
}
void Texture2D::bindTexImage(egl::Surface *surface)
......@@ -688,9 +688,9 @@ void Texture2D::setCompressedImage(GLint level, GLenum format, GLsizei width, GL
Texture::setCompressedImage(imageSize, pixels, image[level]);
}
void Texture2D::subImage(GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels)
void Texture2D::subImage(GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels)
{
Texture::subImage(xoffset, yoffset, 0, width, height, 1, format, type, unpackAlignment, pixels, image[level]);
Texture::subImage(xoffset, yoffset, 0, width, height, 1, format, type, unpackInfo, pixels, image[level]);
}
void Texture2D::subImageCompressed(GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *pixels)
......@@ -1084,9 +1084,9 @@ void TextureCubeMap::setCompressedImage(GLenum target, GLint level, GLenum forma
Texture::setCompressedImage(imageSize, pixels, image[face][level]);
}
void TextureCubeMap::subImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels)
void TextureCubeMap::subImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels)
{
Texture::subImage(xoffset, yoffset, 0, width, height, 1, format, type, unpackAlignment, pixels, image[CubeFaceIndex(target)][level]);
Texture::subImage(xoffset, yoffset, 0, width, height, 1, format, type, unpackInfo, pixels, image[CubeFaceIndex(target)][level]);
}
void TextureCubeMap::subImageCompressed(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *pixels)
......@@ -1206,7 +1206,7 @@ void TextureCubeMap::releaseTexImage()
UNREACHABLE(); // Cube maps cannot have an EGL surface bound as an image
}
void TextureCubeMap::setImage(GLenum target, GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels)
void TextureCubeMap::setImage(GLenum target, GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels)
{
int face = CubeFaceIndex(target);
......@@ -1222,7 +1222,7 @@ void TextureCubeMap::setImage(GLenum target, GLint level, GLsizei width, GLsizei
return error(GL_OUT_OF_MEMORY);
}
Texture::setImage(format, type, unpackAlignment, pixels, image[face][level]);
Texture::setImage(format, type, unpackInfo, pixels, image[face][level]);
}
void TextureCubeMap::copyImage(GLenum target, GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source)
......@@ -1507,7 +1507,7 @@ int Texture3D::getLevelCount() const
return levels;
}
void Texture3D::setImage(GLint level, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels)
void Texture3D::setImage(GLint level, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels)
{
if(image[level])
{
......@@ -1521,7 +1521,7 @@ void Texture3D::setImage(GLint level, GLsizei width, GLsizei height, GLsizei dep
return error(GL_OUT_OF_MEMORY);
}
Texture::setImage(format, type, unpackAlignment, pixels, image[level]);
Texture::setImage(format, type, unpackInfo, pixels, image[level]);
}
void Texture3D::bindTexImage(egl::Surface *surface)
......@@ -1585,9 +1585,9 @@ void Texture3D::setCompressedImage(GLint level, GLenum format, GLsizei width, GL
Texture::setCompressedImage(imageSize, pixels, image[level]);
}
void Texture3D::subImage(GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels)
void Texture3D::subImage(GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels)
{
Texture::subImage(xoffset, yoffset, zoffset, width, height, format, depth, type, unpackAlignment, pixels, image[level]);
Texture::subImage(xoffset, yoffset, zoffset, width, height, format, depth, type, unpackInfo, pixels, image[level]);
}
void Texture3D::subImageCompressed(GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *pixels)
......
......@@ -121,8 +121,8 @@ public:
virtual void copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source) = 0;
protected:
void setImage(GLenum format, GLenum type, GLint unpackAlignment, const void *pixels, egl::Image *image);
void subImage(GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels, egl::Image *image);
void setImage(GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels, egl::Image *image);
void subImage(GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels, egl::Image *image);
void setCompressedImage(GLsizei imageSize, const void *pixels, egl::Image *image);
void subImageCompressed(GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *pixels, egl::Image *image);
......@@ -170,9 +170,9 @@ public:
virtual sw::Format getInternalFormat(GLenum target, GLint level) const;
virtual int getLevelCount() const;
void setImage(GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels);
void setImage(GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels);
void setCompressedImage(GLint level, GLenum format, GLsizei width, GLsizei height, GLsizei imageSize, const void *pixels);
void subImage(GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels);
void subImage(GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels);
void subImageCompressed(GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *pixels);
void copyImage(GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source);
virtual void copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source);
......@@ -228,10 +228,10 @@ public:
virtual sw::Format getInternalFormat(GLenum target, GLint level) const;
virtual int getLevelCount() const;
void setImage(GLenum target, GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels);
void setImage(GLenum target, GLint level, GLsizei width, GLsizei height, GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels);
void setCompressedImage(GLenum target, GLint level, GLenum format, GLsizei width, GLsizei height, GLsizei imageSize, const void *pixels);
void subImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels);
void subImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels);
void subImageCompressed(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *pixels);
void copyImage(GLenum target, GLint level, GLenum format, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source);
virtual void copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source);
......@@ -287,9 +287,9 @@ public:
virtual sw::Format getInternalFormat(GLenum target, GLint level) const;
virtual int getLevelCount() const;
void setImage(GLint level, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels);
void setImage(GLint level, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels);
void setCompressedImage(GLint level, GLenum format, GLsizei width, GLsizei height, GLsizei depth, GLsizei imageSize, const void *pixels);
void subImage(GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint unpackAlignment, const void *pixels);
void subImage(GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const egl::Image::UnpackInfo& unpackInfo, const void *pixels);
void subImageCompressed(GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *pixels);
void copyImage(GLint level, GLenum format, GLint x, GLint y, GLint z, GLsizei width, GLsizei height, GLsizei depth, Framebuffer *source);
void copySubImage(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height, Framebuffer *source);
......
......@@ -4364,16 +4364,89 @@ void PixelStorei(GLenum pname, GLint param)
context->setPackAlignment(param);
break;
case GL_PACK_ROW_LENGTH:
if(clientVersion >= 3)
{
if(param < 0)
{
return error(GL_INVALID_VALUE);
}
context->setPackRowLength(param);
break;
}
else return error(GL_INVALID_ENUM);
case GL_PACK_SKIP_PIXELS:
if(clientVersion >= 3)
{
if(param < 0)
{
return error(GL_INVALID_VALUE);
}
context->setPackSkipPixels(param);
break;
}
else return error(GL_INVALID_ENUM);
case GL_PACK_SKIP_ROWS:
if(clientVersion >= 3)
{
if(param < 0)
{
return error(GL_INVALID_VALUE);
}
context->setPackSkipRows(param);
break;
}
else return error(GL_INVALID_ENUM);
case GL_UNPACK_ROW_LENGTH:
if(clientVersion >= 3)
{
if(param < 0)
{
return error(GL_INVALID_VALUE);
}
context->setUnpackRowLength(param);
break;
}
else return error(GL_INVALID_ENUM);
case GL_UNPACK_IMAGE_HEIGHT:
if(clientVersion >= 3)
{
if(param < 0)
{
return error(GL_INVALID_VALUE);
}
context->setUnpackImageHeight(param);
break;
}
else return error(GL_INVALID_ENUM);
case GL_UNPACK_SKIP_PIXELS:
if(clientVersion >= 3)
{
if(param < 0)
{
return error(GL_INVALID_VALUE);
}
context->setUnpackSkipPixels(param);
break;
}
else return error(GL_INVALID_ENUM);
case GL_UNPACK_SKIP_ROWS:
case GL_UNPACK_SKIP_IMAGES:
if(clientVersion >= 3)
{
UNIMPLEMENTED();
if(param < 0)
{
return error(GL_INVALID_VALUE);
}
context->setUnpackSkipRows(param);
break;
}
else return error(GL_INVALID_ENUM);
case GL_UNPACK_SKIP_IMAGES:
if(clientVersion >= 3) {
if(param < 0)
{
return error(GL_INVALID_VALUE);
}
context->setUnpackSkipImages(param);
break;
}
else return error(GL_INVALID_ENUM);
......@@ -5498,7 +5571,7 @@ void TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width,
return error(GL_INVALID_OPERATION);
}
texture->setImage(level, width, height, format, type, context->getUnpackAlignment(), pixels);
texture->setImage(level, width, height, format, type, context->getUnpackInfo(), pixels);
}
else
{
......@@ -5509,7 +5582,7 @@ void TexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width,
return error(GL_INVALID_OPERATION);
}
texture->setImage(target, level, width, height, format, type, context->getUnpackAlignment(), pixels);
texture->setImage(target, level, width, height, format, type, context->getUnpackInfo(), pixels);
}
}
}
......@@ -5873,7 +5946,7 @@ void TexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLs
if(validateSubImageParams(false, width, height, xoffset, yoffset, target, level, format, texture))
{
texture->subImage(level, xoffset, yoffset, width, height, format, type, context->getUnpackAlignment(), pixels);
texture->subImage(level, xoffset, yoffset, width, height, format, type, context->getUnpackInfo(), pixels);
}
}
else if(es2::IsCubemapTextureTarget(target))
......@@ -5882,7 +5955,7 @@ void TexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLs
if(validateSubImageParams(false, width, height, xoffset, yoffset, target, level, format, texture))
{
texture->subImage(target, level, xoffset, yoffset, width, height, format, type, context->getUnpackAlignment(), pixels);
texture->subImage(target, level, xoffset, yoffset, width, height, format, type, context->getUnpackInfo(), pixels);
}
}
else
......@@ -6686,7 +6759,7 @@ void TexImage3DOES(GLenum target, GLint level, GLenum internalformat, GLsizei wi
return error(GL_INVALID_OPERATION);
}
texture->setImage(level, width, height, depth, internalformat, type, context->getUnpackAlignment(), pixels);
texture->setImage(level, width, height, depth, internalformat, type, context->getUnpackInfo(), pixels);
}
}
......@@ -6728,7 +6801,7 @@ void TexSubImage3DOES(GLenum target, GLint level, GLint xoffset, GLint yoffset,
if(validateSubImageParams(false, width, height, depth, xoffset, yoffset, zoffset, target, level, format, texture))
{
texture->subImage(level, xoffset, yoffset, zoffset, width, height, depth, format, type, context->getUnpackAlignment(), pixels);
texture->subImage(level, xoffset, yoffset, zoffset, width, height, depth, format, type, context->getUnpackInfo(), pixels);
}
}
}
......
......@@ -605,7 +605,7 @@ GL_APICALL void GL_APIENTRY glTexImage3D(GLenum target, GLint level, GLint inter
return error(GL_INVALID_OPERATION);
}
texture->setImage(level, width, height, depth, internalformat, type, context->getUnpackAlignment(), pixels);
texture->setImage(level, width, height, depth, internalformat, type, context->getUnpackInfo(), pixels);
}
}
......@@ -648,7 +648,7 @@ GL_APICALL void GL_APIENTRY glTexSubImage3D(GLenum target, GLint level, GLint xo
if(validateSubImageParams(false, width, height, depth, xoffset, yoffset, zoffset, target, level, format, texture))
{
texture->subImage(level, xoffset, yoffset, zoffset, width, height, depth, format, type, context->getUnpackAlignment(), pixels);
texture->subImage(level, xoffset, yoffset, zoffset, width, height, depth, format, type, context->getUnpackInfo(), pixels);
}
}
}
......@@ -3749,7 +3749,7 @@ GL_APICALL void GL_APIENTRY glTexStorage2D(GLenum target, GLsizei levels, GLenum
for(int level = 0; level < levels; ++level)
{
texture->setImage(level, width, height, internalformat, type, context->getUnpackAlignment(), NULL);
texture->setImage(level, width, height, internalformat, type, context->getUnpackInfo(), NULL);
width = std::max(1, (width / 2));
height = std::max(1, (height / 2));
}
......@@ -3768,7 +3768,7 @@ GL_APICALL void GL_APIENTRY glTexStorage2D(GLenum target, GLsizei levels, GLenum
{
for(int face = GL_TEXTURE_CUBE_MAP_POSITIVE_X; face <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z; ++face)
{
texture->setImage(face, level, width, height, internalformat, type, context->getUnpackAlignment(), NULL);
texture->setImage(face, level, width, height, internalformat, type, context->getUnpackInfo(), NULL);
}
width = std::max(1, (width / 2));
height = std::max(1, (height / 2));
......@@ -3819,7 +3819,7 @@ GL_APICALL void GL_APIENTRY glTexStorage3D(GLenum target, GLsizei levels, GLenum
for(int level = 0; level < levels; ++level)
{
texture->setImage(level, width, height, depth, internalformat, type, context->getUnpackAlignment(), NULL);
texture->setImage(level, width, height, depth, internalformat, type, context->getUnpackInfo(), NULL);
width = std::max(1, (width / 2));
height = std::max(1, (height / 2));
depth = std::max(1, (depth / 2));
......@@ -3844,7 +3844,7 @@ GL_APICALL void GL_APIENTRY glTexStorage3D(GLenum target, GLsizei levels, GLenum
{
for(int face = GL_TEXTURE_CUBE_MAP_POSITIVE_X; face <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z; ++face)
{
texture->setImage(level, width, height, depth, internalformat, type, context->getUnpackAlignment(), NULL);
texture->setImage(level, width, height, depth, internalformat, type, context->getUnpackInfo(), NULL);
}
width = std::max(1, (width / 2));
height = std::max(1, (height / 2));
......
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