summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* nvc0: add space checks to clear functionsMaarten Lankhorst2013-01-171-5/+14
| | | | Thanks to calim for helping me find and fix the issue.
* nv50: add space checks to clear functions, and respect depthMaarten Lankhorst2013-01-171-13/+24
| | | | Thanks to calim for helping me find and fix the issue.
* st/mesa: a couple fixes for st_BlitFramebuffer()Brian Paul2013-01-161-30/+52
| | | | | | | | | | | | 1. Loop over multiple destination color buffers. If we set glDrawBuffers(GL_FRONT_AND_BACK) we need to loop over multiple color buffers, blitting to each. 2. Add checks for null src/dst surface pointers. This fixes a crash in the piglit fbo-missing-attachment-blit test. See bug http://bugs.freedesktop.org/show_bug.cgi?id=59450 Reviewed-by: Reviewed-by: Marek Olšák <[email protected]>
* st/mesa: simplify some src/dst surface setup in BlitFramebufferBrian Paul2013-01-161-4/+4
| | | | | | Use the renderbuffer attachment pointers that we grabbed earlier. Reviewed-by: Reviewed-by: Marek Olšák <[email protected]>
* meta: add 'f' suffix to floats to silence some MSVC warningsBrian Paul2013-01-161-1/+1
|
* mesa: add missing ASSERT_OUTSIDE_BEGIN_END() in _mesa_GetInternalformativ()Brian Paul2013-01-161-0/+3
| | | | Reviewed-by: Ian Romanick <[email protected]>
* Fix mapi code generator for out-of-tree buildJon TURNEY2013-01-161-1/+1
| | | | | | | | | | | | Use os.path.join() rather than hand-rolling it, so path is correct if sys.argv[0] returns an absolute path. (According to the python documentation, it's platform dependent whether sys.argv[0] is a full pathname or not. It probably also depends on how the process was started...) Signed-off-by: Jon TURNEY <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
* nvc0: Add support for video bufferMaarten Lankhorst2013-01-167-11/+310
|
* vl/video_buffer: fix up surface ordering for the interlaced caseMaarten Lankhorst2013-01-161-6/+6
| | | | | | | | It seems the other code expects surface[0..1] to be the luma field in interlaced case. See for example vdpau/surface.c vlVdpVideoSurfaceClear and vlVdpVideoSurfacePutBitsYCbCr. Signed-off-by: Maarten Lankhorst <[email protected]>
* vl/compositor: fix weave shader bugsMaarten Lankhorst2013-01-161-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Writemask was XY instead of YZ (thanks to calim for spotting it). The pixel calculation resulted in the pixel always being off by one. If y was .5: y' = round(y) + 0.5 = 1.5 Fixing this also means the LRP function has to swap the pixels it, since it's now the other way around for top/bottom. WIth these fixes only chroma for top and bottom pixel rows are wrongly interpolated in my test program: --- nvidia +++ nouveau @@ -1,4 +1,4 @@ -YCbCr[0] = 00c080 +YCbCr[0] = 00b070 YCbCr[1] = 00b070 YCbCr[2] = 029050 YCbCr[3] = 207050 @@ -61,4 +61,4 @@ YCbCr[60] = 0c5070 YCbCr[61] = c05090 YCbCr[62] = 0e70b0 -YCbCr[63] = e080c0 +YCbCr[63] = e070b0 Signed-off-by: Maarten Lankhorst <[email protected]> Reviewed-by: Christian König <[email protected]>
* mesa: add new formatquery.c file to SConscript file to fix buildBrian Paul2013-01-161-0/+1
|
* radeonsi/vdpau: remove nonsense state tracker depChristian König2013-01-161-1/+0
| | | | | | | Added with automake conversion, but makes no sense at all. Signed-off-by: Christian König <[email protected]> Reviewed-by: Andreas Boll <[email protected]>
* glapi: Remove duplicate ARB_base_instance from gl_API.xmlIan Romanick2013-01-151-2/+0
| | | | Signed-off-by: Ian Romanick <[email protected]>
* intel: Enable GL_ARB_internalformat_queryIan Romanick2013-01-152-0/+24
| | | | | | Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Eric Anholt <[email protected]> Reviewed-by: Jordan Justen <[email protected]>
* mesa: Add driver method to determine the possible sample countsIan Romanick2013-01-153-4/+44
| | | | | | | | | | | | | | Use this method in _mesa_GetInternalformativ for both GL_SAMPLES and GL_NUM_SAMPLE_COUNTS. v2: internalFormat may not be color renderable by the driver, so zero can be returned as a sample count. Require that drivers supporting the extension provide a QuerySamplesForFormat function. The later was suggested by Eric Anholt. Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Eric Anholt <[email protected]> Reviewed-by: Jordan Justen <[email protected]>
* mesa: Add dispatch and extension XML for GL_ARB_internalformat_queryIan Romanick2013-01-154-4/+30
| | | | | | Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Eric Anholt <[email protected]> Reviewed-by: Jordan Justen <[email protected]>
* mesa: Add extension tracking bit for GL_ARB_internalformat_queryIan Romanick2013-01-152-0/+2
| | | | | | | | | | | | Though, I'm tempted to always expose this extension when GL_ARB_framebuffer_object is exposed. In that case, it would share the same enable bit. v2: Correctly sort extension names. Suggested by Eric Anholt. Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Eric Anholt <[email protected]> Reviewed-by: Jordan Justen <[email protected]>
* mesa: Add skeleton implementation of glGetInternalformativIan Romanick2013-01-153-0/+160
| | | | | | | | | | This is for the GL_ARB_internalformat_query extension and GLES 3.0. v2: Generate GL_INVALID_OPERATION if the extension is not supported. Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Eric Anholt <[email protected]> Reviewed-by: Jordan Justen <[email protected]>
* meta: Move loop variable declaration outside for loop.Vinson Lee2013-01-151-1/+2
| | | | | | Fixes build with MSVC. Signed-off-by: Vinson Lee <[email protected]>
* mesa: move declarations before code to fix MSVC buildBrian Paul2013-01-151-4/+8
|
* mesa: Round float param in glTexparameterf() to nearest integerAnuj Phogat2013-01-151-9/+4
| | | | | | | | | | | | | | | | | | OpenGL 4.2 specification suggests rounding the float data to nearest integer when the type of internal state is integer. Out of range floats should be clamped to {INT_MIN, INT_MAX}. This is not specified anywhere in gl/gles spec but below test expects this behavior. This patch makes gles3 conformance sgis_texture_lod_basic_getter.test pass. A GL spec bug will be raised to include clamping of out of range floats. V2: Round float to nearest integer for all cases where _mesa_Texparameterf() converts float param to int. Use the same block of float to int conversion code for GL_TEXTURE_SWIZZLE_{R,G,B,A}_EXT cases as well. Signed-off-by: Anuj Phogat <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* mesa: Add support to allow blitting to multiple color draw buffersAnuj Phogat2013-01-151-261/+300
| | | | | | | | | | | | | | | | | | | | | This patch fixes a blitting case when drawAttachment->Texture == readAttachment->Texture. It was causing an assertion failure in intel_miptree_attach_map() with gles3 conformance test case: framebuffer_blit_functionality_minifying_blit Number of changes in this file look scary. But most of them are caused by introducing a big for loop to support rendering to multiple color draw buffers. V2: Fixed a case when number of draw buffer attachments are zero. V3: Put a for loop in blit_nearest() and blit_linear() functions in to support blitting to multiple color draw buffers. V4: Remove variable declaration in for loop to avoid MSVC compilation issues. Signed-off-by: Anuj Phogat <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* mesa: Add error checking in _mesa_BlitFramebuffer() for MRTsAnuj Phogat2013-01-151-47/+62
| | | | | | | | | | | | | | | | | | This patch adds required error checking in _mesa_BlitFramebuffer() when blitting to multiple color render targets. It also fixes a case when blitting to a framebuffer with renderbuffer/texture attached to GL_COLOR_ATTACHMENT{i} (where i!=0). Earlier it skips color blitting if nothing is found attached to GL_COLOR_ATTACHMENT0. V2: Fixed a case when number of draw buffer attachments are zero. V3: Do compatible_color_datatypes() and compatible_resolve_formats() check for all the draw renderbuffers in fbobject.c. Fix debug code at bottom of _mesa_BlitFramebuffer() to handle MRTs. Combine error checking code for linear blits with other color blit error checking. Signed-off-by: Anuj Phogat <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* mesa: Fix GL error generation in _mesa_GetFramebufferAttachmentParameteriv()Anuj Phogat2013-01-151-1/+28
| | | | | | | | | | | | | | This allows query on default framebuffer in glGetFramebufferAttachmentParameteriv() for gles3. Fixes unexpected GL errors in gles3 conformance test case: framebuffer_blit_functionality_multisampled_to_singlesampled_blit V2: Use _mesa_is_gles3() check to restrict allowed attachment types to specific APIs. Signed-off-by: Anuj Phogat <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* intel: Support blitting to multiple color draw buffersAnuj Phogat2013-01-152-34/+63
| | | | | | | | | | | | | | | This patch enables blitting to multiple color attachments of a framebuffer. It also fixes a case when blitting to a framebuffer with renderbuffer/texture attached to non-zero attachment point i.e. GL_COLOR_ATTACHMENT{1, 2, ...}. Earlier we were incorrectly blitting to GL_COLOR_ATTACHMENT0 by default. V2: Use intel_copy_texsubimage() for blitting only if all the color attachments can blit using it. Signed-off-by: Anuj Phogat <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* meta: Add functionality to do _mesa_meta_BlitFrameBuffer() using glslAnuj Phogat2013-01-151-93/+344
| | | | | | | | | | | | | | | | | | | | | | | | This patch rewrites _mesa_meta_BlitFrameBuffer() function to add support for blitting with GLSL/GLSL ES shaders. These changes were required to support glBlitFrameBuffer() in gles3. This patch, along with other patches in this series, make 16 failing framebuffer_blit test cases in gles3 conformance pass. V2: Properly handle flipped blits for source and destination renderbuffer / textures. Add support for GL_TEXTURE_RECTANGLE in _mesa_meta_BlitFrameBuffer. Create a temp depth texture to support depth buffer blitting. V3: Remove unsupported / redundant shader code. Add an assertion to make sure that we don't use rectangle texture in ES. Put API guard on glTexEnvi(). V4: For gles3: Don't use ReadPixels or CopyTexImage2D to blit depth buffer. gles3 spec says for CopyTexImage2D that "color buffer components can be dropped during the conversion to internalformat, but new components cannot be added." So, use the internal format of read renderbuffer to create texture for color buffer blitting. Signed-off-by: Anuj Phogat <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* mesa: Fix GL error generation in glBlitFramebuffer()Anuj Phogat2013-01-151-15/+49
| | | | | | | | | | | | | | | | V2: If mask has GL_STENCIL_BUFFER_BIT set, the depth formats for readRenderBuffer and drawRenderBuffer must match unless one of the two buffers doesn't have depth, in which case it's not blitted, so the format check should be ignored. Same comment goes for stencil formats in depth renderbuffers if mask has GL_DEPTH_BUFFER_BIT set. v3 (Kayden): Refactor code to be a bit more readable. Signed-off-by: Anuj Phogat <[email protected]> Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* mesa: Make ES3 glDrawBuffers() only accept BACK/NONE for the winsys fbo.Kenneth Graunke2013-01-151-5/+17
| | | | | | | | | | | | Nothing was explicitly checking this. v2: Update GL3 spec reference. Signed-off-by: Anuj Phogat <[email protected]> Signed-off-by: Kenneth Graunke <[email protected]> Signed-off-by: Ian Romanick <[email protected]> [v2] Reviewed-by: Anuj Phogat <[email protected]> Reviewed-by: Ian Romanick <[email protected]> [v1]
* mesa: Handle GL_BACK correctly for ES 3.0 in glDrawBuffers().Kenneth Graunke2013-01-151-4/+19
| | | | | | | | | | | | | | | | | | | | | In ES 3.0, when calling glDrawBuffers() on the window system framebuffer, the only valid targets are GL_NONE or GL_BACK. Since there is no stereo rendering in ES 3.0, this is a single buffer, unlike desktop where it may be two (and thus isn't allowed). For single-buffered configs, GL_BACK ironically means the front (and only) buffer. I'm not sure that it matters, however, as ES shouldn't have front buffer rendering in the first place. Fixes es3conform framebuffer_blit_coverage_default_draw_buffer_binding. v2: Update GLES3 spec reference. Signed-off-by: Anuj Phogat <[email protected]> Signed-off-by: Kenneth Graunke <[email protected]> Signed-off-by: Ian Romanick <[email protected]> [v2] Reviewed-by: Anuj Phogat <[email protected]> Reviewed-by: Ian Romanick <[email protected]> [v1]
* egl/dri2: Fix typo in the previous commitIan Romanick2013-01-151-1/+1
| | | | | | | I didn't notice this due to a noobed piglit run. It wasn't previously noticed because the patch was only run on a driver that supported GLES3. Signed-off-by: Ian Romanick <[email protected]>
* libgl-gdi: Avoid hangs on DLL_PROCESS_DETACH.Rob Schneider2013-01-151-2/+4
| | | | | | | | | | | | At process exit DLL_PROCESS_DETACH is signaled to DllMain(), where then a final cleanup is triggered. In stw_cleanup() code is triggered that tries to communicate a shutdown to the spawned threads -- however at that time those threads have already been terminated by the OS and so the process hangs. v2: skip stw_cleanup_thread() too Signed-off-by: José Fonseca <[email protected]>
* egl/dri2: Add plumbing for EGL_OPENGL_ES3_BIT_KHRChad Versace2013-01-156-4/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes error EGL_BAD_ATTRIBUTE in the tests below on Intel Sandybridge: * piglit egl-create-context-verify-gl-flavor, testcase OpenGL ES 3.0 * gles3conform, revision 19700, when runnning GL3Tests with -fbo This plumbing is added in order to comply with the EGL_KHR_create_context spec. According to the EGL_KHR_create_context spec, it is illegal to call eglCreateContext(EGL_CONTEXT_MAJOR_VERSION_KHR=3) with a config whose EGL_RENDERABLE_TYPE does not contain the EGL_OPENGL_ES3_BIT_KHR. The pertinent portion of the spec is quoted below; the key word is "respectively". * If <config> is not a valid EGLConfig, or does not support the requested client API, then an EGL_BAD_CONFIG error is generated (this includes requesting creation of an OpenGL ES 1.x, 2.0, or 3.0 context when the EGL_RENDERABLE_TYPE attribute of <config> does not contain EGL_OPENGL_ES_BIT, EGL_OPENGL_ES2_BIT, or EGL_OPENGL_ES3_BIT_KHR respectively). To create this patch, I searched for all the ES2 bit plumbing by calling `git grep "ES2_BIT\|DRI_API_GLES2" src/egl`, and then at each location added a case for ES3. Signed-off-by: Chad Versace <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* intel: Expose support for DRI_API_GLES3Chad Versace2013-01-151-0/+2
| | | | | | | | | If the hardware/driver combo supports GLES3, then set the GLES3 bit in intel_screen's bitmask of supported DRI API's. Neither the EGL nor GLX layer uses the bit yet. Signed-off-by: Chad Versace <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* dri: Define enum __DRI_API_GLES3Chad Versace2013-01-152-0/+2
| | | | | | | | | | | | | | This enum corresponds to EGL_OPENGL_ES3_BIT_KHR. Neither the GLX nor EGL layer use the enum yet. I don't like the GLES bits. I'd prefer that all GLES APIs be exposed through a single API bit, as is done in GLX_EXT_create_context_es_profile. But, we need this GLES3 enum in order to do the plumbing necessary to correctly support EGL_OPENGL_ES3_BIT_KHR as required by the EGL_KHR_create_context spec. Signed-off-by: Chad Versace <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* intel: Move validation of context version into intelInitContextChad Versace2013-01-157-105/+100
| | | | | | | | | | | | | | | | | | | | | Each driver (i830, i915, i965) used independent but similar code to validate the requested context version. With the rececnt arrival of GLES3, that logic has needed an update. Rather than apply identical updates to each drivers validation code, let's just move the validation into the shared routine intelInitContext. This refactor required some incidental changes to functions i830CreateContext and intelInitContext. For each function, this patch: - Adds context version parameters to the signature. - Adds a DRI_CTX_ERROR out param to the signature. - Sets the DRI_CTX_ERROR at each early return. Tested against gen6 with piglit egl-create-context-verify-gl-flavor. Verified that this patch does not change the set of exposed EGL context flavors. Signed-off-by: Chad Versace <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* intel: Set screen's api mask according to hw capabilities (v3)Chad Versace2013-01-152-11/+96
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this patch, intelInitScreen2 set DRIScreen::api_mask with the hacky heuristic below: if (gen >= 3) api_mask = GL | GLES1 | GLES2; else api_mask = 0; This hack was likely broken on gen2 (i830), but I don't care enough to properly investigate. It appears that every EGLConfig on i830 has EGL_RENDERABLE_TYPE=0, and thus eglCreateContext will never succeed. Anyway, moving on to living drivers... With the arrival of EGL_OPENGL_ES3_BIT_KHR, this heuristic is now insufficient. We must enable the GLES3 bit if and only if the driver is capable of creating a GLES3 context. This requires us to determine the maximum supported context version supported by the hardware/driver for each api *during initialization of intel_screen*. Therefore, this patch adds four new fields to intel_screen which indicate the maximum supported context version for each api: max_gl_core_version max_gl_compat_version max_gl_es1_version max_gl_es2_version The api mask is now correctly set as: api_mask = GL; if (max_gl_es1_version > 0) api_mask |= GLES1; if (max_gl_es2_version > 0) api_mask |= GLES2; Tested against gen6 with piglit egl-create-context-verify-gl-flavor. Verified that this patch does not change the set of exposed EGL context flavors. v2: - Replace the if-tree on gen with a switch, for Ian. - Unconditionally enable the DRI_API_OPENGL bit, for Ian. v3: - Drop max gl version to 1.4 on gen3 if !has_occlusion_query, because occlusion queries entered core in 1.5. For Ian. v4: - Drop ES2 version back to 2.0 due to rebase (Ian). Signed-off-by: Chad Versace <[email protected]> Reviewed-by: Ian Romanick <ian.d.romanick.intel.com>
* mesa: Return INVALID_ENUM for glReadPixels(..., GL_DEPTH_*, ...) on ES 3Matt Turner2013-01-151-9/+13
| | | | | | | | | | | | | I'm not sure if this is the correct fix. The _mesa_es_error_check_format_and_type function (used above in the ES 1 and 2 cases) was originally added for glTexImage checking and allows GL_DEPTH_STENCIL/GL_UNSIGNED_INT_24_8 combinations. Using it in ES 3 causes other tests to regress. Fixes es3conform's packed_depth_stencil_error test. Reviewed-by: Kenneth Graunke <[email protected]> (v1) Reviewed-by: Anuj Phogat <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* mesa: Return INVALID_OPERATION when type is known but not allowedMatt Turner2013-01-151-1/+11
| | | | | | | | INVALID_ENUM is for when the type is simply not known. Fixes part of es3conform's packed_depth_stencil_error test. Reviewed-by: Kenneth Graunke <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* mesa: Allow HALF_FLOAT in glVertexAttribPointer for GLES3Matt Turner2013-01-151-7/+7
| | | | | | | | Fixes es3conform's half_float_max_vertex_dimensions and half_float_textures tests. Reviewed-by: Jordan Justen <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* mesa: Reject texture-only formats as renderbuffer formats in ES 3Matt Turner2013-01-151-9/+5
| | | | | | | | | | | | | | | | | | | ES 3 specifies some formats as texture-only (i.e., not available for renderbuffers). See the "Required Texture Formats" section (pg 126) of the ES 3 spec. v2: Allow RED and RG float rendering in core profiles The check used to be (version > 30) || (compat profile w/extensions). Just deleting <version > 30) broke 3.0+ core profiles. Fixes es3conform's color_buffer_unsupported_format test. Signed-off-by: Matt Turner <[email protected]> Signed-off-by: Ian Romanick <[email protected]> Acked-by: Kenneth Graunke <[email protected]> Reviewed-by: Anuj Phogat <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* 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]>
* 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]>