summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* 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]>
* 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.
* svga: implement texture swizzlingBrian Paul2011-09-234-9/+128
| | | | | | | This exposes the GL_EXT_texture_swizzle extension and allows the various depth texture modes to be implemented properly. This, plus a follow-on texture/shadow change fixes quite a few piglit GLSL shadow sampler test failures.
* svga: check that we don't exceed input/ouput register limitsBrian Paul2011-09-233-2/+13
|
* svga: implement point sprite suppportBrian Paul2011-09-238-4/+119
| | | | | | Emit the SVGA3D_RS_POINTSPRITEENABLE render state. When sprite_coord_mode=PIPE_SPRITE_COORD_LOWER_LEFT emit extra frag shader code to invert the Y coordinate of the incoming texcoord.
* svga: add translation for float formatsBrian Paul2011-09-231-0/+14
|
* svga: check to avoid writing beyond end of constant bufferBrian Paul2011-09-231-1/+23
| | | | See bug 688394
* svga: Cleanup format capability checking.José Fonseca2011-09-238-192/+683
| | | | | | Accurately describe what operations are supported when a format caps entry is not advertised by the host, and which formats are never supported, instead of making ad-hoc and often incorrect assumptions.
* svga: Don't use the new depth formats for surfaces that will never be ↵José Fonseca2011-09-235-17/+23
| | | | | | | sampled from. Mitigates issues with hosts where support for these new depth formats is flaky.
* svga: Share one texcoord between depth and fogJakob Bornecrantz2011-09-233-13/+86
|
* svga: Only emit Z depth work if it is actually readJakob Bornecrantz2011-09-232-15/+21
|
* svga: Fix vPos usageJakob Bornecrantz2011-09-231-1/+7
|
* svga: Wip for passing depth in a texcoordJakob Bornecrantz2011-09-233-13/+86
| | | | TODO: Can we pass this as the same texcoord as fog?
* svga: Add a comment about depth format selection.José Fonseca2011-09-231-1/+10
|
* svga: Consider the new depth formats in svga_texture_from_handle().José Fonseca2011-09-231-1/+2
|
* svgadump: Dump the new depth format names.José Fonseca2011-09-231-0/+9
|
* svga: Expose the new depth formatsJakob Bornecrantz2011-09-236-25/+65
|
* svga: Coalesce multiple shader constants in a single command.José Fonseca2011-09-233-4/+178
| | | | | | HWv8 feature. Tested with GoogleEarth, Mesa demos.
* svgadump: Update for svga3d_reg.h header changes.José Fonseca2011-09-231-33/+60
|