glx: Use _mesa_lroundevenf() in glPixelStoref().
Functional change in which way half-way cases are rounded from towards positive-infinity to even. The spec says "the passed value is rounded to the nearest integer". Removes another case of bad half-up rounding.
This commit is contained in:
parent
680de24545
commit
5f247a9656
|
@ -30,6 +30,7 @@
|
||||||
|
|
||||||
#include "glxclient.h"
|
#include "glxclient.h"
|
||||||
#include "indirect.h"
|
#include "indirect.h"
|
||||||
|
#include "util/rounding.h"
|
||||||
|
|
||||||
#if !defined(__GNUC__)
|
#if !defined(__GNUC__)
|
||||||
# define __builtin_expect(x, y) x
|
# define __builtin_expect(x, y) x
|
||||||
|
@ -77,7 +78,7 @@ __indirect_glPixelStoref(GLenum pname, GLfloat param)
|
||||||
|
|
||||||
switch (pname) {
|
switch (pname) {
|
||||||
case GL_PACK_ROW_LENGTH:
|
case GL_PACK_ROW_LENGTH:
|
||||||
a = (GLuint) (param + 0.5);
|
a = _mesa_lroundevenf(param);
|
||||||
if (((GLint) a) < 0) {
|
if (((GLint) a) < 0) {
|
||||||
__glXSetError(gc, GL_INVALID_VALUE);
|
__glXSetError(gc, GL_INVALID_VALUE);
|
||||||
return;
|
return;
|
||||||
|
@ -85,7 +86,7 @@ __indirect_glPixelStoref(GLenum pname, GLfloat param)
|
||||||
state->storePack.rowLength = a;
|
state->storePack.rowLength = a;
|
||||||
break;
|
break;
|
||||||
case GL_PACK_IMAGE_HEIGHT:
|
case GL_PACK_IMAGE_HEIGHT:
|
||||||
a = (GLuint) (param + 0.5);
|
a = _mesa_lroundevenf(param);
|
||||||
if (((GLint) a) < 0) {
|
if (((GLint) a) < 0) {
|
||||||
__glXSetError(gc, GL_INVALID_VALUE);
|
__glXSetError(gc, GL_INVALID_VALUE);
|
||||||
return;
|
return;
|
||||||
|
@ -93,7 +94,7 @@ __indirect_glPixelStoref(GLenum pname, GLfloat param)
|
||||||
state->storePack.imageHeight = a;
|
state->storePack.imageHeight = a;
|
||||||
break;
|
break;
|
||||||
case GL_PACK_SKIP_ROWS:
|
case GL_PACK_SKIP_ROWS:
|
||||||
a = (GLuint) (param + 0.5);
|
a = _mesa_lroundevenf(param);
|
||||||
if (((GLint) a) < 0) {
|
if (((GLint) a) < 0) {
|
||||||
__glXSetError(gc, GL_INVALID_VALUE);
|
__glXSetError(gc, GL_INVALID_VALUE);
|
||||||
return;
|
return;
|
||||||
|
@ -101,7 +102,7 @@ __indirect_glPixelStoref(GLenum pname, GLfloat param)
|
||||||
state->storePack.skipRows = a;
|
state->storePack.skipRows = a;
|
||||||
break;
|
break;
|
||||||
case GL_PACK_SKIP_PIXELS:
|
case GL_PACK_SKIP_PIXELS:
|
||||||
a = (GLuint) (param + 0.5);
|
a = _mesa_lroundevenf(param);
|
||||||
if (((GLint) a) < 0) {
|
if (((GLint) a) < 0) {
|
||||||
__glXSetError(gc, GL_INVALID_VALUE);
|
__glXSetError(gc, GL_INVALID_VALUE);
|
||||||
return;
|
return;
|
||||||
|
@ -109,7 +110,7 @@ __indirect_glPixelStoref(GLenum pname, GLfloat param)
|
||||||
state->storePack.skipPixels = a;
|
state->storePack.skipPixels = a;
|
||||||
break;
|
break;
|
||||||
case GL_PACK_SKIP_IMAGES:
|
case GL_PACK_SKIP_IMAGES:
|
||||||
a = (GLuint) (param + 0.5);
|
a = _mesa_lroundevenf(param);
|
||||||
if (((GLint) a) < 0) {
|
if (((GLint) a) < 0) {
|
||||||
__glXSetError(gc, GL_INVALID_VALUE);
|
__glXSetError(gc, GL_INVALID_VALUE);
|
||||||
return;
|
return;
|
||||||
|
@ -117,7 +118,7 @@ __indirect_glPixelStoref(GLenum pname, GLfloat param)
|
||||||
state->storePack.skipImages = a;
|
state->storePack.skipImages = a;
|
||||||
break;
|
break;
|
||||||
case GL_PACK_ALIGNMENT:
|
case GL_PACK_ALIGNMENT:
|
||||||
a = (GLint) (param + 0.5);
|
a = _mesa_lroundevenf(param);
|
||||||
switch (a) {
|
switch (a) {
|
||||||
case 1:
|
case 1:
|
||||||
case 2:
|
case 2:
|
||||||
|
@ -138,7 +139,7 @@ __indirect_glPixelStoref(GLenum pname, GLfloat param)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GL_UNPACK_ROW_LENGTH:
|
case GL_UNPACK_ROW_LENGTH:
|
||||||
a = (GLuint) (param + 0.5);
|
a = _mesa_lroundevenf(param);
|
||||||
if (((GLint) a) < 0) {
|
if (((GLint) a) < 0) {
|
||||||
__glXSetError(gc, GL_INVALID_VALUE);
|
__glXSetError(gc, GL_INVALID_VALUE);
|
||||||
return;
|
return;
|
||||||
|
@ -146,7 +147,7 @@ __indirect_glPixelStoref(GLenum pname, GLfloat param)
|
||||||
state->storeUnpack.rowLength = a;
|
state->storeUnpack.rowLength = a;
|
||||||
break;
|
break;
|
||||||
case GL_UNPACK_IMAGE_HEIGHT:
|
case GL_UNPACK_IMAGE_HEIGHT:
|
||||||
a = (GLuint) (param + 0.5);
|
a = _mesa_lroundevenf(param);
|
||||||
if (((GLint) a) < 0) {
|
if (((GLint) a) < 0) {
|
||||||
__glXSetError(gc, GL_INVALID_VALUE);
|
__glXSetError(gc, GL_INVALID_VALUE);
|
||||||
return;
|
return;
|
||||||
|
@ -154,7 +155,7 @@ __indirect_glPixelStoref(GLenum pname, GLfloat param)
|
||||||
state->storeUnpack.imageHeight = a;
|
state->storeUnpack.imageHeight = a;
|
||||||
break;
|
break;
|
||||||
case GL_UNPACK_SKIP_ROWS:
|
case GL_UNPACK_SKIP_ROWS:
|
||||||
a = (GLuint) (param + 0.5);
|
a = _mesa_lroundevenf(param);
|
||||||
if (((GLint) a) < 0) {
|
if (((GLint) a) < 0) {
|
||||||
__glXSetError(gc, GL_INVALID_VALUE);
|
__glXSetError(gc, GL_INVALID_VALUE);
|
||||||
return;
|
return;
|
||||||
|
@ -162,7 +163,7 @@ __indirect_glPixelStoref(GLenum pname, GLfloat param)
|
||||||
state->storeUnpack.skipRows = a;
|
state->storeUnpack.skipRows = a;
|
||||||
break;
|
break;
|
||||||
case GL_UNPACK_SKIP_PIXELS:
|
case GL_UNPACK_SKIP_PIXELS:
|
||||||
a = (GLuint) (param + 0.5);
|
a = _mesa_lroundevenf(param);
|
||||||
if (((GLint) a) < 0) {
|
if (((GLint) a) < 0) {
|
||||||
__glXSetError(gc, GL_INVALID_VALUE);
|
__glXSetError(gc, GL_INVALID_VALUE);
|
||||||
return;
|
return;
|
||||||
|
@ -170,7 +171,7 @@ __indirect_glPixelStoref(GLenum pname, GLfloat param)
|
||||||
state->storeUnpack.skipPixels = a;
|
state->storeUnpack.skipPixels = a;
|
||||||
break;
|
break;
|
||||||
case GL_UNPACK_SKIP_IMAGES:
|
case GL_UNPACK_SKIP_IMAGES:
|
||||||
a = (GLuint) (param + 0.5);
|
a = _mesa_lroundevenf(param);
|
||||||
if (((GLint) a) < 0) {
|
if (((GLint) a) < 0) {
|
||||||
__glXSetError(gc, GL_INVALID_VALUE);
|
__glXSetError(gc, GL_INVALID_VALUE);
|
||||||
return;
|
return;
|
||||||
|
@ -178,7 +179,7 @@ __indirect_glPixelStoref(GLenum pname, GLfloat param)
|
||||||
state->storeUnpack.skipImages = a;
|
state->storeUnpack.skipImages = a;
|
||||||
break;
|
break;
|
||||||
case GL_UNPACK_ALIGNMENT:
|
case GL_UNPACK_ALIGNMENT:
|
||||||
a = (GLint) (param + 0.5);
|
a = _mesa_lroundevenf(param);
|
||||||
switch (a) {
|
switch (a) {
|
||||||
case 1:
|
case 1:
|
||||||
case 2:
|
case 2:
|
||||||
|
|
Loading…
Reference in New Issue