summaryrefslogtreecommitdiffstats
path: root/src/mesa/main/pack.c
Commit message (Collapse)AuthorAgeFilesLines
* mesa: add GL_UNSIGNED_INT_24_8 to _mesa_pack_depth_spanTapani Pälli2015-10-091-0/+15
| | | | | | | | | | | Patch adds missing type (used with NV_read_depth) so that it gets handled correctly. This fixes errors seen with following CTS test: ES3-CTS.gtf.GL3Tests.packed_pixels.packed_pixels Signed-off-by: Tapani Pälli <tapani.palli@intel.com> Reviewed-by: Iago Toral Quiroga <itoral@igalia.com> Cc: "11.0" <mesa-stable@lists.freedesktop.org>
* mesa: include bad type in error string of _mesa_pack_depth_spanTapani Pälli2015-10-081-1/+2
| | | | | Signed-off-by: Tapani Pälli <tapani.palli@intel.com> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
* mesa: remove unneeded #include of colormac.hMark Janes2015-10-061-1/+0
| | | | Reviewed-by: Matt Turner <mattst88@gmail.com>
* mesa: Replace F_TO_I() with _mesa_lroundevenf().Matt Turner2015-08-031-2/+2
| | | | | | | | | | | I'm not sure what the true meaning of "The rounding mode may vary." is, but it is the case that the IROUND() path rounds differently than the other paths (and does it wrong, at that). Like _mesa_roundeven{f,}(), just add an use _mesa_lroundeven{f,}() that has known semantics. Reviewed-by: Roland Scheidegger <sroland@vmware.com>
* mesa: Avoid double promotion.Matt Turner2015-07-291-7/+7
| | | | Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
* mesa: Indent break statements and add a missing one.Matt Turner2015-03-021-5/+6
| | | | | | | | Always indenting break statements makes spotting missing ones easier. Cc: "10.4, 10.5" <mesa-stable@lists.freedesktop.org> Reviewed-by: Brian Paul <brianp@vmware.com> Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
* mesa: Use assert() instead of ASSERT wrapper.Matt Turner2015-02-231-6/+6
| | | | Acked-by: Eric Anholt <eric@anholt.net>
* mesa: Rename the CEILING() macro to DIV_ROUND_UP().Francisco Jerez2015-02-101-1/+1
| | | | | | | | | | Some people have complained that code using the CEILING() macro is difficult to understand because it's not immediately obvious what it is supposed to do until you go and look up its definition. Use a more descriptive name that matches the similar utility macro in the Linux kernel. Reviewed-by: Matt Turner <mattst88@gmail.com>
* Mesa: Add support for HALF_FLOAT_OES type.Kalyan Kondapally2015-01-291-0/+6
| | | | | | | | | This patch adds needed support for accepting HALF_FLOAT_OES as valid type for TexImage*D and TexSubImage*D when Texture FLoat extensions are supported. Signed-off-by: Kevin Rogovin <kevin.rogovin@intel.com> Signed-off-by: Kalyan Kondapally <kalyan.kondapally@intel.com> Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
* mesa: Move declarations to to of block.José Fonseca2015-01-121-3/+3
| | | | | | To fix MSVC build. Trivial.
* mesa: Remove _mesa_rebase_rgba_uint and _mesa_rebase_rgba_floatIago Toral Quiroga2015-01-121-126/+0
| | | | | | These are no longer used anywhere now that we have _mesa_format_convert. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
* mesa: Remove _mesa_(un)pack_index_spanIago Toral Quiroga2015-01-121-219/+0
| | | | | | These are not used anywhere. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
* mesa: Remove _mesa_pack_rgba_span_float and tmp_pack.hIago Toral Quiroga2015-01-121-403/+0
| | | | | | | | | | _mesa_pack_rgba_span_float was the last of the color span functions and we have replaced all calls to it with calls to _mesa_format_convert, so we can remove it together with tmp_pack.h which was used to generate the pack functions for multiple types that were used from the various color span functions that have been removed. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
* mesa: Remove _mesa_unpack_color_span_floatIago Toral Quiroga2015-01-121-1033/+0
| | | | | | And various helper functions that went unused after removing it. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
* mesa: Remove (signed) integer pack and span functions.Iago Toral Quiroga2015-01-121-225/+0
| | | | | | These are no longer used now that we moved to _mesa_format_convert. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
* mesa: Remove _mesa_unpack_color_span_ubyteIago Toral Quiroga2015-01-121-256/+0
| | | | | | This is no longer used anywhere after moving to _mesa_format_convert. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
* mesa: Remove _mesa_unpack_color_span_uintIago Toral Quiroga2015-01-121-646/+0
| | | | | | This is no longer used. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
* mesa: Replace _mesa_unpack_bitmap with _mesa_unpack_image()Eduardo Lima Mitev2015-01-121-103/+2
| | | | | | | | | | | | | | | | | | _mesa_unpack_bitmap() was introduced by commit 02b801c to handle the case when data is stored in PBO by display lists, in the context of this bug: Incorrect pixels read back if draw bitmap texture through Display list https://bugs.freedesktop.org/show_bug.cgi?id=10370 Since _mesa_unpack_image() already handles the case of GL_BITMAP, this patch removes _mesa_unpack_bitmap() and makes affected calls go through _mesa_unapck_image() instead. The sample test attached to the original bug report passes with this change and there are no piglit regressions. Signed-off-by: Eduardo Lima Mitev <elima@igalia.com> Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
* mesa: Add helpers to extract GL_COLOR_INDEX to RGBA float/ubyteIago Toral Quiroga2015-01-121-0/+85
| | | | | | | | | | | | | | | | | | | | | We only use _mesa_make_temp_ubyte_image in texstore.c to convert GL_COLOR_INDEX to RGBA, but this helper does more stuff than this. All uses of this helper can be replaced with calls to _mesa_format_convert except for this GL_COLOR_INDEX conversion. This patch extracts the GL_COLOR_INDEX to RGBA logic to a separate helper so we can use that instead from texstore.c. In future patches we will replace all remaining calls to _mesa_make_temp_ubyte_image in the repository (related to compressed formats) with calls to _mesa_format_convert so we can remove _mesa_make_temp_ubyte_image and related functions. v2: - Remove ‘for’ loop initial declaration. They are only allowed in C99 or C11 mode. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
* mesa: Add RGBA to Luminance conversion helpersIago Toral Quiroga2015-01-121-0/+214
| | | | | | | | | | | | | | | | | | For glReadPixels with a Luminance destination format we compute luminance values from RGBA as L=R+G+B. This, however, requires ad-hoc implementation, since pack/unpack functions or _mesa_swizzle_and_convert won't do this (and thus, neither will _mesa_format_convert). This patch adds helpers to do this computation so they can be used to support conversion to luminance formats. The current implementation of glReadPixels does this computation as part of the span functions in pack.c (see _mesa_pack_rgba_span_float), that do this together with other things like type conversion, etc. We do not want to use these functions but use _mesa_format_convert instead (later patches will remove the color span functions), so we need to extract this functionality as helpers. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
* mesa/pack: use _mesa_format_from_format_and_type in _mesa_pack_rgba_span_from_*Samuel Iglesias Gonsalvez2015-01-121-256/+26
| | | | | | | | We had previously added the needed mesa formats, so we can simplify the code further. Signed-off-by: Samuel Iglesias Gonsalvez <siglesias@igalia.com> Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
* mesa/pack: refactor _mesa_pack_rgba_span_float()Samuel Iglesias Gonsalvez2015-01-121-1166/+152
| | | | | | | | | | | Use autogenerated format pack functions and take advantage of some macros to reduce source code, facilitating its maintenance. Unfortunately, dstType == GL_UNSIGNED_SHORT cannot simplified like the others, so keep it as it is. Signed-off-by: Samuel Iglesias Gonsalvez <siglesias@igalia.com> Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
* mesa/pack: use autogenerated format_pack functionsSamuel Iglesias Gonsalvez2015-01-121-525/+138
| | | | | | | | | Take advantage of new mesa formats and new format_pack functions to reduce source code in _mesa_pack_rgba_span_from_ints() and _mesa_pack_rgba_span_from_uints(). Signed-off-by: Samuel Iglesias Gonsalvez <siglesias@igalia.com> Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
* mesa: Fix regression introduced by commit "mesa: fix packing of float texels ↵Pavel Popov2014-07-181-8/+8
| | | | | | | | | | | | | | | to GL_SHORT/GL_BYTE". This commit "mesa: fix packing of float texels to GL_SHORT/GL_BYTE" replaced *_TO_BYTE to *_TO_BYTE_TEX because *_TO_FLOAT_TEX are used to unpack the texels to floats. In this case *_TO_FLOATZ in function extract_float_rgba also should be replaced to *_TO_FLOAT_TEX. Underline that these macros automatically preserve zero when converting. The regression was observed on 3 oglconform tests: snorm-textures basic.getTexImage snorm-textures advanced.mipmap.manual.getTex snorm-textures advanced.mipmap.upload.getTex Signed-off-by: Pavel Popov <pavel.e.popov@intel.com> Reviewed-by: Chris Forbes <chrisf@ijw.co.nz>
* Remove the ATI_envmap_bumpmap extensionJason Ekstrand2014-06-301-137/+0
| | | | | | | | | | | As far as I can tell, the Intel mesa driver is the only driver in the world still supporting this legacy extension. If someone wants to do bump mapping, they can use shaders. Signed-off-by: Jason Ekstrand <jason.ekstrand@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> [v1] Reviewed-by: Chris Forbes <chrisf@ijw.co.nz> [v2] Reviewed-by: Ian Romanick <idr@freedesktop.org> [v3]
* mesa: fix packing of float texels to GL_SHORT/GL_BYTEChris Forbes2014-04-101-58/+58
| | | | | | | | | | | | | | | | | Previously, we would unpack the texels to floats using *_TO_FLOAT_TEX, and then pack them into the desired format using FLOAT_TO_*. Unfortunately, this isn't quite the inverse operation, and so some texel values would end up off-by-one. This fixes the GL_RGB8_SNORM and GL_RGB16_SNORM subcases in piglit's arb_texture_view-format-consistency-get test on i965. The similar 1-, 2- and 4-component cases already worked because they took the memcpy path rather than repacking. Signed-off-by: Chris Forbes <chrisf@ijw.co.nz> Reviewed-by: Brian Paul <brianp@vmware.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Acked-by: Eric Anholt <eric@anholt.net>
* mesa: fix GetTexImage if mesa format and internal format don't matchMarek Olšák2013-02-111-0/+26
| | | | | | | | Tested with softpipe only exposing RGBA formats. NOTE: This is a candidate for the stable branches. Reviewed-by: Brian Paul <brianp@vmware.com>
* ReadPixels: Force ALPHA to 1 while rebasing RGBA values for GL_RGB formatCarl Worth2013-01-231-0/+10
| | | | | | | | | | | | | | | | | | | | | | When performing a ReadPixels operation, we may be reading from a buffer that stores alpha values, but that is actually representing a buffer with no alpha channel. In this case, while rebasing the values, touch up all alpha values read to 1.0. This commit fixes the following piglit (sub) tests: ARB_texture_float/fbo-colormask-formats GL_RBG16F_ARB EXT_texture_snorm/fbo-colormask-formats GL_RGB16_SNORM GL_RGB8_SNORM GL_RGB_SNORM It likely improves the results of other tests as well, but a PASS remains elusive due to additional bugs. Reviewed-by: Brian Paul <brianp@vmware.com> Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
* pack: handle GL_RGB+GL_UNSIGNED_INT_2_10_10_10_REV caseJordan Justen2013-01-141-2/+10
| | | | | | | | For floats, if GL_RGB is the source, then alpha should be set to 1.0F. Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
* mesa: Use MIN instead of CLAMP for unsigned source dataIan Romanick2012-10-241-108/+108
| | | | | | | | | | This silences a zillion GCC warnings like: ../../../src/mesa/main/pack.c: In function '_mesa_pack_rgba_span_from_uints': ../../../src/mesa/main/pack.c:560:13: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits] Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Brian Paul <brianp@vmware.com>
* Don't cast the return value of malloc/reallocMatt Turner2012-09-051-17/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | This patch has been generated by the following Coccinelle semantic patch: // Don't cast the return value of malloc/realloc. // // Casting the return value of malloc/realloc only stands to hide // errors. @@ type T; expression E1, E2; @@ - (T) ( _mesa_align_calloc(E1, E2) | _mesa_align_malloc(E1, E2) | calloc(E1, E2) | malloc(E1) | realloc(E1, E2) )
* mesa: add cast to silence warning in _mesa_pack_rgba_span_from_ints()Brian Paul2012-08-161-1/+1
|
* mesa pack: handle packed integer formats with clampingJordan Justen2012-08-141-10/+619
| | | | | Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Brian Paul <brianp@vmware.com>
* mesa pack: handle uint and int clamping properlyJordan Justen2012-08-141-7/+99
| | | | | | | | | | | Rename _mesa_pack_rgba_span_int to _mesa_pack_rgba_span_from_uints. Add _mesa_pack_rgba_span_from_ints. These separate routines allow the integer clamping to be handled properly for signed versus unsigned integers. Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Brian Paul <brianp@vmware.com>
* mesa: Use GLdouble for depthMax in final unpack conversions.Kenneth Graunke2012-08-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | The final step of _mesa_unpack_depth_span is to take the temporary GLfloat depth values and convert them to the desired format. When converting to GL_UNSIGNED_INTEGER with depthMax > 0xffffff, we use double-precision math to avoid overflow and precision problems. Or at least that's the idea. Unfortunately GLdouble z = depthValues[i] * (GLfloat) depthMax; actually causes single-precision multiplication, since both operands are GLfloats. Casting depthMax to GLdouble causes the scaling to be done with double-precision math. Fixes a regression in oglconform's depth-stencil basic.read.ds test since c60ac7b17993d28af65b04f9bbbf3ee74c35358c, where the expected and actual values differed slightly. For example, 0xcfa7a6 vs. 0xcfa7a4. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=49772 Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
* mesa pack: use _mesa_problem instead of assertJordan Justen2012-07-211-7/+10
| | | | | | | | If the pack type is not supported, use _mesa_problem rather than asserting. Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Brian Paul <brianp@vmware.com>
* mesa: add glformats integer type/format detection routinesJordan Justen2012-07-211-4/+5
| | | | | | | | | | | | _mesa_is_integer_format is moved to formats.c and renamed as _mesa_is_enum_format_integer. _mesa_is_format_unsigned, _mesa_is_type_integer, _mesa_is_type_unsigned, and _mesa_is_enum_format_or_type_integer are added. Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Brian Paul <brianp@vmware.com>
* mesa: disable MSVC global optimization in pack.cJosé Fonseca2012-07-201-0/+13
| | | | | | | | To reduce excessive compilation time in release mode. NOTE: This is a candidate for the 8.0 branch. Tested-by: Brian Paul <brianp@vmware.com>
* mesa: use F_TO_I() instead of IROUND()Brian Paul2012-05-191-110/+110
| | | | | | | | Use it where performance matters more and the exact method of float->int conversion/rounding isn't terribly important. There should no net change here since F_TO_I() is the new name of the old IROUND() function. Reviewed-by: José Fonseca <jfonseca@vmware.com>
* mesa: add _mesa_rebase_rgba_float/uint() functionsBrian Paul2012-03-081-0/+91
| | | | | | | | | These will be used by glReadPixels() and glGetTexImage() to fix issues with reading GL_LUMINANCE and other formats. NOTE: This is a candidate for the 8.0 branch. Reviewed-by: José Fonseca <jfonseca@vmware.com>
* mesa: Fix copy-and-paste error in _mesa_pack_rgba_span_floatIan Romanick2012-02-021-3/+2
| | | | | | | | | | | GL_RG_INTEGER only has two components, not three. I'll be surprised if anyone ever tries to glReadPixels(..., GL_SHORT, GL_RG_INTEGER, ...). This was found by inspection. NOTE: This is a candidate for the 8.0 branch. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
* mesa: remove redundant byte swap checkBrian Paul2012-01-271-6/+2
| | | | | | The outer conditional already did the test. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
* mesa: When unpacking signed integer pixel data, don't clamp to 0.Eric Anholt2012-01-271-33/+12
| | | | | | | | | | | | In the core, we always treat spans of int/uint data as uint, so this extract function was truncating storage of integer pixel data to a n int texture to (0, max_int) instead of (min_int, max_int). There is probably missing code for handling truncation on conversion between pixel formats, still, but this does improve things. NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Brian Paul <brianp@vmware.com>
* mesa: Add clamping for packing of integer data.Eric Anholt2012-01-271-4/+4
| | | | | | | | | | Mostly fixes piglit EXT_texture_integer/getteximage-clamping. The remaining failure involves precision loss on storing of int32 texture data (something I knew was an issue, but wasn't trying to test). NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Brian Paul <brianp@vmware.com>
* mesa: Add the remaining from/to types for GL_EXT_texture_integer (and R/RG).Eric Anholt2012-01-241-51/+61
| | | | | | | | | | | This aborts and crashes in intel oglconform's int-textures into being just rendering failures. Clamping isn't handled yet. v2: Add missing "break". v3: Drop the int/uint distinction, since they don't need different clamping. NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Brian Paul <brianp@vmware.com> (v2)
* mesa: Add missing GL_RG_INTEGER casesIan Romanick2012-01-041-0/+39
| | | | | | | | Adds two missing '|| srcFormat == GL_RG_INTEGER' in assertions and a bunch of missing pixel converions cases. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
* mesa: add missing RG_INTEGER and some RED_INTEGER_EXT checks.Dave Airlie2011-12-101-0/+4
| | | | | | | | | | | This just adds the correct checks and asserts in the right places. This doesn't fix all the tests that I've sent to piglit, need to add int paths to go alongside the uint paths that don't go via float to fix it up properly. I'm not sure how much of that could be templated/shared will have a look once I write it the long way. Reviewed-by: Brian Paul <brianp@vmware.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
* mesa: remove unreachable code in _mesa_unpack_color_span_ubyte()Brian Paul2011-12-021-64/+0
| | | | | | | | We checked if srcType == GL_UNSIGNED_BYTE earlier so there was no way to reach this code. This was left-over code from the GLchan removal work. Reviewed-by: José Fonseca <jfonseca@vmware.com>
* image/pack: fix missing GL_BGR(A)_INTEGER support.Dave Airlie2011-11-281-0/+2
| | | | | | | These codepaths were missing the cases for BGR_INTEGER/BGRA_INTEGER. Signed-off-by: Dave Airlie <airlied@redhat.com> Reviewed-by: Eric Anholt <eric@anholt.net>
* pack: fix indentation (trivial)Dave Airlie2011-11-271-1/+1
| | | | | | just saw this while looking for other problems. Signed-off-by: Dave Airlie <airlied@redhat.com>