aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* i965/fs: Try to avoid generating extra MOVs to do saturates.Eric Anholt2012-04-113-12/+54
| | | | | | | | | | | | This change (before the previous two) produced a .23% +/- .11% performance improvement in Unigine Tropics at 1024x768 on IVB. Total instructions: 269270 -> 262649 614/2148 programs affected (28.6%) 179386 -> 172765 instructions in affected programs (3.7% reduction) v2: Move some of the logic of finding the instruction that produced the result of an expression tree to a helper.
* glsl: Extend the array splitting optimization pass to matrices.Eric Anholt2012-04-111-11/+18
| | | | | | | | | | | | | | This should fit in well with our lower_mat_op_to_vec code: now, in addition to having expressions on each column of a matrix, we also split the columns to separate variables so they can be tracked individually by the copy propagation, dead code, and other passes. This optimizes out some more code generation in unigine and gstreamer shaders. Total instructions: 269342 -> 269270 14/2148 programs affected (0.7%) 2226 -> 2154 instructions in affected programs (3.2% reduction)
* glsl: Add an array splitting pass.Eric Anholt2012-04-114-0/+380
| | | | | | | | | | | | | | | | | I've had this code laying around almost done for a long time. The idea is like opt_structure_splitting, that we've got a bunch of transforms at the GLSL IR level that only understand scalars and vectors, which just skip complicated dereferences. While driver backends may manage some optimization after they split matrices up themselves, it would be better to bring all of our optimization to bear on the problem. While I wasn't expecting changes quite yet, a few programs end up winning: a gstreamer convolution shader, and the Humus dynamic branching demo: Total instructions: 269430 -> 269342 3/2148 programs affected (0.1%) 1498 -> 1410 instructions in affected programs (5.9% reduction)
* glsl: Don't apply optimization passes to builtins.Eric Anholt2012-04-111-1/+1
| | | | | | The builtins we have are generally optimized, having been hand-written. This avoids generating bad code when an optimization pass prints debug output.
* mesa: add _mesa_total_texture_memory() debug functionBrian Paul2012-04-112-0/+62
| | | | | This function can be called in gdb to find out how much memory is used by all texture objects.
* mesa: new _mesa_total_buffer_object_memory() debug functionBrian Paul2012-04-112-0/+32
| | | | | This function can be called in gdb to find out how much memory is used by buffer objects.
* mapi: Fix Android buildChad Versace2012-04-101-4/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | The Android build was broken by commit ca760181b4420696c7e86aa2951d7203522ad1e8 Author: Kristian Høgsberg <[email protected]> Date: Fri Mar 16 12:55:40 2012 -0400 shared-glapi: Convert to automake The offending change was that it redefined the filepaths in sources.mak like this: - FOO_FILES := bar.c + FOO_FILES := $(TOP)/src/mapi/mapi/bar.c This broke the build because source filepaths in Android makefiles must be relative to the makefile. Ideally, this could be fixed by reverting the change in sources.mak and making shared-glapi's Makefile.am use $(addprefix $(TOP)/src/mapi/mapi, $(FOO_FILES)). However, automake doesn't understand builtin GNU make functions, such as addprefix. So, it seems that automake and Android can no longer share sources.mak. Fix the build by duplicating the source lists from sources.mak into Android.mk. Signed-off-by: Chad Versace <[email protected]>
* egl_dri2: fix aux buffer leak in drm platformMandeep Singh Baines2012-04-101-5/+4
| | | | | | | | Keep a reference to any newly allocated aux buffers to avoid re-allocating for every st_framebuffer_validate() (i.e. leaking). Signed-off-by: Mandeep Singh Baines <[email protected]> Signed-off-by: Kristian Høgsberg <[email protected]>
* i965: Stop lying about cpp and height of a stencil buffer.Paul Berry2012-04-105-45/+66
| | | | | | | | | | | | | | | | | | | | | | | When using a separate stencil buffer, i965 requires that the pitch of the buffer (in the 3DSTATE_STENCIL_BUFFER command) be specified as 2x the actual pitch. Previously this was accomplished by doubling the "cpp" and "pitch" values stored in the intel_region data structure, and halving the height. However, this was confusing, and it led to a subtle (but benign) bug: since a stencil buffer is W-tiled, its true height must be aligned to a multiple of 64; we were accidentally aligning its faux height to a multiple of 64, causing memory to be wasted. Note that for window system stencil buffers, the DDX also doubles the cpp and pitch values. To facilitate fixing this DDX server bug in the future, we fix the cpp and pitch values we receive from the X server only if cpp has the "incorrect" value of 2. Acked-by: Kenneth Graunke <[email protected]> Reviewed-by: Chad Versace <[email protected]> v2: Clarify comments about the DDX.
* wayland-drm: remove wl_buffer.damagePekka Paalanen2012-04-101-7/+0
| | | | | | | | | | | | | | | | | | | | | | | This is a related fix for the Wayland change: commit 83685c506e76212ae4e5cb722205d98d3b0603b9 Author: Kristian Høgsberg <[email protected]> Date: Mon Mar 26 16:33:24 2012 -0400 Remove wl_buffer.damage and simplify shm implementation Apparently, this should also fix a memory leak. When wl_buffer.damage was removed from Wayland and Mesa was not fixed, wl_buffer.destroy ended up in the (empty) damage function instead of calling wl_resource_destroy(). Spotted during build as: CC wayland-drm-protocol.lo wayland-drm.c:80:2: warning: initialization from incompatible pointer type wayland-drm.c:82:1: warning: excess elements in struct initializer wayland-drm.c:82:1: warning: (near initialization for 'drm_buffer_interface') Signed-off-by: Pekka Paalanen <[email protected]>
* st/mesa: Fix uninitialized members in glsl_to_tgsi_visitor constructor.Vinson Lee2012-04-091-0/+4
| | | | | | | | | Fixes uninitialized member defects reported by Coverity. NOTE: This is a candidate for the 8.0 branch. Signed-off-by: Vinson Lee <[email protected]> Reviewed-by: Brian Paul <[email protected]>
* main: Fix memory leak in _mesa_make_extension_string()Chad Versace2012-04-091-0/+2
| | | | | | | | | I forgot to free the string returned by strdup(). Note: This is a candidate for the stable branches. CC: Johannes Obermayr <[email protected]> Reviewed-by: Ian Romanick <[email protected]> Signed-off-by: Chad Versace <[email protected]>
* r600g: check gpr count limitVadim Girlin2012-04-091-0/+8
| | | | | | | | | | This should help to prevent gpu lockups. See https://bugs.freedesktop.org/show_bug.cgi?id=48472 NOTE: This is a candidate for the stable branches. Signed-off-by: Vadim Girlin <[email protected]> Reviewed-by: Alex Deucher <[email protected]>
* glsl: fix variable ordering in the output_read_removerVadim Girlin2012-04-091-1/+17
| | | | | | | Use the hash of the variable name instead of the pointer value. Signed-off-by: Vadim Girlin <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* i965: Add support for sampling texture buffer objects on gen7+.Eric Anholt2012-04-094-1/+71
| | | | Reviewed-by: Kenneth Graunke <[email protected]>
* i965: Add real support for texturing/rendering with MESA_FORMAT_RGBA8888_REV.Eric Anholt2012-04-091-5/+1
| | | | | | | | | | | This was hacked in in one place for EGL image stuff, but the right thing to do was just to provide the mapping from the mesa format to the native hardware format, which includes render target support. This turns out to be required for GL_ARB_texture_buffer_object, which sees data in this layout. Reviewed-by: Kenneth Graunke <[email protected]>
* i965/gen7: Fix the /* ignored */ comment on constant surface setup.Eric Anholt2012-04-091-1/+1
| | | | | | | It turns out this field *is* used, and it's the stride between samples from the buffer. Discovered during TBO debugging. Reviewed-by: Kenneth Graunke <[email protected]>
* mesa: Add support for the GL 3.1 R/RG formats in texture buffer objects.Eric Anholt2012-04-091-0/+54
| | | | | Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
* mesa: Track a gl_format for the texture buffer format.Eric Anholt2012-04-093-168/+76
| | | | | | | | | | | There was a function full of unused mappings from the GLenum to datatype/comps, but that wasn't all the information a driver would want, which includes the other fields that a gl_format has. Given that all the texture buffer formats were represented in gl_format, just use that as our description. Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
* mesa: Handle updating texture state for buffer textures.Eric Anholt2012-04-092-0/+12
| | | | | | | | | We have to skip some work that wants to look at texture images, since buffer textures don't have any of that complexity. Reviewed-by: Dave Airlie <[email protected]> Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
* mesa: Create the default (name==0) buffer texture.Eric Anholt2012-04-091-0/+5
| | | | | | | | All that should be needed is that it exists. Fixes segfaults on first _mesa_update_context() with a samplerBuffer-using shader active but without a particular buffer texture enabled. Reviewed-by: Kenneth Graunke <[email protected]>
* glsl: Add texelFetch(*samplerBuffer) entrypoints to GLSL 1.40.Eric Anholt2012-04-093-4/+15
| | | | | | | | Fix texelFetch(sampler2DRect) and textureSize(samplerBuffer) generation to not reference a LOD at the same time because it's easier than not fixing it. Reviewed-by: Kenneth Graunke <[email protected]>
* glsl: Add support for parsing [iu]samplerBuffer types in GLSL 1.40.Eric Anholt2012-04-092-1/+5
| | | | | | | | | The samplerBuffer type will be undefined in !glsl 1.40, and the keyword is marked as reserved. The [iu]samplerBuffer types are not marked as reserved pre-1.40, so they don't have separate tokens and fall through to normal type handling. Reviewed-by: Kenneth Graunke <[email protected]>
* mesa: Set the correct initial value of the texture buffer object format.Eric Anholt2012-04-091-0/+1
| | | | | | | Fixes piglit GL_ARB_texture_buffer_object/get Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
* mesa: Set up glTexBuffer{,ARB} for display list compile.Eric Anholt2012-04-091-0/+3
| | | | | | | | We're supposed to just immediately call it. Fixes piglit GL_ARB_texture_buffer_object/dlist Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
* glapi: regen for TBO change.Eric Anholt2012-04-0910-9571/+9516
|
* glapi: Mark TexBuffer as an alias of TexBufferARB.Eric Anholt2012-04-091-1/+1
| | | | | | | | This is set correctly in gl.spec, but was missed in Mesa. As a result, only one of the two was hooked up in Mesa. Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
* glsl: Drop the round-trip through ast_type_specifier for many builtin types.Eric Anholt2012-04-094-186/+58
| | | | | | | | | | We have lexer recognition of a bunch of our types based on the handling. This code was mapping those recognized tokens to an enum and then to a string of their name. Just drop the enums and provide the string directly in the parser. Reviewed-by: Ian Romanick <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
* glsl: Use (const char *) in AST nodes rather than plain (char *).Kenneth Graunke2012-04-093-11/+11
| | | | | | | | | | | Nothing actually relied on them being mutable, and there was at least one cast which discarded const qualifiers. The next patch would have introduced many more. Casting away const qualifiers should be avoided if at all possible. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* ff_fragment_shader: Remove some dead fields.Eric Anholt2012-04-091-11/+0
| | | | Reviewed-by: Brian Paul <[email protected]>
* x86-64: Don't print "Initializing x86-64 optimizations" in debug builds.Kenneth Graunke2012-04-091-11/+1
| | | | | | | | | | In "release" builds, Mesa would print this message if the MESA_DEBUG variable was set. Make it so for debug builds as well. I build debug builds all the time, but I'm not debugging this. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* ir_to_mesa: Remove pretense of support for function calls.Kenneth Graunke2012-04-091-181/+5
| | | | | | | | | | | | | | | | | While ir_to_mesa contains code that attempts to support functions, I honestly doubt it's been tested and have little confidence that it works. The comment in visit(ir_function *ir) doesn't inspire confidence: /* Ignore function bodies other than main() -- we shouldn't see calls to * them since they should all be inlined before we get to ir_to_mesa. */ Furthermore, hardware drivers such as i915, i965, and (AFAICT) r200 don't support the BGNSUB/ENDSUB/CAL opcodes anyway. Only swrast does. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* i965: Remove vestiges of function call support from the old VS backend.Kenneth Graunke2012-04-094-188/+0
| | | | | | | | This never worked. brwProgramStringNotify also explicitly rejects programs that use CAL and RET. So there's no need for this to exist. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* i915: set SPRITE_POINT_ENABLE bit correctlyYuanhan Liu2012-04-094-12/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When SPRITE_POINT_ENABLE bit is set, the texture coord would be replaced, and this is only needed when we called something like glTexEnvi(GL_POINT_SPRITE, GL_COORD_REPLACE, GL_TRUE). And more, we currently handle varying inputs as texture coord, we would be careful when setting this bit and set it just when needed, or you will find the value of varying input is not right and changed. Thus we do set SPRITE_POINT_ENABLE bit only when all enabled tex coord units need do CoordReplace. Or fallback is needed to make sure the rendering is right. With handling the bit setup at i915_update_sprite_point_enable(), we don't need the relative code at i915Enable then. This patch would _really_ fix the webglc point-size.html test case and of course, not regress piglit point-sprite and glean-pointSprite testcase. NOTE: This is a candidate for stable release branches. v2: fallback just when all enabled tex coord units need do CoordReplace (Eric) v3: move the sprite point validate code at I915InvalidateState (Eric) v4: sprite point enable bit update based on _NEW_PROGRAM, too add relative _NEW-state comments to show what state is being used(Eric) Signed-off-by: Yuanhan Liu <[email protected]>
* glx: fix compile warningsYuanhan Liu2012-04-091-0/+2
| | | | | | | | Fix 'set but not used' warnings; gl_version, gl_versions_profiles and glx_extensions variables are used just only HAVE_XCB_GLX_CREATE_CONTEXT is defined. Thus those warnings are shown when that macro isn't defined. Signed-off-by: Yuanhan Liu <[email protected]>
* st/xa: Link with -Wl,-r instead of -r.Johannes Obermayr2012-04-071-1/+1
| | | | | This is required to link with clang: /usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000000400160.
* tgsi: Fix conflict with fortify printf redirect in glibc.Johannes Obermayr2012-04-071-17/+17
| | | | | | | | | | | | | | | | Fixes clang error: tgsi/tgsi_dump.c:72:12: error: no member named '__printf_chk' in 'struct dump_ctx' ctx->printf( ctx, "%u", e ); ~~~ ^ /usr/include/bits/stdio2.h:109:3: note: expanded from macro 'printf' __printf_chk (__USE_FORTIFY_LEVEL - 1, __VA_ARGS__) ^ Idea stolen from: http://www.mail-archive.com/[email protected]/msg210998.html Reviewed-by: Brian Paul <[email protected]>
* st/mesa: fix max_offset computation for base vertexBrian Paul2012-04-061-2/+18
| | | | | | | | | | | | | | Add the maximum base vertex offset to max_index for computing the buffer size. Fixes a failed assertion in the u_upload_mgr.c code with the VMware svga driver. Fixes https://bugs.freedesktop.org/show_bug.cgi?id=48141 v2: incorporate Marek's suggestions. NOTE: This is a candidate for the 8.0 branch. Reviewed-by: Marek Olšák <[email protected]>
* svga: add missing cases for PIPE_CAP_x queriesBrian Paul2012-04-061-7/+42
| | | | | | | | | Return 0 for features we don't support. Added debug_printf() warnings when we fail to handle a new PIPE_CAP_x case. That will alert us to interfaces changes in the future. We don't want to just ignore new PIPE_CAPs and possibly miss something important. Reviewed-by: José Fonseca <[email protected]>
* svga: return 1 for PIPE_CAP_VERTEX_COLOR_UNCLAMPED queryBrian Paul2012-04-061-0/+7
| | | | | | | | | | | Before, we weren't clamping the vertex colors produced by ARB vertex programs. This could result in some rendering being too bright (in ETQW, for example). Also add cases for PIPE_CAP_VERTEX_COLOR_CLAMPED and PIPE_CAP_FRAGMENT_COLOR_CLAMPED with comments to be complete. Reviewed-by: José Fonseca <[email protected]>
* svga: handle TGSI_SEMANTIC_CLIPDIST/VERTEX semanticsBrian Paul2012-04-061-0/+7
| | | | | | | We can't support these vertex attributes, but don't die in an assertion. Issue a warning instead. Fixes https://bugs.freedesktop.org/show_bug.cgi?id=48142
* gallium/docs: fix typosBrian Paul2012-04-061-2/+2
|
* i965: Actually upload sampler state pointers for the VS unit on Gen6.Kenneth Graunke2012-04-051-1/+1
| | | | | | | | | | | | | | We already program all the sampler state correctly, we just didn't give the GPU a pointer to it for the VS stage. Thus, any texturing other than texelFetch() wouldn't work. Fixes piglit test vs-textureLod-miplevels and 99 of oglconform's glsl-bif-tex subtests. NOTE: This is a candidate for the 8.0 branch. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
* gallivm: Updated lp_build_log2_approx to use a more accurate polynomial.James Benton2012-04-053-34/+43
| | | | | | | Tested with lp_test_arit with 100% passes and piglit tests with 100% pass for log but some tests still fail for pow. Signed-off-by: José Fonseca <[email protected]>
* gallivm: Updated lp_build_polynomial to compute odd and even terms ↵James Benton2012-04-051-7/+25
| | | | | | separately to decrease data dependency for faster runtime. Signed-off-by: José Fonseca <[email protected]>
* xatracker: fix the build of a 32bit lib on a 64bit osAlexandre Demers2012-04-051-1/+1
| | | | | | we were missing cflags. Signed-off-by: Zack Rusin <[email protected]>
* r600g: inline r600_upload_index_bufferMarek Olšák2012-04-043-14/+5
|
* r600g: inline r600_upload_const_bufferMarek Olšák2012-04-043-50/+32
|
* r600g: handle DISCARD_WHOLE_RESOURCE for buffersMarek Olšák2012-04-042-1/+60
| | | | | | This should prevent stalls and therefore increase perfomance in some cases. Reviewed-by: Alex Deucher <[email protected]>
* r600g: invalidate caches at the beginning of CSMarek Olšák2012-04-041-0/+9
| | | | Reviewed-by: Alex Deucher <[email protected]>