X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fdrivers%2Fdri%2Fintel%2Fintel_pixel.c;h=f58cb855e60bb6b03c03291b5ba82c191261e020;hb=bdf13dc8324c391b7d34f8bdaea72c4452ab7edb;hp=993e427a9927e19591da7901a1ab263f806c9885;hpb=0c75854cc1650dc870e042aa66a053e70b3d4556;p=mesa.git diff --git a/src/mesa/drivers/dri/intel/intel_pixel.c b/src/mesa/drivers/dri/intel/intel_pixel.c index 993e427a992..f58cb855e60 100644 --- a/src/mesa/drivers/dri/intel/intel_pixel.c +++ b/src/mesa/drivers/dri/intel/intel_pixel.c @@ -25,18 +25,12 @@ * **************************************************************************/ +#include "main/accum.h" #include "main/enums.h" #include "main/state.h" #include "main/bufferobj.h" #include "main/context.h" -#include "main/enable.h" -#include "main/matrix.h" -#include "main/texstate.h" -#include "main/varray.h" -#include "main/viewport.h" #include "swrast/swrast.h" -#include "shader/arbprogram.h" -#include "shader/program.h" #include "intel_context.h" #include "intel_pixel.h" @@ -45,7 +39,7 @@ #define FILE_DEBUG_FLAG DEBUG_PIXEL static GLenum -effective_func(GLenum func, GLboolean src_alpha_is_one) +effective_func(GLenum func, bool src_alpha_is_one) { if (src_alpha_is_one) { if (func == GL_SRC_ALPHA) @@ -61,116 +55,81 @@ effective_func(GLenum func, GLboolean src_alpha_is_one) * Check if any fragment operations are in effect which might effect * glDraw/CopyPixels. */ -GLboolean -intel_check_blit_fragment_ops(GLcontext * ctx, GLboolean src_alpha_is_one) +bool +intel_check_blit_fragment_ops(struct gl_context * ctx, bool src_alpha_is_one) { if (ctx->NewState) _mesa_update_state(ctx); if (ctx->FragmentProgram._Enabled) { DBG("fallback due to fragment program\n"); - return GL_FALSE; + return false; } if (ctx->Color.BlendEnabled && - (effective_func(ctx->Color.BlendSrcRGB, src_alpha_is_one) != GL_ONE || - effective_func(ctx->Color.BlendDstRGB, src_alpha_is_one) != GL_ZERO || - ctx->Color.BlendEquationRGB != GL_FUNC_ADD || - effective_func(ctx->Color.BlendSrcA, src_alpha_is_one) != GL_ONE || - effective_func(ctx->Color.BlendDstA, src_alpha_is_one) != GL_ZERO || - ctx->Color.BlendEquationA != GL_FUNC_ADD)) { + (effective_func(ctx->Color.Blend[0].SrcRGB, src_alpha_is_one) != GL_ONE || + effective_func(ctx->Color.Blend[0].DstRGB, src_alpha_is_one) != GL_ZERO || + ctx->Color.Blend[0].EquationRGB != GL_FUNC_ADD || + effective_func(ctx->Color.Blend[0].SrcA, src_alpha_is_one) != GL_ONE || + effective_func(ctx->Color.Blend[0].DstA, src_alpha_is_one) != GL_ZERO || + ctx->Color.Blend[0].EquationA != GL_FUNC_ADD)) { DBG("fallback due to blend\n"); - return GL_FALSE; + return false; } if (ctx->Texture._EnabledUnits) { DBG("fallback due to texturing\n"); - return GL_FALSE; + return false; } - if (!(ctx->Color.ColorMask[0] && - ctx->Color.ColorMask[1] && - ctx->Color.ColorMask[2] && - ctx->Color.ColorMask[3])) { + if (!(ctx->Color.ColorMask[0][0] && + ctx->Color.ColorMask[0][1] && + ctx->Color.ColorMask[0][2] && + ctx->Color.ColorMask[0][3])) { DBG("fallback due to color masking\n"); - return GL_FALSE; + return false; } if (ctx->Color.AlphaEnabled) { DBG("fallback due to alpha\n"); - return GL_FALSE; + return false; } if (ctx->Depth.Test) { DBG("fallback due to depth test\n"); - return GL_FALSE; + return false; } if (ctx->Fog.Enabled) { DBG("fallback due to fog\n"); - return GL_FALSE; + return false; } if (ctx->_ImageTransferState) { DBG("fallback due to image transfer\n"); - return GL_FALSE; + return false; } if (ctx->Stencil._Enabled) { DBG("fallback due to image stencil\n"); - return GL_FALSE; + return false; } if (ctx->RenderMode != GL_RENDER) { DBG("fallback due to render mode\n"); - return GL_FALSE; + return false; } - return GL_TRUE; -} - -/* The intel_region struct doesn't really do enough to capture the - * format of the pixels in the region. For now this code assumes that - * the region is a display surface and hence is either ARGB8888 or - * RGB565. - * XXX FBO: If we'd pass in the intel_renderbuffer instead of region, we'd - * know the buffer's pixel format. - * - * \param format as given to glDraw/ReadPixels - * \param type as given to glDraw/ReadPixels - */ -GLboolean -intel_check_blit_format(struct intel_region * region, - GLenum format, GLenum type) -{ - if (region->cpp == 4 && - (type == GL_UNSIGNED_INT_8_8_8_8_REV || - type == GL_UNSIGNED_BYTE) && format == GL_BGRA) { - return GL_TRUE; - } - - if (region->cpp == 2 && - type == GL_UNSIGNED_SHORT_5_6_5_REV && format == GL_BGR) { - return GL_TRUE; - } - - if (INTEL_DEBUG & DEBUG_PIXEL) - fprintf(stderr, "%s: bad format for blit (cpp %d, type %s format %s)\n", - __FUNCTION__, region->cpp, - _mesa_lookup_enum_by_nr(type), _mesa_lookup_enum_by_nr(format)); - - return GL_FALSE; + return true; } void intelInitPixelFuncs(struct dd_function_table *functions) { - functions->Accum = _swrast_Accum; - if (!getenv("INTEL_NO_BLIT")) { - functions->Bitmap = intelBitmap; - functions->CopyPixels = intelCopyPixels; - functions->DrawPixels = intelDrawPixels; - } + functions->Accum = _mesa_accum; + functions->Bitmap = intelBitmap; + functions->CopyPixels = intelCopyPixels; + functions->DrawPixels = intelDrawPixels; functions->ReadPixels = intelReadPixels; }