summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* mesa: Fix default value of BUFFER_ACCESS_FLAGS.Kenneth Graunke2013-01-151-28/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | According to both the GL 3.0 and ES 3.0 specifications (table 2.7 for GL and table 2.8 for ES), the default value of BUFFER_ACCESS_FLAGS is supposed to be zero. Note that there are two related quantities: the obsolete BUFFER_ACCESS enum and the new BUFFER_ACCESS_FLAGS bitfield. BUFFER_ACCESS can only be GL_READ_ONLY, GL_WRITE_ONLY, or GL_READ_WRITE; BUFFER_ACCESS_FLAGS can easily represent all three via GL_MAP_WRITE_BIT, GL_MAP_READ_BIT, and their logical or. It also supports more flags. Thus, Mesa only stores the bitfield, and simply computes the old enum when queried, via simplified_access_mode(bufObj->AccessFlags). The tricky part is that, while BUFFER_ACCESS_FLAGS defaults to 0, BUFFER_ACCESS defaults to GL_READ_WRITE for desktop [GL 3.0, table 2.8] and GL_WRITE_ONLY_OES for ES [the GL_EXT_map_buffer_range extension]. Mesa tried to implement this by setting the default AccessFlags to GL_MAP_READ_BIT | GL_MAP_WRITE_BIT on desktop, and GL_MAP_WRITE_BIT on ES. But in all specifications, it needs to be 0. This patch moves that logic into simplified_access_mode(): when AccessFlags == 0, it now returns GL_READ_WRITE for desktop and GL_WRITE_ONLY for ES 1/2. (BUFFER_ACCESS doesn't exist on ES 3.0, so it's irrelevant there.) With that in place, it changes the AccessFlags default to 0. Fixes three es3conform tsets: - copy_buffer_defaults - map_buffer_range_modify_indices - pixel_buffer_object_default_parameters Reviewed-by: Jordan Justen <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* mesa: Rework crazy error code rules in glDrawBuffers().Kenneth Graunke2013-01-151-3/+63
| | | | | | | | | | | | | | | | | | | | | | | Perhaps most importantly, this patch adds comments quoting the relevant spec paragraphs above each error condition. It also makes three changes: - For FBOs, GL_COLOR_ATTACHMENTm where m >= MaxDrawBuffers is supposed to generate INVALID_OPERATION (not INVALID_ENUM). - Constants that refer to multiple buffers (such as FRONT, BACK, LEFT, RIGHT, and FRONT_AND_BACK) are supposed to generate INVALID_OPERATION, not INVALID_ENUM. - In ES 3.0, for FBOs, buffers[i] must be NONE or GL_COLOR_ATTACHMENTi or else INVALID_OPERATION occurs. (This is a new restriction.) Fixes es3conform's draw-buffers-api test. v2: The error path was missing a "return" like all the other error paths. Also, we may as well call it glDrawBuffers in the error message since the ARB suffix doesn't exist in ES 3. Reviewed-by: Jordan Justen <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* i965: Force even an empty query to flush all previous queries.Carl Worth2013-01-151-0/+17
| | | | | | | | | | | | | | | | | | The specification requires that query results are processed in order, (when one query result is returned, all previous query of the same type must also be available). The implementation was failing this requirement in the case of BeginQuery and EndQuery with no intervening drawing, (the result would be made available immediately without flushing previous queries). This fixes the following es3conform test: occlusion_query_query_order as well as the following piglit test: occlusion_query_order Reviewed-by: Ian Romanick <[email protected]>
* meta: Allow meta operations to pause/resume an active occlusion queryCarl Worth2013-01-152-1/+28
| | | | | | | | | | | | | | | | | | | | | | | | This allows for avoiding the occlusion query erroneously accumulating results during the meta operation. This functionality is made conditional on a new MESA_META_OCCLUSION_QUERY bit so that meta-operations which should generate fragments can continue to get the current behavior. The implementation of glClear is specifically augmented to request the flag since glClear is specified to not generate fragments. This fixes the following es3conform tests: occlusion_query_draw_occluded.test occlusion_query_clear occlusion_query_custom_framebuffer occlusion_query_stencil_test occlusion_query_discarded_fragments As well as the following piglit test: occlusion_query_meta_no_fragments Reviewed-by: Ian Romanick <[email protected]>
* queryobj: Add EverBound flag, making ISQuery() return false before BeginQuery()Carl Worth2013-01-152-3/+19
| | | | | | | | | | | | | | | | | | | | | This flag allows for the specified behavior that GenQueries reserves a name, but does not associate an object with it until BeginQuery. We allocate the object immediately with the new EverBound flag set to false, and then set the flag to true at the time of BeginQuery. This allows us to implement a conformant IsQuery function by checking the state of the new EverBound flag. This fixes the following es3conform tests: occlusion_query_genqueries occlusion_query_is_query_nonzero and the following piglit test: occlusion_query_lifetime Reviewed-by: Ian Romanick <[email protected]>
* Update comment to specify actual text being referenced from the specification.Carl Worth2013-01-151-1/+6
| | | | | | | | The reference to "correct, see spec" was a bit too vague to be useful, (particularly since the language being referenced here changes between OpenGL 3.1 and OpenGL 4.3). Reviewed-by: Ian Romanick <[email protected]>
* docs: minor updates to VMware guest driver docsBrian Paul2013-01-151-3/+4
| | | | The DRM's --enable-vmwgfx-experimental-api flag isn't needed anymore.
* r300g: fix and cleanup flushing before clearing CMASK, ZMASK, and HIZMarek Olšák2013-01-154-18/+17
|
* r300g: implement MSAA compression and fast MSAA color clearMarek Olšák2013-01-1513-6/+211
| | | | | | | | | | | | | | | | | | | | | | | | | | These are optimizations which make MSAA a lot faster. The MSAA work is complete with this commit. (except for enablement of AA optimizations for RGBA16F, for which a patch is ready and waiting until the kernel CS checker fix lands) MSAA can't be made any faster as far as hw programming is concerned. The catch is only one process and one colorbuffer can use the optimizations at a time. There usually is only one MSAA colorbuffer, so it shouldn't be an issue. Also, there is a limit on the size of MSAA colorbuffer resolution in terms of megapixels. If the limit is surpassed, the AA optimizations are disabled. The limit is: - 1 Mpix on low-end and some mid-level chipsets (1024x768 and 1280x720) - 2 Mpix on some mid-level chipsets (1600x1200 and 1920x1080) - 3 or 4 Mpix on high-end chipsets (2048x1536 or 2560x1600, respectively) It corresponds to the number of raster pipes (= GB pipes) available, each pipe can hold 1 Mpix of AA compression data. If it's enabled, the driver prints to stdout: radeon: Acquired access to AA optimizations.
* gallium/util: add a half float array to util_colorMarek Olšák2013-01-151-0/+1
| | | | For convenient packing into half floats.
* Revert "targets/opencl: Link against libgallium.la instead of libgallium.a"Tom Stellard2013-01-152-1/+9
| | | | | | | | | | | | | | | This reverts commit 4148a29ed83d1d85bff3d4e40e847128011c3f20. This is a work-around for bug: https://bugs.freedesktop.org/show_bug.cgi?id=59334 We really should be linking against libgallium.la instead of libgallium.a, but until we can figure why linking against libgallium.la causes runtime failures in clover we will continue to link against libgallium.a Acked-by: Andreas Boll <[email protected]> Tested-by: Aaron Watry <[email protected]>
* st/mesa: use a generic varying to pass the clear color to the FSMarek Olšák2013-01-151-2/+2
| | | | | | The color varying may have reduced precision or be even clamped. Reviewed-by: Brian Paul <[email protected]>
* gallium/util: fix glClear with MRT by making the FS write to all cbufsMarek Olšák2013-01-156-9/+42
| | | | Reviewed-by: Brian Paul <[email protected]>
* st/mesa: fix InternalFormat for Z24X8 window-system buffersMarek Olšák2013-01-151-1/+3
| | | | | | This probably doesn't fix anything, but it's good to be consistent. Reviewed-by: Brian Paul <[email protected]>
* st/mesa: remove dead conditional in ClearMarek Olšák2013-01-151-12/+0
| | | | | | | | | I think the conditional always evaluates to false. If I understand the code in core Mesa correctly, depthBits or stencilBits is 0 if the depth or stencil renderbuffer is NULL, respectively. Reviewed-by: Brian Paul <[email protected]>
* st/mesa: simplify conditionals in ClearMarek Olšák2013-01-151-30/+12
| | | | | | just check depth and stencil separately, the outcome is the same Reviewed-by: Brian Paul <[email protected]>
* st/mesa: fix glClear with different colormask for each colorbufferMarek Olšák2013-01-151-18/+25
| | | | Reviewed-by: Brian Paul <[email protected]>
* gallium: remove PIPE_CAP_DEPTHSTENCIL_CLEAR_SEPARATEMarek Olšák2013-01-1513-19/+1
| | | | Reviewed-by: Brian Paul <[email protected]>
* st/mesa: always assume separate depth and stencil clear is supportedMarek Olšák2013-01-152-97/+22
| | | | | | All drivers implement it now. Reviewed-by: Brian Paul <[email protected]>
* softpipe: implement separate depth-stencil clearMarek Olšák2013-01-151-3/+12
| | | | | | The CAP is going away. Reviewed-by: Brian Paul <[email protected]>
* libgl-xlib: softpipe and llvmpipe aren't mutually exclusive at link timeJon TURNEY2013-01-151-2/+1
| | | | | | | | | | | | | | Since automake changes, softpipe and llvmpipe are mutually exclusive at link time. This doesn't make much sense to me as we can choose between them at run-time using GALLIUM_DRIVER. Creating library file: .libs/libGL.dll.a .libs/xlib.o: In function `sw_screen_create_named': /jhbuild/checkout/mesa/mesa/src/gallium/targets/libgl-xlib/../../../../src/gallium/auxiliary/target-helpers/inline_sw_helper.h:35: undefined reference to `_softpipe_create_screen' Signed-off-by: Jon TURNEY <[email protected]> Reviewed-by: Brian Paul <[email protected]>
* 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 <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* glformats: allow GL_RGB+GL_UNSIGNED_INT_2_10_10_10_REV for GLES2/3Jordan Justen2013-01-141-0/+8
| | | | | | | | This format is allowed by the GL_EXT_texture_type_2_10_10_10_REV extension. Signed-off-by: Jordan Justen <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* copyteximage: Use Driver's AllocTextureImageBuffer instead of TexImageJordan Justen2013-01-141-3/+1
| | | | | | | | | | | | | | | Call Driver.AllocTextureImageBuffer rather than calling Driver.TexImage with NULL data, format=GL_NONE and type=GL_NONE. This avoids setting ctx->Unpack, which can lead to incorrectly trying to upload data. The GLES3 GTF program's packed_pixels_pbo test was triggering an error for i965 with the previous code. Signed-off-by: Jordan Justen <[email protected]> Reviewed-by: Eric Anholt <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* copyteximage: update signed vs. unsigned format matchingJordan Justen2013-01-141-7/+25
| | | | | | | | Fixes issues with gles3-gtf Signed-off-by: Jordan Justen <[email protected]> Reviewed-by: Matt Turner <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* framebuffer: add _mesa_get_read_renderbufferJordan Justen2013-01-142-0/+26
| | | | | | | | | This returns the current read renderbuffer for the specified format type. Signed-off-by: Jordan Justen <[email protected]> Reviewed-by: Matt Turner <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* teximage: use _mesa_es3_error_check_format_and_type for GLES3Matt Turner2013-01-141-6/+13
| | | | | Reviewed-by: Jordan Justen <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* glformats: add _mesa_es3_error_check_format_and_typeMatt Turner2013-01-142-0/+444
| | | | | | | | | This function checks for ES3 compatible format/type/internalFormat/dimension combinations. [[email protected]: additional tweaks for gles3-gtf] Signed-off-by: Jordan Justen <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* fbobject: don't allow LUMINANCE/INTENSITY/ALPHA fbo on ES/CoreJordan Justen2013-01-141-1/+2
| | | | | | | | | v2: * Only allow on GL Legacy contexts Signed-off-by: Jordan Justen <[email protected]> Reviewed-by: Matt Turner <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* fbobject: add VERBOSE=api message for renderbuffer storageJordan Justen2013-01-141-1/+16
| | | | | | | | | | Add API debug trace message for: * glRenderbufferStorage * glRenderbufferStorageMultisample Signed-off-by: Jordan Justen <[email protected]> Reviewed-by: Matt Turner <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* fbobject: add VERBOSE=api message for check framebuffer statusJordan Justen2013-01-141-0/+4
| | | | | | Signed-off-by: Jordan Justen <[email protected]> Reviewed-by: Matt Turner <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* util: add new primitive types to pipe_prim_names[] arrayBrian Paul2013-01-141-0/+4
| | | | Reviewed-by: Jose Fonseca <[email protected]>
* st/mesa: add some simple buffer/draw debug codeBrian Paul2013-01-144-0/+18
| | | | Reviewed-by: José Fonseca <[email protected]>
* libgl-xlib: link with -lrtBrian Paul2013-01-141-1/+2
| | | | | | | | | | | Fixes a runtime error: glxgears: symbol lookup error: /home/brian/mesa/lib/gallium/libGL.so.1: undefined symbol: clock_gettime v2: use $(CLOCK_LIB) and $(PTHREAD_LIBS) per Andreas Boll. Reviewed-by: Matt Turner <[email protected]> Reviewed-by: Andreas Boll <[email protected]>
* i965: Avoid blending with destination alpha when RB format has no alpha bitsCarl Worth2013-01-143-8/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | The hardware does not support a render target without an alpha channel. So when the user creates a render buffer with no alpha channel, there actually is storage available for alpha internally. It requires special care to avoid these unwanted alpha bits from causing any problems. Specifically, when blending, and when the blend factors would read the destination alpha values, this commit coerces the blend factors to instead be either 0 or 1 as appropriate. A similar fix was made for pre-gen6 hardware in commit eadd9b8e and this commit shares the fixup function written by Ian then. This commit the following es3conform test: rgb8_rgba8_rgb As well as the following piglit (sub) tests: EXT_framebuffer_object/fbo-blending-formats/3 EXT_framebuffer_object/fbo-blending-formats/GL_RGB EXT_framebuffer_object/fbo-blending-formats/GL_RGB8 Reviewed-by: Ian Romanick <[email protected]>
* egl/wayland: Implement EGL_EXT_buffer_ageKristian Høgsberg2013-01-141-1/+24
| | | | Reviewed-by: Ander Conselvan de Oliveira <[email protected]>
* egl/wayland: Pull color buffers from dri2_surf->color_buffers poolKristian Høgsberg2013-01-142-252/+150
| | | | | | | | | | | | | | | We used to keep the color buffers in the dri_buffers array and swap __DRI_BUFFER_BACK_LEFT and __DRI_BUFFER_FRONT_LEFT around there and swap third_buffer in in case we needed to triple buffer. That gets a little fidgety with all the swaps, so lets use the color_buffers pool like the gbm platform does. We track the color buffers, their corresponding wl_buffer and locked status here and just plug a free one into dri2_surf->buffers when we need to. This is a nice clean-up in itself, but it also sets us up to track buffer age in the color_buffers structs. Reviewed-by: Ander Conselvan de Oliveira <[email protected]>
* gallium/svga: Make sure -std=gnu99 is set.Johannes Obermayr2013-01-142-2/+5
| | | | | | This is a work-around until configure.ac stops touching CFLAGS. Reviewed-by: Matt Turner <[email protected]>
* build: Fix the documented default value of --with-gallium-driversDamien Lespiau2013-01-141-1/+3
| | | | | Signed-off-by: Damien Lespiau <[email protected]> Reviewed-by: Brian Paul <[email protected]>
* r300g: set a dummy vertex buffer in context_createMarek Olšák2013-01-141-0/+1
| | | | so that the driver doesn't crash if an app doesn't set any vertex buffers.
* r300g: fix MSAA resolve to an untiled textureMarek Olšák2013-01-143-3/+10
| | | | | RB3D_DEBUG_CTL doesn't help, so I resolve to a tiled temporary texture and then blitting it to the destination one, which we also do in other situations.
* r300g: advertise MSAA support for the RGB10_A2 format on r500Marek Olšák2013-01-142-12/+47
| | | | It seems to be working just fine.
* r300g: allow separate depth and stencil clearMarek Olšák2013-01-141-1/+1
| | | | | | | | The handling of the CAP is broken in st/mesa anyway. Let's just kill it. This commit pretty much enables fast Z clear for FBOs with Z24S8. The driver falls back to clearing with a quad if the fast clear cannot be used. It can still do fast color clear, for example.
* r300g: if both Z and stencil are present, they must be fast-cleared togetherMarek Olšák2013-01-141-6/+11
|
* r300g: allow HiZ with a 16-bit zbufferMarek Olšák2013-01-141-1/+0
|
* r300g: random hyperz cleanupsMarek Olšák2013-01-143-18/+12
|
* r300g: kill the X.Org state tracker targetMarek Olšák2013-01-144-247/+1
| | | | | | This won't ever be made default and we don't need it anyway. We should also consider doing this for other drivers.
* xmlpool: Fix out-of-tree builds.Johannes Obermayr2013-01-1313-1/+13
| | | | Reviewed-by: Kenneth Graunke <[email protected]>
* gtest: Build it only for 'make check'.Johannes Obermayr2013-01-131-1/+1
| | | | | Reviewed-by: Andreas Boll <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
* tests: AM_CPPFLAGS must include $(top_srcdir) instead of $(top_builddir).Johannes Obermayr2013-01-134-13/+14
| | | | Reviewed-by: Andreas Boll <[email protected]>