diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/state_tracker/st_cb_drawpixels.c | 128 |
1 files changed, 4 insertions, 124 deletions
diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c index 0a09e7e6f19..f666eb4ae8e 100644 --- a/src/mesa/state_tracker/st_cb_drawpixels.c +++ b/src/mesa/state_tracker/st_cb_drawpixels.c @@ -602,10 +602,9 @@ draw_textured_quad(GLcontext *ctx, GLint x, GLint y, GLfloat z, x1 = x + width * ctx->Pixel.ZoomX; y0 = (GLfloat) y; y1 = y + height * ctx->Pixel.ZoomY; - //if(!color) + draw_quad(ctx, x0, y0, z, x1, y1, color, invertTex); - //else - //printf("skip draw quad\n"); + /* restore state */ cso_restore_rasterizer(cso); cso_restore_viewport(cso); @@ -616,117 +615,6 @@ draw_textured_quad(GLcontext *ctx, GLint x, GLint y, GLfloat z, } -/** - * Check if a GL format/type combination is a match to the given pipe format. - * XXX probably move this to a re-usable place. - */ -static GLboolean -compatible_formats(GLenum format, GLenum type, enum pipe_format pipeFormat) -{ - static const GLuint one = 1; - GLubyte littleEndian = *((GLubyte *) &one); - - if (pipeFormat == PIPE_FORMAT_R8G8B8A8_UNORM && - format == GL_RGBA && - type == GL_UNSIGNED_BYTE && - !littleEndian) { - return GL_TRUE; - } - else if (pipeFormat == PIPE_FORMAT_R8G8B8A8_UNORM && - format == GL_ABGR_EXT && - type == GL_UNSIGNED_BYTE && - littleEndian) { - return GL_TRUE; - } - else if (pipeFormat == PIPE_FORMAT_A8R8G8B8_UNORM && - format == GL_BGRA && - type == GL_UNSIGNED_BYTE && - littleEndian) { - return GL_TRUE; - } - else if (pipeFormat == PIPE_FORMAT_R5G6B5_UNORM && - format == GL_RGB && - type == GL_UNSIGNED_SHORT_5_6_5) { - /* endian don't care */ - return GL_TRUE; - } - else if (pipeFormat == PIPE_FORMAT_R5G6B5_UNORM && - format == GL_BGR && - type == GL_UNSIGNED_SHORT_5_6_5_REV) { - /* endian don't care */ - return GL_TRUE; - } - else if (pipeFormat == PIPE_FORMAT_S8_UNORM && - format == GL_STENCIL_INDEX && - type == GL_UNSIGNED_BYTE) { - return GL_TRUE; - } - else if (pipeFormat == PIPE_FORMAT_Z32_UNORM && - format == GL_DEPTH_COMPONENT && - type == GL_UNSIGNED_INT) { - return GL_TRUE; - } - /* XXX add more cases */ - else { - return GL_FALSE; - } -} - - -/** - * Check if any per-fragment ops are enabled. - * XXX probably move this to a re-usable place. - */ -static GLboolean -any_fragment_ops(const struct st_context *st) -{ - if (st->state.depth_stencil.alpha.enabled || - st->state.depth_stencil.depth.enabled || - st->state.blend.blend_enable || - st->state.blend.logicop_enable) - /* XXX more checks */ - return GL_TRUE; - else - return GL_FALSE; -} - - -/** - * Check if any pixel transfer ops are enabled. - * XXX probably move this to a re-usable place. - */ -static GLboolean -any_pixel_transfer_ops(const struct st_context *st) -{ - if (st->ctx->Pixel.RedScale != 1.0 || - st->ctx->Pixel.RedBias != 0.0 || - st->ctx->Pixel.GreenScale != 1.0 || - st->ctx->Pixel.GreenBias != 0.0 || - st->ctx->Pixel.BlueScale != 1.0 || - st->ctx->Pixel.BlueBias != 0.0 || - st->ctx->Pixel.AlphaScale != 1.0 || - st->ctx->Pixel.AlphaBias != 0.0 || - st->ctx->Pixel.MapColorFlag) - /* XXX more checks */ - return GL_TRUE; - else - return GL_FALSE; -} - - -/** - * Draw image with a blit, or other non-textured quad method. - */ -static void -draw_blit(struct st_context *st, - GLsizei width, GLsizei height, - GLenum format, GLenum type, const GLvoid *pixels) -{ - - -} - - static void draw_stencil_pixels(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum type, @@ -857,10 +745,8 @@ st_DrawPixels(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height, bufferFormat = ps->format; - if (1/*any_fragment_ops(st) || - any_pixel_transfer_ops(st) || - !compatible_formats(format, type, ps->format)*/) { - /* textured quad */ + /* draw with textured quad */ + { struct pipe_texture *pt = make_texture(ctx->st, width, height, format, type, unpack, pixels); if (pt) { @@ -870,10 +756,6 @@ st_DrawPixels(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height, pipe_texture_reference(&pt, NULL); } } - else { - /* blit */ - draw_blit(st, width, height, format, type, pixels); - } _mesa_set_vp_override( ctx, FALSE ); } @@ -1099,5 +981,3 @@ st_destroy_drawpix(struct st_context *st) st_reference_vertprog(st, &st->drawpix.vert_shaders[0], NULL); st_reference_vertprog(st, &st->drawpix.vert_shaders[1], NULL); } - - |