From d483a0007d3a25fbf565436f655fa45b4265628a Mon Sep 17 00:00:00 2001 From: marha Date: Fri, 9 Mar 2012 10:19:35 +0100 Subject: libxcb fontconfig pixman mesa git update 9 Mar 2012 --- fontconfig/doc/Makefile.am | 334 ++++++++++++++++++------------------ fontconfig/fc-case/Makefile.am | 3 + fontconfig/fc-glyphname/Makefile.am | 3 + fontconfig/fc-lang/Makefile.am | 3 + libxcb/src/xcb_in.c | 9 +- mesalib/src/glsl/loop_unroll.cpp | 48 ++++-- mesalib/src/mesa/main/pack.c | 91 ++++++++++ mesalib/src/mesa/main/pack.h | 7 + mesalib/src/mesa/main/readpix.c | 4 + mesalib/src/mesa/main/texgetimage.c | 77 +-------- pixman/configure.ac | 2 +- pixman/pixman/pixman-mmx.c | 2 +- 12 files changed, 325 insertions(+), 258 deletions(-) diff --git a/fontconfig/doc/Makefile.am b/fontconfig/doc/Makefile.am index a29ba2fff..06ec5e9ea 100644 --- a/fontconfig/doc/Makefile.am +++ b/fontconfig/doc/Makefile.am @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # # fontconfig/doc/Makefile.am # @@ -21,183 +22,188 @@ # TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR # PERFORMANCE OF THIS SOFTWARE. -DOC_SRC = $(srcdir) -DOC_MODULE = fontconfig +NULL = +EXTRA_DIST = \ + $(BUILT_DOCS) \ + $(DOC_FUNCS_FNCS) \ + $(DOC_FUNCS_SGML) \ + $(HTML_DIR)/* \ + $(SGML_FILES) \ + $(check_SCRIPTS) \ + confdir.sgml.in \ + func.sgml \ + $(NULL) +MAINTAINERCLEANFILES = \ + $(DOC_FUNCS_SGML) \ + $(NULL) +CLEANFILES = \ + $(BUILT_DOCS) \ + $(LOCAL_SGML_FILES) \ + confdir.sgml \ + func.refs \ + $(NULL) +BUILT_SOURCES = \ + $(NULL) +SUFFIXES = \ + .fncs \ + .sgml \ + .txt \ + .html \ + $(NULL) +TESTS = \ + check-missing-doc \ + $(NULL) +TESTS_ENVIRONMENT=top_srcdir=${top_srcdir} sh +# DOC2HTML = docbook2html -DOC2TXT = docbook2txt -DOC2MAN = docbook2man -DOC2PDF = docbook2pdf - -TXT = fontconfig-user.txt fontconfig-devel.txt -PDF = fontconfig-user.pdf fontconfig-devel.pdf -HTML_FILES = fontconfig-user.html +DOC2TXT = docbook2txt +DOC2MAN = docbook2man +DOC2PDF = docbook2pdf + +DOC_FUNCS_FNCS = \ + fcatomic.fncs \ + fcblanks.fncs \ + fccache.fncs \ + fccharset.fncs \ + fcconfig.fncs \ + fcconstant.fncs \ + fcdircache.fncs \ + fcfile.fncs \ + fcfontset.fncs \ + fcformat.fncs \ + fcfreetype.fncs \ + fcinit.fncs \ + fclangset.fncs \ + fcmatrix.fncs \ + fcobjectset.fncs \ + fcobjecttype.fncs \ + fcpattern.fncs \ + fcstring.fncs \ + fcstrset.fncs \ + fcvalue.fncs \ + $(NULL) +SGML_FILES = \ + $(srcdir)/fontconfig-user.sgml \ + $(srcdir)/fontconfig-devel.sgml \ + $(NULL) +LOCAL_SGML_FILES = \ + local-fontconfig-user.sgml \ + local-fontconfig-devel.sgml \ + $(NULL) + +DOC_FUNCS_SGML = $(DOC_FUNCS_FNCS:.fncs=.sgml) +BUILT_DOCS = \ + $(HTML_FILES) \ + $(PDF_FILES) \ + $(TXT_FILES) \ + $(man3_MANS) \ + $(man5_MANS) \ + $(NULL) +DOCS_DEPS = \ + $(DOC_FUNCS_SGML) \ + confdir.sgml \ + version.sgml \ + $(NULL) + +TXT_FILES = $(SGML_FILES:.sgml=.txt) +PDF_FILES = $(SGML_FILES:.sgml=.pdf) +HTML_FILES = \ + fontconfig-user.html \ + $(NULL) HTML_DIR = fontconfig-devel -SGML = fontconfig-user.sgml fontconfig-devel.sgml -FNCS_TMPL = ${DOC_SRC}/func.sgml - -DOC_FUNCS_FNCS=\ - fcatomic.fncs \ - fcblanks.fncs \ - fccache.fncs \ - fccharset.fncs \ - fcconfig.fncs \ - fcconstant.fncs \ - fcdircache.fncs \ - fcfile.fncs \ - fcfontset.fncs \ - fcformat.fncs \ - fcfreetype.fncs \ - fcinit.fncs \ - fclangset.fncs \ - fcmatrix.fncs \ - fcobjectset.fncs \ - fcobjecttype.fncs \ - fcpattern.fncs \ - fcstring.fncs \ - fcstrset.fncs \ - fcvalue.fncs - -DOC_FUNCS_SGML=\ - fcatomic.sgml \ - fcblanks.sgml \ - fccache.sgml \ - fccharset.sgml \ - fcconfig.sgml \ - fcconstant.sgml \ - fcdircache.sgml \ - fcfile.sgml \ - fcfontset.sgml \ - fcformat.sgml \ - fcfreetype.sgml \ - fcinit.sgml \ - fclangset.sgml \ - fcmatrix.sgml \ - fcobjectset.sgml \ - fcobjecttype.sgml \ - fcpattern.sgml \ - fcstring.sgml \ - fcstrset.sgml \ - fcvalue.sgml - -man5_MANS=fonts-conf.5 -man3_MANS=$(DOCMAN3) - -noinst_PROGRAMS=edit-sgml -edit_sgml_SOURCES=edit-sgml.c - -DOC_FILES=$(TXT) $(PDF) $(HTML_FILES) -LOCAL_DOCS=$(man3_MANS) $(man5_MANS) $(DOC_FILES) $(HTML_DIR)/* - -check_SCRIPTS=check-missing-doc -TESTS_ENVIRONMENT=top_srcdir=${top_srcdir} sh -TESTS=check-missing-doc - -EXTRA_DIST=$(LOCAL_DOCS) $(SGML) $(DOC_FUNCS_FNCS) $(DOC_FUNCS_SGML) $(check_SCRIPTS) func.sgml confdir.sgml.in - -SUFFIXES=.fncs .sgml .txt .html +# +noinst_PROGRAMS = \ + $(NULL) +## +edit_sgml_SOURCES = \ + edit-sgml.c \ + $(NULL) +# +check_SCRIPTS = \ + check-missing-doc \ + $(NULL) +# +man3_MANS = \ + $(DOCMAN3) \ + $(NULL) +man5_MANS = \ + fonts-conf.5 \ + $(NULL) +# +doc_DATA = \ + $(TXT_FILES) \ + $(PDF_FILES) \ + $(HTML_FILES) \ + $(NULL) +# +htmldocdir = $(docdir)/$(HTML_DIR) +htmldoc_DATA = \ + $(NULL) if USEDOCBOOK - +BUILT_SOURCES += \ + $(LOCAL_SGML_FILES) \ + func.refs \ + $(NULL) +noinst_PROGRAMS += \ + edit-sgml \ + $(NULL) +htmldoc_DATA += $(HTML_DIR)/* + +## if CROSS_COMPILING .fncs.sgml: @echo Warning: cannot rebuild $@ when cross-compiling else -.fncs.sgml: ./edit-sgml$(EXEEXT) - $(RM) $@ - ./edit-sgml$(EXEEXT) $(FNCS_TMPL) < '$<' > $*.sgml +.fncs.sgml: edit-sgml$(EXEEXT) $(srcdir)/func.sgml + -rm $@ + $(AM_V_GEN) $(builddir)/edit-sgml$(EXEEXT) $(srcdir)/func.sgml < '$<' > $*.sgml endif - -.sgml.txt: - $(RM) $@ - $(DOC2TXT) $< - -.sgml.pdf: - $(RM) $@ - $(DOC2PDF) $< - -$(man3_MANS): func.refs - -func.refs: local-fontconfig-devel.sgml $(DOC_FUNCS_SGML) version.sgml confdir.sgml - $(RM) func.refs - $(DOC2MAN) -o devel-man local-fontconfig-devel.sgml && \ - mv devel-man/manpage.refs func.refs && \ - mv devel-man/*.3 . && \ - $(RM) devel-man/manpage.* && \ - rmdir devel-man - -local-fontconfig-devel.sgml: fontconfig-devel.sgml - $(LN_S) $< $@ - -$(DOC_FUNCS_SGML): edit-sgml.c $(FNCS_TMPL) - +.sgml.txt: $(DOCS_DEPS) + -rm $@ + $(AM_V_GEN) $(DOC2TXT) $< +.sgml.pdf: $(DOCS_DEPS) + -rm $@ + $(AM_V_GEN) $(DOC2PDF) $< +.sgml.html: $(DOCS_DEPS) + -rm $@ + $(AM_V_GEN) $(DOC2HTML) -u $< > $@ +## fonts-conf.5: local-fontconfig-user.sgml version.sgml confdir.sgml - $(RM) $@ - $(DOC2MAN) local-fontconfig-user.sgml && \ + -rm $@ + $(AM_V_GEN) $(DOC2MAN) $< && \ $(RM) manpage.* - -local-fontconfig-user.sgml: fontconfig-user.sgml - $(LN_S) $< $@ - -all-local: $(LOCAL_DOCS) - -clean-local: - $(RM) $(man3_MANS) $(man5_MANS) $(DOC_FILES) func.refs - $(RM) -r $(HTML_DIR) - -MAINTAINERCLEANFILES = $(DOC_FUNCS_SGML) - -$(HTML_DIR): local-fontconfig-devel.sgml $(DOC_FUNCS_SGML) version.sgml confdir.sgml - $(RM) -r $(HTML_DIR) - $(DOC2HTML) -V '%use-id-as-filename%' -o $(HTML_DIR) local-fontconfig-devel.sgml - -fontconfig-devel.txt: local-fontconfig-devel.sgml $(DOC_FUNCS_SGML) version.sgml confdir.sgml - $(RM) $@ - $(DOC2TXT) local-fontconfig-devel.sgml - mv local-fontconfig-devel.txt $@ - -fontconfig-devel.pdf: local-fontconfig-devel.sgml $(DOC_FUNCS_SGML) version.sgml confdir.sgml - $(RM) $@ - $(top_srcdir)/missing --run $(DOC2PDF) $< && mv local-$@ $@ \ - || echo Failed to generate $@ >&2; \ - (test -f $@ || echo $(DOC2PDF) is required to generate this file >> $@) - -fontconfig-user.html: local-fontconfig-user.sgml version.sgml confdir.sgml - $(RM) $@ local-$@ $@.tmp - $(DOC2HTML) -u local-fontconfig-user.sgml > $@.tmp - -test -f local-$@ && mv local-$@ $@ - -test -f $@ || mv $@.tmp $@ - -test -f $@.tmp && $(RM) $@.tmp - -fontconfig-user.txt: local-fontconfig-user.sgml version.sgml confdir.sgml - $(RM) $@ - $(DOC2TXT) local-fontconfig-user.sgml - mv local-fontconfig-user.txt $@ - -fontconfig-user.pdf: local-fontconfig-user.sgml version.sgml confdir.sgml - $(RM) $@ - $(top_srcdir)/missing --run $(DOC2PDF) $< && mv local-$@ $@ \ - || echo Failed to generate $@ >&2; \ - (test -f $@ || echo $(DOC2PDF) is required to generate this file >> $@) - -STRIPNL=awk '{ if (NR > 1) printf ("\n"); printf ("%s", $$0); }' -confdir.sgml: ${DOC_SRC}/confdir.sgml.in - sed "s,@CONFDIR\@,${CONFDIR}," < ${DOC_SRC}/confdir.sgml.in | $(STRIPNL) > confdir.sgml - -CLEANFILES=confdir.sgml local-fontconfig-user.sgml local-fontconfig-devel.sgml - -htmldoc_DATA = $(HTML_DIR)/* - +## +$(man3_MANS): func.refs +func.refs: local-fontconfig-devel.sgml $(DOCS_DEPS) + -rm $@ + [ "x$(builddir)" != "x$(srcdir)" ] && \ + for f in $(DOC_FUNCS_SGML); do \ + $(RM) $(builddir)/$$f || :; \ + $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \ + done || : + $(AM_V_GEN) $(DOC2MAN) -o devel-man local-fontconfig-devel.sgml && \ + mv devel-man/manpage.refs func.refs && \ + mv devel-man/*.3 . && \ + $(RM) devel-man/manpage.* && \ + rmdir devel-man +confdir.sgml: $(srcdir)/confdir.sgml.in + $(AM_V_GEN) sed -e 's,@CONFDIR\@,${CONFDIR},' $< | awk '{if (NR > 1) printf("\n"); printf("%s", $$0);}' > $@ +## $(HTML_DIR)/*: $(HTML_DIR) - +$(HTML_DIR): local-fontconfig-devel.sgml $(DOCS_DEPS) + -rm -r $@ + $(AM_V_GEN) $(DOC2HTML) -V '%use-id-as-filename%' -o $@ local-fontconfig-devel.sgml +local-fontconfig-user.sgml: $(srcdir)/fontconfig-user.sgml + $(AM_V_GEN) $(LN_S) $< $@ +local-fontconfig-devel.sgml: $(srcdir)/fontconfig-devel.sgml + $(AM_V_GEN) $(LN_S) $< $@ +# +all-local: $(BUILT_DOCS) $(HTML_DIR)/* +clean-local: + -rm -r $(HTML_DIR) devel-man else - -htmldoc_DATA = $(srcdir)/$(HTML_DIR)/* - +htmldoc_DATA += $(srcdir)/$(HTML_DIR)/* all-local: clean-local: endif - -htmldocdir=$(docdir)/$(HTML_DIR) - -doc_DATA = $(DOC_FILES) - diff --git a/fontconfig/fc-case/Makefile.am b/fontconfig/fc-case/Makefile.am index 4f255fc71..de657afa8 100644 --- a/fontconfig/fc-case/Makefile.am +++ b/fontconfig/fc-case/Makefile.am @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # # $Id $ # @@ -61,4 +62,6 @@ $(ALIAS_FILES): CLEANFILES = $(ALIAS_FILES) +DISTCLEANFILES = $(TARG) + MAINTAINERCLEANFILES = $(TARG) diff --git a/fontconfig/fc-glyphname/Makefile.am b/fontconfig/fc-glyphname/Makefile.am index 3799880e5..697b5c3b9 100644 --- a/fontconfig/fc-glyphname/Makefile.am +++ b/fontconfig/fc-glyphname/Makefile.am @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # # $Id $ # @@ -54,4 +55,6 @@ $(ALIAS_FILES): CLEANFILES = $(ALIAS_FILES) +DISTCLEANFILES = $(TARG) + MAINTAINERCLEANFILES = $(TARG) diff --git a/fontconfig/fc-lang/Makefile.am b/fontconfig/fc-lang/Makefile.am index 1f662c193..d2eca5ba8 100644 --- a/fontconfig/fc-lang/Makefile.am +++ b/fontconfig/fc-lang/Makefile.am @@ -1,3 +1,4 @@ +# -*- encoding: utf-8 -*- # # $Id $ # @@ -53,6 +54,8 @@ $(ALIAS_FILES): CLEANFILES = $(ALIAS_FILES) +DISTCLEANFILES = $(TARG) + MAINTAINERCLEANFILES = $(TARG) # NOTE: diff --git a/libxcb/src/xcb_in.c b/libxcb/src/xcb_in.c index 969cfc08b..4998cdda3 100644 --- a/libxcb/src/xcb_in.c +++ b/libxcb/src/xcb_in.c @@ -51,11 +51,6 @@ #define XCB_REPLY 1 #define XCB_XGE_EVENT 35 -/* required for compiling for Win32 using MinGW */ -#ifndef MSG_WAITALL -#define MSG_WAITALL 0 -#endif - struct event_list { xcb_generic_event_t *event; struct event_list *next; @@ -269,7 +264,7 @@ static int read_block(const int fd, void *buf, const ssize_t len) int done = 0; while(done < len) { - int ret = recv(fd, ((char *) buf) + done, len - done,MSG_WAITALL); + int ret = recv(fd, ((char *) buf) + done, len - done, 0); if(ret > 0) done += ret; #ifndef _WIN32 @@ -661,7 +656,7 @@ void _xcb_in_replies_done(xcb_connection_t *c) int _xcb_in_read(xcb_connection_t *c) { - int n = recv(c->fd, c->in.queue + c->in.queue_len, sizeof(c->in.queue) - c->in.queue_len,MSG_WAITALL); + int n = recv(c->fd, c->in.queue + c->in.queue_len, sizeof(c->in.queue) - c->in.queue_len, 0); if(n > 0) c->in.queue_len += n; while(read_packet(c)) diff --git a/mesalib/src/glsl/loop_unroll.cpp b/mesalib/src/glsl/loop_unroll.cpp index d0bcaa670..3434fde62 100644 --- a/mesalib/src/glsl/loop_unroll.cpp +++ b/mesalib/src/glsl/loop_unroll.cpp @@ -50,13 +50,44 @@ is_break(ir_instruction *ir) && ((ir_loop_jump *) ir)->is_break(); } +class loop_unroll_count : public ir_hierarchical_visitor { +public: + int nodes; + bool fail; + + loop_unroll_count(exec_list *list) + { + nodes = 0; + fail = false; + + run(list); + } + + virtual ir_visitor_status visit_enter(ir_assignment *ir) + { + nodes++; + return visit_continue; + } + + virtual ir_visitor_status visit_enter(ir_expression *ir) + { + nodes++; + return visit_continue; + } + + virtual ir_visitor_status visit_enter(ir_loop *ir) + { + fail = true; + return visit_continue; + } +}; + ir_visitor_status loop_unroll_visitor::visit_leave(ir_loop *ir) { loop_variable_state *const ls = this->state->get(ir); int iterations; - unsigned ir_count; /* If we've entered a loop that hasn't been analyzed, something really, * really bad has happened. @@ -81,17 +112,10 @@ loop_unroll_visitor::visit_leave(ir_loop *ir) /* Don't try to unroll nested loops and loops with a huge body. */ - ir_count = 0; - foreach_list(node, &ir->body_instructions) { - ++ir_count; - - /* If the loop body gets to huge, do not unroll. */ - if (5*max_iterations < ir_count*iterations) - return visit_continue; - /* Do not unroll loops with child loop nodes. */ - if (((ir_instruction *) node)->as_loop()) - return visit_continue; - } + loop_unroll_count count(&ir->body_instructions); + + if (count.fail || count.nodes * iterations > (int)max_iterations * 5) + return visit_continue; if (ls->num_loop_jumps > 1) return visit_continue; diff --git a/mesalib/src/mesa/main/pack.c b/mesalib/src/mesa/main/pack.c index 41485a1bf..4d4b4a825 100644 --- a/mesalib/src/mesa/main/pack.c +++ b/mesalib/src/mesa/main/pack.c @@ -5250,3 +5250,94 @@ _mesa_unpack_image( GLuint dimensions, } } + + +/** + * If we unpack colors from a luminance surface, we'll get pixel colors + * such as (l, l, l, a). + * When we call _mesa_pack_rgba_span_float(format=GL_LUMINANCE), that + * function will compute L=R+G+B before packing. The net effect is we'll + * accidentally store luminance values = 3*l. + * This function compensates for that by converting (aka rebasing) (l,l,l,a) + * to be (l,0,0,a). + * It's a similar story for other formats such as LUMINANCE_ALPHA, ALPHA + * and INTENSITY. + * + * Finally, we also need to do this when the actual surface format does + * not match the logical surface format. For example, suppose the user + * requests a GL_LUMINANCE texture but the driver stores it as RGBA. + * Again, we'll get pixel values like (l,l,l,a). + */ +void +_mesa_rebase_rgba_float(GLuint n, GLfloat rgba[][4], GLenum baseFormat) +{ + GLuint i; + + switch (baseFormat) { + case GL_ALPHA: + for (i = 0; i < n; i++) { + rgba[i][RCOMP] = 0.0F; + rgba[i][GCOMP] = 0.0F; + rgba[i][BCOMP] = 0.0F; + } + break; + case GL_INTENSITY: + /* fall-through */ + case GL_LUMINANCE: + for (i = 0; i < n; i++) { + rgba[i][GCOMP] = 0.0F; + rgba[i][BCOMP] = 0.0F; + rgba[i][ACOMP] = 1.0F; + } + break; + case GL_LUMINANCE_ALPHA: + for (i = 0; i < n; i++) { + rgba[i][GCOMP] = 0.0F; + rgba[i][BCOMP] = 0.0F; + } + break; + default: + /* no-op */ + ; + } +} + + +/** + * As above, but GLuint components. + */ +void +_mesa_rebase_rgba_uint(GLuint n, GLuint rgba[][4], GLenum baseFormat) +{ + GLuint i; + + switch (baseFormat) { + case GL_ALPHA: + for (i = 0; i < n; i++) { + rgba[i][RCOMP] = 0; + rgba[i][GCOMP] = 0; + rgba[i][BCOMP] = 0; + } + break; + case GL_INTENSITY: + /* fall-through */ + case GL_LUMINANCE: + for (i = 0; i < n; i++) { + rgba[i][GCOMP] = 0; + rgba[i][BCOMP] = 0; + rgba[i][ACOMP] = 1; + } + break; + case GL_LUMINANCE_ALPHA: + for (i = 0; i < n; i++) { + rgba[i][GCOMP] = 0; + rgba[i][BCOMP] = 0; + } + break; + default: + /* no-op */ + ; + } +} + + diff --git a/mesalib/src/mesa/main/pack.h b/mesalib/src/mesa/main/pack.h index b1853cd59..cd49c7495 100644 --- a/mesalib/src/mesa/main/pack.h +++ b/mesalib/src/mesa/main/pack.h @@ -149,4 +149,11 @@ _mesa_pack_rgba_span_int(struct gl_context *ctx, GLuint n, GLuint rgba[][4], GLenum dstFormat, GLenum dstType, GLvoid *dstAddr); + +extern void +_mesa_rebase_rgba_float(GLuint n, GLfloat rgba[][4], GLenum baseFormat); + +extern void +_mesa_rebase_rgba_uint(GLuint n, GLuint rgba[][4], GLenum baseFormat); + #endif diff --git a/mesalib/src/mesa/main/readpix.c b/mesalib/src/mesa/main/readpix.c index 3384d8a38..491854955 100644 --- a/mesalib/src/mesa/main/readpix.c +++ b/mesalib/src/mesa/main/readpix.c @@ -291,10 +291,14 @@ slow_read_rgba_pixels( struct gl_context *ctx, for (j = 0; j < height; j++) { if (_mesa_is_integer_format(format)) { _mesa_unpack_uint_rgba_row(rbFormat, width, map, (GLuint (*)[4]) rgba); + _mesa_rebase_rgba_uint(width, (GLuint (*)[4]) rgba, + rb->_BaseFormat); _mesa_pack_rgba_span_int(ctx, width, (GLuint (*)[4]) rgba, format, type, dst); } else { _mesa_unpack_rgba_row(rbFormat, width, map, (GLfloat (*)[4]) rgba); + _mesa_rebase_rgba_float(width, (GLfloat (*)[4]) rgba, + rb->_BaseFormat); _mesa_pack_rgba_span_float(ctx, width, (GLfloat (*)[4]) rgba, format, type, dst, packing, transferOps); } diff --git a/mesalib/src/mesa/main/texgetimage.c b/mesalib/src/mesa/main/texgetimage.c index a02a49156..44a828adf 100644 --- a/mesalib/src/mesa/main/texgetimage.c +++ b/mesalib/src/mesa/main/texgetimage.c @@ -266,13 +266,8 @@ get_tex_rgba_compressed(struct gl_context *ctx, GLuint dimensions, if (baseFormat == GL_LUMINANCE || baseFormat == GL_LUMINANCE_ALPHA) { - /* Set green and blue to zero since the pack function here will - * compute L=R+G+B. - */ - GLuint i; - for (i = 0; i < width * height; i++) { - tempImage[i * 4 + GCOMP] = tempImage[i * 4 + BCOMP] = 0.0f; - } + _mesa_rebase_rgba_float(width * height, (GLfloat (*)[4]) tempImage, + baseFormat); } srcRow = tempImage; @@ -340,76 +335,12 @@ get_tex_rgba_uncompressed(struct gl_context *ctx, GLuint dimensions, if (is_integer) { _mesa_unpack_uint_rgba_row(texFormat, width, src, rgba_uint); - - if (texImage->_BaseFormat == GL_ALPHA) { - GLuint col; - for (col = 0; col < width; col++) { - rgba_uint[col][RCOMP] = 0; - rgba_uint[col][GCOMP] = 0; - rgba_uint[col][BCOMP] = 0; - } - } - else if (texImage->_BaseFormat == GL_LUMINANCE) { - GLuint col; - for (col = 0; col < width; col++) { - rgba_uint[col][GCOMP] = 0; - rgba_uint[col][BCOMP] = 0; - rgba_uint[col][ACOMP] = 1; - } - } - else if (texImage->_BaseFormat == GL_LUMINANCE_ALPHA) { - GLuint col; - for (col = 0; col < width; col++) { - rgba_uint[col][GCOMP] = 0; - rgba_uint[col][BCOMP] = 0; - } - } - else if (texImage->_BaseFormat == GL_INTENSITY) { - GLuint col; - for (col = 0; col < width; col++) { - rgba_uint[col][GCOMP] = 0; - rgba_uint[col][BCOMP] = 0; - rgba_uint[col][ACOMP] = 1; - } - } - + _mesa_rebase_rgba_uint(width, rgba_uint, texImage->_BaseFormat); _mesa_pack_rgba_span_int(ctx, width, rgba_uint, format, type, dest); } else { _mesa_unpack_rgba_row(texFormat, width, src, rgba); - - if (texImage->_BaseFormat == GL_ALPHA) { - GLuint col; - for (col = 0; col < width; col++) { - rgba[col][RCOMP] = 0.0F; - rgba[col][GCOMP] = 0.0F; - rgba[col][BCOMP] = 0.0F; - } - } - else if (texImage->_BaseFormat == GL_LUMINANCE) { - GLuint col; - for (col = 0; col < width; col++) { - rgba[col][GCOMP] = 0.0F; - rgba[col][BCOMP] = 0.0F; - rgba[col][ACOMP] = 1.0F; - } - } - else if (texImage->_BaseFormat == GL_LUMINANCE_ALPHA) { - GLuint col; - for (col = 0; col < width; col++) { - rgba[col][GCOMP] = 0.0F; - rgba[col][BCOMP] = 0.0F; - } - } - else if (texImage->_BaseFormat == GL_INTENSITY) { - GLuint col; - for (col = 0; col < width; col++) { - rgba[col][GCOMP] = 0.0F; - rgba[col][BCOMP] = 0.0F; - rgba[col][ACOMP] = 1.0F; - } - } - + _mesa_rebase_rgba_float(width, rgba, texImage->_BaseFormat); _mesa_pack_rgba_span_float(ctx, width, (GLfloat (*)[4]) rgba, format, type, dest, &ctx->Pack, transferOps); diff --git a/pixman/configure.ac b/pixman/configure.ac index 5eeb6a54e..17e30f5e4 100644 --- a/pixman/configure.ac +++ b/pixman/configure.ac @@ -54,7 +54,7 @@ AC_PREREQ([2.57]) m4_define([pixman_major], 0) m4_define([pixman_minor], 25) -m4_define([pixman_micro], 1) +m4_define([pixman_micro], 3) m4_define([pixman_version],[pixman_major.pixman_minor.pixman_micro]) diff --git a/pixman/pixman/pixman-mmx.c b/pixman/pixman/pixman-mmx.c index fe31b0865..f9efd73d3 100644 --- a/pixman/pixman/pixman-mmx.c +++ b/pixman/pixman/pixman-mmx.c @@ -336,7 +336,7 @@ static __inline__ __m64 ldq_u(uint64_t *p) #endif } -static __inline__ uint32_t ldl_u(uint32_t *p) +static __inline__ uint32_t ldl_u(const uint32_t *p) { #ifdef USE_X86_MMX /* x86's alignment restrictions are very relaxed. */ -- cgit v1.2.3