| @@ -141,6 +141,24 @@ util_format_is_depth_or_stencil(enum pipe_format format) | |||
| return desc->colorspace == UTIL_FORMAT_COLORSPACE_ZS ? TRUE : FALSE; | |||
| } | |||
| static INLINE boolean | |||
| util_format_is_depth_and_stencil(enum pipe_format format) | |||
| { | |||
| const struct util_format_description *desc = util_format_description(format); | |||
| assert(format); | |||
| if (!format) { | |||
| return FALSE; | |||
| } | |||
| if (desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS) { | |||
| return FALSE; | |||
| } | |||
| return (desc->swizzle[0] != UTIL_FORMAT_SWIZZLE_NONE && | |||
| desc->swizzle[1] != UTIL_FORMAT_SWIZZLE_NONE) ? TRUE : FALSE; | |||
| } | |||
| /* | |||
| * Format access functions. | |||
| @@ -548,13 +548,6 @@ pf_get_2d_size(const struct pipe_format_block *block, size_t stride, unsigned he | |||
| return pf_get_nblocksy(block, height)*stride; | |||
| } | |||
| static INLINE boolean | |||
| pf_is_depth_and_stencil( enum pipe_format format ) | |||
| { | |||
| return (pf_get_component_bits( format, PIPE_FORMAT_COMP_Z ) != 0 && | |||
| pf_get_component_bits( format, PIPE_FORMAT_COMP_S ) != 0); | |||
| } | |||
| enum pipe_video_chroma_format | |||
| { | |||
| PIPE_VIDEO_CHROMA_FORMAT_420, | |||
| @@ -52,6 +52,7 @@ | |||
| #include "pipe/p_inlines.h" | |||
| #include "pipe/p_state.h" | |||
| #include "pipe/p_defines.h" | |||
| #include "util/u_format.h" | |||
| #include "util/u_pack_color.h" | |||
| #include "util/u_simple_shaders.h" | |||
| #include "util/u_draw_quad.h" | |||
| @@ -341,7 +342,7 @@ static INLINE GLboolean | |||
| check_clear_depth_with_quad(GLcontext *ctx, struct gl_renderbuffer *rb) | |||
| { | |||
| const struct st_renderbuffer *strb = st_renderbuffer(rb); | |||
| const GLboolean isDS = pf_is_depth_and_stencil(strb->surface->format); | |||
| const GLboolean isDS = util_format_is_depth_and_stencil(strb->surface->format); | |||
| if (ctx->Scissor.Enabled && | |||
| (ctx->Scissor.X != 0 || | |||
| @@ -365,7 +366,7 @@ static INLINE GLboolean | |||
| check_clear_stencil_with_quad(GLcontext *ctx, struct gl_renderbuffer *rb) | |||
| { | |||
| const struct st_renderbuffer *strb = st_renderbuffer(rb); | |||
| const GLboolean isDS = pf_is_depth_and_stencil(strb->surface->format); | |||
| const GLboolean isDS = util_format_is_depth_and_stencil(strb->surface->format); | |||
| const GLuint stencilMax = 0xff; | |||
| const GLboolean maskStencil | |||
| = (ctx->Stencil.WriteMask[0] & stencilMax) != stencilMax; | |||
| @@ -63,6 +63,7 @@ | |||
| #include "tgsi/tgsi_ureg.h" | |||
| #include "util/u_tile.h" | |||
| #include "util/u_draw_quad.h" | |||
| #include "util/u_format.h" | |||
| #include "util/u_math.h" | |||
| #include "util/u_rect.h" | |||
| #include "shader/prog_instruction.h" | |||
| @@ -1083,7 +1084,7 @@ st_CopyPixels(GLcontext *ctx, GLint srcx, GLint srcy, | |||
| if (ST_DEBUG & DEBUG_FALLBACK) | |||
| debug_printf("%s: fallback processing\n", __FUNCTION__); | |||
| if (type == GL_DEPTH && pf_is_depth_and_stencil(pt->format)) | |||
| if (type == GL_DEPTH && util_format_is_depth_and_stencil(pt->format)) | |||
| transfer_usage = PIPE_TRANSFER_READ_WRITE; | |||
| else | |||
| transfer_usage = PIPE_TRANSFER_WRITE; | |||
| @@ -635,7 +635,7 @@ st_TexImage(GLcontext * ctx, | |||
| if (stImage->pt) { | |||
| if (format == GL_DEPTH_COMPONENT && | |||
| pf_is_depth_and_stencil(stImage->pt->format)) | |||
| util_format_is_depth_and_stencil(stImage->pt->format)) | |||
| transfer_usage = PIPE_TRANSFER_READ_WRITE; | |||
| else | |||
| transfer_usage = PIPE_TRANSFER_WRITE; | |||
| @@ -1042,7 +1042,7 @@ st_TexSubimage(GLcontext *ctx, GLint dims, GLenum target, GLint level, | |||
| unsigned face = _mesa_tex_target_to_face(target); | |||
| if (format == GL_DEPTH_COMPONENT && | |||
| pf_is_depth_and_stencil(stImage->pt->format)) | |||
| util_format_is_depth_and_stencil(stImage->pt->format)) | |||
| transfer_usage = PIPE_TRANSFER_READ_WRITE; | |||
| else | |||
| transfer_usage = PIPE_TRANSFER_WRITE; | |||
| @@ -1267,7 +1267,7 @@ fallback_copy_texsubimage(GLcontext *ctx, GLenum target, GLint level, | |||
| if ((baseFormat == GL_DEPTH_COMPONENT || | |||
| baseFormat == GL_DEPTH_STENCIL) && | |||
| pf_is_depth_and_stencil(stImage->pt->format)) | |||
| util_format_is_depth_and_stencil(stImage->pt->format)) | |||
| transfer_usage = PIPE_TRANSFER_READ_WRITE; | |||
| else | |||
| transfer_usage = PIPE_TRANSFER_WRITE; | |||