summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* intel: Remove redundant GL_ARB_window_pos enableIan Romanick2011-09-261-1/+0
| | | | | | | | This extension is enabled by default in _mesa_init_extensions, so drivers don't need to enable it again. Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
* dri: Remove redundant GL_SGIS_texture_edge_clamp enablesIan Romanick2011-09-265-5/+0
| | | | | | | | This extension is enabled by default in _mesa_init_extensions, so drivers don't need to enable it again. Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
* i965: Emit depth stalls and flushes before changing depth state on Gen6+.Kenneth Graunke2011-09-263-1/+44
| | | | | | | | | | | | Fixes OpenArena on Gen7. Technically, adding only the first depth stall fixes it, but the documentation says to do all three, and the Windows driver seems to do it. Not observed to fix anything on Gen6 yet. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=38863 Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* intel: Introduce a new intel_context::gt field to go along with gen.Kenneth Graunke2011-09-263-3/+11
| | | | | | | | | | It seems that GT1/GT2 sorts of variations are here to stay, and more special cases will likely be required in the future. Checking by PCI ID via the IS_xxx_GTx macros is cumbersome; introducing a new 'gt' field analogous to intel->gen will make this easier. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* intel: Remove intel_context::has_xrgb_textures/has_luminance_srgb.Kenneth Graunke2011-09-262-28/+13
| | | | | | | | | | | | | Seeing as they were only used once (in the same function they were defined), having them as context members seemed rather pointless. Remove them entirely (rather than using local variables) since the chipset generation checks are actually just as straightforward. While we're at it, clean up the remainder of the if-tree that set them. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* i965: Fix incorrect maximum PS thread count shift on Ivybridge.Kenneth Graunke2011-09-261-1/+1
| | | | | | | | | | | | | | At one point, the documentation said that max thread count in 3DSTATE_PS was at bit offset 23, but it's actually 24 on Ivybridge. Not only did this halve our thread count, it caused us to write 1 into a bit 23, which is marked as MBZ (must be zero). Furthermore, it made us write an even number into this field, which is apparently not allowed. Apparently we were just lucky it worked. NOTE: This is a candidate for the 7.11 branch. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* r600g: add index_bias to index buffer boundsMarek Olšák2011-09-261-0/+5
| | | | | | This fixes ARB_draw_elements_base_vertex with max_index != ~0. NOTE: This is a candidate for the 7.11 branch.
* u_vbuf_mgr: fix uploading with a non-zero index biasMarek Olšák2011-09-261-4/+11
| | | | | | Also don't rely on pipe_draw_info being set correctly. NOTE: This is a candidate for the 7.11 branch.
* u_vbuf_mgr: dereference some pointers only once etc.Marek Olšák2011-09-261-10/+13
|
* u_vbuf_mgr: rework user buffer uploadsMarek Olšák2011-09-261-36/+58
| | | | | | | | | | | - first determine the buffer range to upload for each buffer by walking over vertex elements - take buffer_offset into account - take src_offset into account - take src_format into account in more places - don't just blindly upload (stride*count) bytes NOTE: This is a candidate for the 7.11 branch.
* u_vbuf_mgr: remove unused flag U_VBUF_UPLOAD_FLUSHEDMarek Olšák2011-09-262-21/+6
|
* u_vbuf_mgr: s/u_vbuf_mgr_/u_vbuf_Marek Olšák2011-09-269-82/+81
|
* u_vbuf_mgr: fix max_index computation for large src_offsetMarek Olšák2011-09-261-8/+8
| | | | NOTE: This is a candidate for the 7.11 branch.
* u_vbuf_mgr: don't take per-instance attribs into acc. when computing max indexMarek Olšák2011-09-261-1/+2
| | | | NOTE: This is a candidate for the 7.11 branch.
* u_vbuf_mgr: cleanup original vs real vertex buffer arraysMarek Olšák2011-09-265-47/+45
| | | | | | It can now override both buffer offsets and strides in additions to resources. Overriding buffer offsets was kinda hackish and could cause issues with non-native vertex formats.
* intel: fix potential segfault error at intel_(un)map_texture_imageYuanhan Liu2011-09-261-2/+3
| | | | | | | | | intel_image->mt might be NULL, say with border width set. It then would trigger a segfault at intel_map/unmap_texture_image function. This would fix the oglc misctest(basic.textureBorderIgnore) fail. Signed-off-by: Yuanhan Liu <[email protected]>
* nouveau: fix crash during fence emissionMarcin Slusarz2011-09-251-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | Fence emission can flush the push buffer, which through flush_notify unreferences recently emitted fence. If ref count is increased after fence emission, unreference deletes the fence, which causes SIGSEGV. Backtrace: nouveau_fence_del nouveau_fence_ref nouveau_fence_next nouveau_pushbuf_flush MARK_RING nv50_screen_fence_emit nouveau_fence_emit nv50_flush This bug manifested as an assertion failure in nouveau_fence.c, because SIGSEGV handler tried to shutdown the application and used messed up fence. This issue was reported by Maxim Levitsky. Note: This is a candidate for the 7.11 branch.
* mesa: Also set the remaining draw buffers to GL_NONE when updating just the ↵Henri Verbeet2011-09-251-15/+14
| | | | | | | | | | | | | | | | | first buffer in _mesa_drawbuffers(). Without this we'd miss the last update in a sequence like {COLOR0, COLOR1}, {COLOR0}, {COLOR0, COLOR1}. I originally had a patch for this that called updated_drawbuffers() when the buffer count changed, but later realized that was wrong. The ARB_draw_buffers spec explicitly says "The draw buffer for output colors beyond <n> is set to NONE.", and this is queryable state. This fixes piglit arb_draw_buffers-state_change. NOTE: This is a candidate for the 7.11 branch. Signed-off-by: Henri Verbeet <[email protected]> Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* postprocess: Portability fixes.José Fonseca2011-09-253-24/+27
|
* noop: Always use memory allocation macros.José Fonseca2011-09-251-2/+2
|
* llvmpipe: Always use memory allocation macros.José Fonseca2011-09-251-2/+3
|
* softpipe: Use memory allocation macros.José Fonseca2011-09-252-3/+3
| | | | Fixes segfault with memory debugging on.
* st/vdpau: Link vdpau targets with librt to avoid unresolved symbols error ↵Emeric Grange2011-09-251-1/+1
| | | | | | | | | | | | | | | related to the use of the clock_gettime() function This patch fix a "Unresolved Symbols" run time error when using G3DVL through the VDPAU state tracker, by linking the vdpau targets with librt. Reported by Arkadiusz Miśkiewicz. Caused by this commit : commit e911dbb56374edf9f3b7c4cec0cf9a22738bb198 Author: Emeric Grange <[email protected]> Date: Mon Sep 12 23:39:33 2011 +0200 Signed-off-by: Emeric Grange <[email protected]>
* g3dvl: Don't use SCALED types for iDCTChristian König2011-09-251-4/+4
| | | | | | | This should bring g3dvl back to work until we figured out how SCALED types should really work. Signed-off-by: Christian König <[email protected]>
* draw: Never allocate duplicate extra vertex attribs.José Fonseca2011-09-255-46/+54
| | | | | | | Prevents mismatches when the VS outputs generic attributes not used by the FS. Reviewed-by: Brian Paul <[email protected]>
* draw: Make copy of the TGSI tokens.José Fonseca2011-09-252-2/+6
| | | | | | | | There is no guarantee that the tokens TGSI will persist beyond the create_fs_state. The pipe driver (and therefore the draw module) is responsible for making copies of the TGSI tokens when it needs them. Reviewed-by: Brian Paul <[email protected]>
* glsl: Fix Android buildChad Versace2011-09-241-0/+1
| | | | | | Add lower_clip_distance.cpp to list of source files. Signed-off-by: Chad Versace <[email protected]>
* intel: Remove pointless boolean return value from *_miptree_layout.Kenneth Graunke2011-09-234-24/+11
| | | | | | | | | | i915_miptree_layout, i945_miptree_layout, and brw_miptree_layout always just return GL_TRUE, so there's really no point to it. Change them to void functions and remove the (dead) error checking code. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Yuanhan Liu <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* glsl: Free all S-Expressions immediately after reading IR.Kenneth Graunke2011-09-231-2/+3
| | | | | | | | | For some reason I thought subexpressions were chained off the top-level one. This isn't the case, so just create a temporary context and free it. All of this memory would be eventually freed, but now is freed much sooner. Signed-off-by: Kenneth Graunke <[email protected]>
* glsl: Defer initialization of built-in functions until they're needed.Kenneth Graunke2011-09-234-3/+7
| | | | | | | | | | | | | | | Very simple shaders don't actually use GLSL built-ins. For example: - gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; - gl_FragColor = vec4(0.0); Both of the shaders used by _mesa_meta_glsl_Clear() also qualify. By waiting to initialize the built-ins until the first time we need to look for a signature, we can avoid the overhead entirely in these cases. Makes piglit run roughly 18% faster (255 vs. 312 seconds). Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* i965: Increase MaxClipPlanes to 8 for gen6+.Paul Berry2011-09-231-0/+3
| | | | | | This is necessary for GLSL 1.30 compliance. Reviewed-by: Eric Anholt <[email protected]>
* i965: Allow clip distances to be read back in fragment shaders.Paul Berry2011-09-232-6/+2
| | | | | | | | | | | | | | | | | | | | | | Previously, we conditionally set up the SF pipline stage with a urb_entry_read_offset of 2 when clipping was in use, and 1 otherwise, causing the clip distance VUE slots to be skipped if present. This was an extremely minor savings (it saved the SF unit from reading 2 vec4s out of the URB, but it didn't affect any computation, since we only instruct the SF unit to perform interpolation on VUE slots that are actually used by the fragment shader). GLSL 1.30 requires an interpolated version of gl_ClipDistance to be available for reading in the fragment shader, so we need the SF's urb_entry_read_offset to be 1 when the fragment shader reads from gl_ClipDistance. This patch just unconditionally sets the urb_entry_read_offset to 1 in all cases; this is sufficient to make gl_ClipDistance available to the fragment shader when it is needed, and the performance loss should be negligible when it isn't. Reviewed-by: Eric Anholt <[email protected]>
* i965: Set up clip distance VUE slots appropriately for gl_ClipDistance.Paul Berry2011-09-234-27/+32
| | | | | | | | | | | | | | | When gl_ClipDistance is in use, the contents of the gl_ClipDistance array just need to be copied directly into the clip distance VUE slots, so we re-use the code that copies all other generic VUE slots (this has been extracted to its own method). When gl_ClipDistance is not in use, the vertex shader needs to calculate the clip distances based on user-specified clipping planes. This patch also removes the i965-specific enum values BRW_VERT_RESULT_CLIP[01], since we now have generic Mesa enums that serve the same purpose (VERT_RESULT_CLIP_DIST[01]). Reviewed-by: Eric Anholt <[email protected]>
* i965: Don't upload clip planes when gl_ClipDistance is in use.Paul Berry2011-09-234-7/+12
| | | | | | | | When the vertex shader writes to gl_ClipDistance, we do clipping based on clip distances rather than user clip planes, so don't waste push constant space storing user clip planes that won't be used. Reviewed-by: Eric Anholt <[email protected]>
* i965: Enable lower_clip_distance.Paul Berry2011-09-231-0/+1
| | | | | | | | i965 requires gl_ClipDistance to be formatted as an array of 2 vec4's (as opposed to an array of 8 floats), so enable the lowering pass that performs this conversion. Reviewed-by: Eric Anholt <[email protected]>
* mesa: Decode GL_CLIP_DISTANCE[67] properly in _mesa_set_enable().Paul Berry2011-09-231-6/+8
| | | | | | | | | | | | | In order to support 8 clip distances, we need to properly decode when the user sets the GL_CLIP_DISTANCE6 and GL_CLIP_DISTANCE7 enable flags. For clarity, this patch changes the names GL_CLIP_PLANE[0-5] in the switch statement to the equivalent names GL_CLIP_DISTANCE[0-5], since the GL_CLIP_PLANE names are deprecated. Reviewed-by: Eric Anholt <[email protected]> Tested-by: Brian Paul <[email protected]>
* mesa: set up gl_vert_result and gl_frag_attrib values for gl_ClipDistance.Paul Berry2011-09-232-10/+14
| | | | | | | | | | | | This patch assigns enumerated values for gl_ClipDistance in the gl_vert_result and gl_frag_attrib enums, so that driver back-ends can assign gl_ClipDistance to the appropriate hardware registers. It also adjusts the functions _mesa_vert_result_to_frag_attrib() and _mesa_frag_attrib_to_vert_result() (which translate between the two enums) to correctly translate the new enumerated values. Reviewed-by: Eric Anholt <[email protected]> Tested-by: Brian Paul <[email protected]>
* mesa: Add a flag to indicate whether a program uses gl_ClipDistance.Paul Berry2011-09-233-1/+12
| | | | | | | | | | | | | | | | | | GLSL 1.30 requires us to use gl_ClipDistance for clipping if the vertex shader contains a static write to it, and otherwise use user-defined clipping planes. Since the driver needs to behave differently in these two cases, we need a flag to record whether the shader has written to gl_ClipDistance. The new flag is called UsesClipDistance. We initially store it in gl_shader_program (since that is the data structure that is available when we check to see whethe gl_ClipDistance was written to), and we later copy it to a flag with the same name in gl_vertex_program, since that is a more convenient place for the driver to access it (in i965, at least). Reviewed-by: Eric Anholt <[email protected]> Tested-by: Brian Paul <[email protected]>
* glsl: Implement a lowering pass for gl_ClipDistance.Paul Berry2011-09-236-0/+351
| | | | | | | | | | | | | | | | | | | In i965 GEN6+ (and I suspect most other hardware), gl_ClipDistance needs to be laid out as a pair of vec4's (the first containing clip distances 0-3, and the second containing clip distances 4-7). However, it is declared in GLSL as an array of 8 floats. This lowering pass acts at the GLSL level, modifying the declaration of gl_ClipDistance so that it is an array of vec4's rather than an array of floats, and renaming it to gl_ClipDistanceMESA. In addition, it modifies all accesses to the array so that they access the appropiate component of one of the vec4's. Since some hardware may not internally represent gl_ClipDistance as a pair of vec4's, this lowering pass is optional. To enable it, set the LowerClipDistance flag in gl_shader_compiler_options to true. Reviewed-by: Kenneth Graunke <[email protected]>
* glsl hierarchical visitor: Do not overwrite base_ir for parameter lists.Paul Berry2011-09-232-7/+17
| | | | | | | | | | | | | | This patch fixes a bug in ir_hirearchical_visitor: when traversing an exec_list representing the formal or actual parameters of a function, it modified base_ir to point to each parameter in turn, rather than leaving it as a pointer to the enclosing statement. This was a problem, since base_ir is used by visitor classes to locate the statement containing the node being visited (usually so that additional statements can be inserted before or after it). Without this fix, visitors might attempt to insert statements into parameter lists. Reviewed-by: Kenneth Graunke <[email protected]>
* mesa: Add missing includes to meta.hChad Versace2011-09-231-0/+2
| | | | | | Include mtypes.h. Signed-off-by: Chad Versace <[email protected]>
* docs: mention VMware svga driver updates in 7.12 release notesBrian Paul2011-09-231-0/+1
|
* svga: indentation/formatting fixesBrian Paul2011-09-231-16/+16
|
* svga: remove emit_consts() offset parameterBrian Paul2011-09-231-3/+7
| | | | It was always zero.
* svga: s/int/unsigned/ in svga_state_constants.cBrian Paul2011-09-231-3/+7
| | | | Be consistent with other functions in the file. And add some comments.
* svga: s/unit/shader/ and related clean-upsBrian Paul2011-09-231-19/+23
| | | | 'shader' is more intuitive. Also s/int/unsigned/ and add assertions.
* svga: clean up return values and error codesBrian Paul2011-09-2315-97/+92
| | | | | | Previously we were using a hodge podge of int vs. pipe_enum and 0 vs. PIPE_OK. Some functions that always returned PIPE_OK were made void.
* svga: add format translation for DXT/sRGB formatsBrian Paul2011-09-231-2/+8
| | | | | Without this, apps/tests that tried to use a DXT/sRGB format would die on a failed assertion (st_texture.c:80).
* svga: test register W component in emit_kil()Brian Paul2011-09-231-16/+44
| | | | | | Only the XYZ components are checked to be negative by SVGA3DOP_TEXKILL. GL_ARB_fp requires all four components be checked. Emit a second texkill for W if needed.
* svga: fix depth/shadow compare for non-projected texcoordsBrian Paul2011-09-231-16/+24
| | | | | | | We only need to do the divide by Q step for TXP instructions. This fixes the incorrectly rendered soft shadow test in Lightsmark. Along with the previous texture swizzle commit, this also fixes all the piglit glsl-fs-shadow2d-XX.shader_test failures.