summaryrefslogtreecommitdiff
path: root/src/mesa/state_tracker
diff options
context:
space:
mode:
authorBen Skeggs <skeggsb@gmail.com>2008-04-29 09:00:48 +1000
committerBen Skeggs <skeggsb@gmail.com>2008-04-29 09:00:48 +1000
commit95295081a8557f0b63cd89f387205d5abe772788 (patch)
treebbc1ee8f36fdb2d2ba34f15cf406292e1439a87d /src/mesa/state_tracker
parent480ab1b7893290505efba925ea95d3b173aa97d4 (diff)
parent059ab50c60f19fd6dd30c574644c0e4e5747a330 (diff)
Merge remote branch 'upstream/gallium-0.1' into nouveau-gallium-0.1
Diffstat (limited to 'src/mesa/state_tracker')
-rw-r--r--src/mesa/state_tracker/st_cb_drawpixels.c18
-rw-r--r--src/mesa/state_tracker/st_cb_readpixels.c3
-rw-r--r--src/mesa/state_tracker/st_cb_texture.c2
-rw-r--r--src/mesa/state_tracker/st_format.c6
4 files changed, 8 insertions, 21 deletions
diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c
index 047ea3816b..7597ea323c 100644
--- a/src/mesa/state_tracker/st_cb_drawpixels.c
+++ b/src/mesa/state_tracker/st_cb_drawpixels.c
@@ -983,22 +983,8 @@ st_CopyPixels(GLcontext *ctx, GLint srcx, GLint srcy,
else {
/* srcFormat can't be used as a texture format */
if (type == GL_DEPTH) {
- static const enum pipe_format zFormats[] = {
- PIPE_FORMAT_Z16_UNORM,
- PIPE_FORMAT_Z32_UNORM,
- PIPE_FORMAT_S8Z24_UNORM,
- PIPE_FORMAT_Z24S8_UNORM
- };
- uint i;
- texFormat = 0;
- for (i = 0; i < Elements(zFormats); i++) {
- if (screen->is_format_supported(screen, zFormats[i],
- PIPE_TEXTURE)) {
- texFormat = zFormats[i];
- break;
- }
- }
- assert(texFormat); /* XXX no depth texture formats??? */
+ texFormat = st_choose_format(pipe, GL_DEPTH_COMPONENT, PIPE_TEXTURE);
+ assert(texFormat != PIPE_FORMAT_NONE); /* XXX no depth texture formats??? */
}
else {
/* todo */
diff --git a/src/mesa/state_tracker/st_cb_readpixels.c b/src/mesa/state_tracker/st_cb_readpixels.c
index 1fef55b844..ddbe36106c 100644
--- a/src/mesa/state_tracker/st_cb_readpixels.c
+++ b/src/mesa/state_tracker/st_cb_readpixels.c
@@ -240,7 +240,8 @@ st_readpixels(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height,
const GLint dstStride = _mesa_image_row_stride(&clippedPacking, width,
format, type);
- if (strb->surface->format == PIPE_FORMAT_S8Z24_UNORM) {
+ if (strb->surface->format == PIPE_FORMAT_S8Z24_UNORM ||
+ strb->surface->format == PIPE_FORMAT_X8Z24_UNORM) {
if (format == GL_DEPTH_COMPONENT) {
for (i = 0; i < height; i++) {
GLuint ztemp[MAX_WIDTH], j;
diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c
index 005bb2e54d..3454c3e8e8 100644
--- a/src/mesa/state_tracker/st_cb_texture.c
+++ b/src/mesa/state_tracker/st_cb_texture.c
@@ -1381,7 +1381,7 @@ copy_image_data_to_texture(struct st_context *st,
st_texture_image_data(st->pipe,
stObj->pt,
stImage->face,
- stImage->level,
+ dstLevel,
stImage->base.Data,
stImage->base.RowStride,
stImage->base.RowStride *
diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c
index 3d15a03cab..8b5f84cd56 100644
--- a/src/mesa/state_tracker/st_format.c
+++ b/src/mesa/state_tracker/st_format.c
@@ -293,7 +293,7 @@ st_mesa_format_to_pipe_format(GLuint mesaFormat)
/**
* Find an RGBA format supported by the context/winsys.
*/
-static GLuint
+static enum pipe_format
default_rgba_format(struct pipe_screen *screen, uint type)
{
static const enum pipe_format colorFormats[] = {
@@ -315,7 +315,7 @@ default_rgba_format(struct pipe_screen *screen, uint type)
/**
* Search list of formats for first RGBA format with >8 bits/channel.
*/
-static GLuint
+static enum pipe_format
default_deep_rgba_format(struct pipe_screen *screen, uint type)
{
if (screen->is_format_supported(screen, PIPE_FORMAT_R16G16B16A16_SNORM, type)) {
@@ -331,7 +331,7 @@ default_deep_rgba_format(struct pipe_screen *screen, uint type)
/**
* Find an Z format supported by the context/winsys.
*/
-static GLuint
+static enum pipe_format
default_depth_format(struct pipe_screen *screen, uint type)
{
static const enum pipe_format zFormats[] = {