summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* i965: Don't set iz_lookup the FS precompile's program key on Gen6+.Kenneth Graunke2012-08-251-7/+10
| | | | | | | | | We already changed the actual program key builder to only set these bits on gen < 6; this patch just brings the precompile state back in line so it doesn't mismatch every time. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* i965/fs: Fix INTEL_DEBUG=perf program key printing.Kenneth Graunke2012-08-251-18/+18
| | | | | | | | | | | | | | | | | | | | When dumping differences in program keys, it printed messages of the format: [Name of thing that changed] [new]->[old] This was terribly confusing: the right arrow implies "the value changed from this to that", when in fact the message conveyed the opposite. Except that some of the time, it didn't, since we accidentally swapped the arguments to brw_debug_recompile_sampler_key. With two swaps, it would often come out in the expected format. This patch fixes it to properly print: [Name of thing that changed] [old]->[new] Signed-off-by: Kenneth Graunke <[email protected]>
* mesa: Use a new, more specific hook for shader uniform changes.Kenneth Graunke2012-08-254-2/+19
| | | | | | | | | | | | | | | Gallium drivers and i965 don't require special notification when sampler uniforms change. They simply see the _NEW_TEXTURE and adjust their indirection tables. These drivers don't want ProgramStringNotify: it simply causes pointless recompiles. Unfortunately, i915 still requires shader recompiles and needs ProgramStringNotify. Rather than trying to fix that, simply change the hook to a new, more specific one: ShaderUniformChange. On i915, this translates to ProgramStringNotify; others simply ignore it. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* i965: Use linker-assigned sampler IDs in instruction encoding.Kenneth Graunke2012-08-255-35/+74
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When assigning uniform locations, the linker assigns each sampler uniform a sequential numerical ID. gl_shader_program::SamplerUnits maps these sampler variable IDs to the actual texture units they reference (specified via glUniform1i). Previously, we encoded this mapping in the SEND instruction encoding: the "sampler" was the texture unit number, and the binding table index was SURF_INDEX_TEXTURE(the texture unit number). This unfortunately meant that whenever the application changed the value of a sampler uniform, we had to recompile the shader to change the SEND instructions. This was horrible for the game Cogs, which repeatedly switches between using texture unit 0 and 1. It also made fragment shader precompiles useless: we'd do the precompile at glLinkShader() time, before the application called glUniform1i to set the sampler values. As soon as it did that, we'd have to recompile, wasting time and space in the program cache. This patch encodes the SamplerUnits indirection in the binding table, sampler state, and sampler default color tables. Instead of baking the texture unit number into the shader, we bake in the sampler variable ID assigned by the linker. Since those never change, we don't need to recompile programs on uniform changes. This does mean that the tables now depend on the linked shader program being used for rendering, rather than simply representing all available texture units. This could cause an increase in state emission. Another plus is that the sampler state and sampler default color tables are now compact: we only emit as many entries as there are sampler uniforms, with no holes in the table since the new sampler IDs are sequential. Previously we had to emit a full 16 entries every time, since the tables tracked the state of all active texture units. Signed-off-by: Kenneth Graunke <[email protected]> Acked-by: Paul Berry <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* i965: Add a "sampler state index" parameter to update_sampler_state().Kenneth Graunke2012-08-253-14/+15
| | | | | | | | | | | This represents the index into the sampler state table or sampler default color table (the two are identical). Right now, this is still the texture unit, but that will change shortly. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Paul Berry <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* i965: Un-hardcode WM binding table from update_texture_surface.Kenneth Graunke2012-08-253-20/+31
| | | | | | | | | | Currently, we mirror the VS and WM binding tables' texture entries. That may not continue to be true, so in preparation, pass in the binding table and surface index as arguments. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Paul Berry <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* i965/vs: Rename "sampler" to "texunit" in texturing code.Kenneth Graunke2012-08-251-5/+5
| | | | | | | | | | | The number we're passing around is actually the ID of the texture unit, as opposed to the numerical value our of sampler uniforms. Calling it "texunit" clarifies this slightly. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Paul Berry <[email protected]> Reviewed-by: Ian Romanick <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* i965/fs: Rename "sampler" to "texunit" in texturing code.Kenneth Graunke2012-08-251-14/+14
| | | | | | | | | | | | | | The number we're passing around is actually the ID of the texture unit, as opposed to the numerical value our of sampler uniforms. Calling it "texunit" clarifies this slightly. Don't bother renaming fs_instruction::sampler. Although it's currently the texture unit, this series will change that. No need for the churn. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Paul Berry <[email protected]> Reviewed-by: Ian Romanick <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* i965/fs: Remove unused 'sampler' parameter in emit_texture_genX().Kenneth Graunke2012-08-252-15/+9
| | | | | | | Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Paul Berry <[email protected]> Reviewed-by: Ian Romanick <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* i965: Set SWIZZLE_NOOP for unused texture units in the program keys.Kenneth Graunke2012-08-251-3/+2
| | | | | | | | | | | | | | Previously, we left the swizzle key field as zero for unused texture units. The precompile sets all of them to SWIZZLE_NOOP, which meant that we mismatched almost every time. Since either works equally well, change it to SWIZZLE_NOOP to match the precompiles. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Paul Berry <[email protected]> Reviewed-by: Ian Romanick <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* i965: Remove four and a half year old TODO comments about samplers.Kenneth Graunke2012-08-252-8/+0
| | | | | | | | | | | | | I can't actually understand what these mean, and they seem to essentially say "we should simplify things", which is a nice goal but not very specific. Presumably things got cleaned up at some point. Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Paul Berry <[email protected]> Reviewed-by: Ian Romanick <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* i965: Fix brw_link_shader to return false rather than NULL.Kenneth Graunke2012-08-251-1/+1
| | | | | | | | | | Fixes brw_shader.cpp:101:9: warning: converting to non-pointer type 'GLboolean {aka unsigned char}' from NULL [-Wconversion-null] Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-with-great-enthusiasm-by: Paul Berry <[email protected]> Reviewed-by: Ian Romanick <[email protected]> Reviewed-by Eric Anholt <[email protected]>
* mesa/es: Validate glGetBufferParameteriv pname in Mesa code rather than the ↵Ian Romanick2012-08-242-10/+6
| | | | | | | | | ES wrapper v2: Add proper core-profile and GLES3 filtering. Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* mesa/es: Validate glMapBuffer access in Mesa code rather than the ES wrapperIan Romanick2012-08-242-4/+9
| | | | | | | | | | | v2: Add proper core-profile and GLES3 filtering. v3: *Really* add proper core-profile and GLES3 filtering based on review feedback from Eric Anholt. It looks like previously there was some rebase / merge fail. Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* mesa/es: Validate glBufferData usage in Mesa code rather than the ES wrapperIan Romanick2012-08-242-11/+18
| | | | | | | | | v2: Add proper core-profile and GLES3 filtering based on review feedback from Eric Anholt. It looks like previously there was some rebase / merge fail. Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* mesa/es: Validate buffer object targets in Mesa code rather than the ES wrapperIan Romanick2012-08-242-36/+8
| | | | | | | v2: Add proper core-profile and GLES3 filtering. Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* mesa/es: Validate VertexPointer types in Mesa code rather than the ES wrapperIan Romanick2012-08-242-15/+6
| | | | Signed-off-by: Ian Romanick <[email protected]>
* mesa/es: Remove redundant vertex pointer size validationIan Romanick2012-08-241-6/+0
| | | | Signed-off-by: Ian Romanick <[email protected]>
* mesa/es: Validate TexCoordPointer size in Mesa code rather than the ES wrapperIan Romanick2012-08-242-7/+2
| | | | Signed-off-by: Ian Romanick <[email protected]>
* mesa/es: Validate TexCoordPointer types in Mesa code rather than the ES wrapperIan Romanick2012-08-242-16/+6
| | | | Signed-off-by: Ian Romanick <[email protected]>
* mesa/es: Validate NormalPointer types in Mesa code rather than the ES wrapperIan Romanick2012-08-242-13/+6
| | | | Signed-off-by: Ian Romanick <[email protected]>
* mesa/es: Validate ColorPointer size in Mesa code rather than the ES wrapperIan Romanick2012-08-242-5/+2
| | | | Signed-off-by: Ian Romanick <[email protected]>
* mesa/es: Validate ColorPointer types in Mesa code rather than the ES wrapperIan Romanick2012-08-242-14/+8
| | | | Signed-off-by: Ian Romanick <[email protected]>
* mesa/es: Remove redundant vertex attrib pointer type validationIan Romanick2012-08-241-22/+0
| | | | Signed-off-by: Ian Romanick <[email protected]>
* mesa/es: Remove redundant vertex attrib pointer size validationIan Romanick2012-08-241-7/+0
| | | | Signed-off-by: Ian Romanick <[email protected]>
* mesa/es: Disallow BGRA vertex arrays in ES or ES2 contextsIan Romanick2012-08-241-0/+5
| | | | Signed-off-by: Ian Romanick <[email protected]>
* mesa: Rearrange array type checking, filter more types in ESIan Romanick2012-08-241-9/+25
| | | | | | | | | v2: Fix handling of GL_INT and GL_UNSIGNED_INT types pre-ES3.0, and fix handling of GL_INT_2_10_10_10_REV and GL_UNSIGNED_INT_2_10_10_10_REV in ES3.0. Based on review comments by Ken Graunke. Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Brian Paul <[email protected]>
* mesa: Refactor element type checking into its own functionIan Romanick2012-08-241-23/+25
| | | | | | | | | | | | This consolidates the tests and makes the emitted error message consistent. v2: Rename _mesa_valid_element_type to valid_elements_type. Log the enum string instead of the hex value in error messages. Based on review comments from Brian Paul and Ken Graunke. Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
* wgl: update some commentsBrian Paul2012-08-242-2/+2
|
* st/mesa: don't do (generic) compression of 1D or 1D_ARRAY texturesBrian Paul2012-08-241-1/+11
| | | | | | As with the previous commit for core Mesa. Reviewed-by: Anuj Phogat <[email protected]>
* mesa: add generic compressed -> uncompressed format helperBrian Paul2012-08-242-0/+42
| | | | | | | _mesa_generic_compressed_format_to_uncompressed_format() probably wins the prize for longest function name in Mesa. Reviewed-by: Anuj Phogat <[email protected]>
* mesa: don't try (generic) compression of 1D and 1D_ARRAY texturesBrian Paul2012-08-241-12/+26
| | | | | | | | | | See comments in the code for details. Note: we only need to special-case the generic compressed formats since specific texture formats are error-checked earlier to see if the compression format is compatible with the texture type. Reviewed-by: Anuj Phogat <[email protected]>
* mesa: add texture target field to ChooseTextureFormat() driver hookBrian Paul2012-08-2413-18/+29
| | | | | | | | | This will let us choose the actual hardware format depending on the type of texture. v2: fixup radeon, nouveau, intel and swrast drivers too Reviewed-by: Eric Anholt <[email protected]>
* xlib: remove texture compression hackeryBrian Paul2012-08-243-29/+0
| | | | | | I think this was left-over debug code from long ago. Reviewed-by: Ian Romanick <[email protected]>
* st/mesa: clean up use of 'target' variable in st_context_teximage()Brian Paul2012-08-241-3/+3
| | | | | | | | 'target' was used both as a parameter of type st_texture_type and then re-used for GL_TEXTURE_x targets. Rename the function parameter and add a new local 'GLenum target'. And remove an extraneous break statement.
* automake: convert vgapiMatt Turner2012-08-245-100/+73
|
* build: Check for bison-generated file before bailing because of no bisonMatt Turner2012-08-241-1/+1
| | | | | | .y/.c was a typo. Reviewed-by: Ian Romanick <[email protected]>
* Move _mesa_dl* functions into dlopen.h and inline themMatt Turner2012-08-244-122/+75
| | | | | | No point in having an extra function call for inlinable functions. Reviewed-by: Tapani Pälli <[email protected]>
* mesa/dlopen: use HAVE_DLOPEN instead of _GNU_SOURCETapani Pälli2012-08-243-7/+10
| | | | | | | | | | | | | Patches changes mesa to use 'HAVE_DLOPEN' defined by configure and Android.mk instead of _GNU_SOURCE for detecting dlopen capability. This makes dlopen to work also on Android where _GNU_SOURCE is not defined. [mattst88] v2: HAVE_DLOPEN is sufficient for including dlfcn.h, remove mingw/blrts checks around dlfcn.h inclusion. Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Matt Turner <[email protected]> Signed-off-by: Tapani Pälli <[email protected]>
* build: Only add links to .so files if we're building themMatt Turner2012-08-243-0/+6
| | | | | | Xlib-GLX and OSMesa support static building. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=53962
* build: Add libOSMesa.so.$(VERSION) link to libdirMatt Turner2012-08-241-0/+1
|
* build: Replace OSMESA_VERSION with generic VERSION_NUMBERMatt Turner2012-08-242-4/+5
| | | | Can be used by other modules.
* build: Order AC_CONFIG_FILES listMatt Turner2012-08-241-21/+21
| | | | | Makefiles before .pc files before directories. Alphabetize files of the same type.
* build: Only build libmesa.la when neededMatt Turner2012-08-242-4/+10
| | | | Namely, for Xlib-GLX, OSMesa, or test programs.
* build: Remove duplicate DRI automake conditionalsMatt Turner2012-08-242-5/+2
|
* build: Remove GLU_DIRSMatt Turner2012-08-244-5/+1
|
* build: Only generate dispatch assembly code that will be builtMatt Turner2012-08-241-4/+12
|
* i965: don't clear resolve map when doing fast depth clears.Paul Berry2012-08-241-4/+2
| | | | | | | | | | | | | | | | | | Previously, when performing a fast depth clear, we would also clear the miptree's resolve map. This destroyed important information, since the resolve map contains information about needed resolves for all levels and layers of the miptree, whereas a depth clear only applies to a single level/layer combination at a time. As a result, resolves would sometimes fail to occur, leading to incorrect rendering. Fixes rendering artifacts with shadow maps in Unigine Heaven and Unigine Sanctuary. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=50270 Reviewed-by: Eric Anholt <[email protected]> Reviewed-by: Chad Versace <[email protected]>
* i965/HiZ: remove assertion from intel_resolve_map_set().Paul Berry2012-08-241-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | There are three possible resolve map states for each (level, layer) of a depth miptree: "needs HiZ resolve", "needs depth resolve", and "needs neither". When HiZ was first implemented on i965, any attempt to directly transition between "needs HiZ resolve" and "needs depth resolve" without passing through the "needs neither" state would have been a bug indicating that a necessary resolve hadn't been performed. Accordingly, intel_resolve_map_set() contained an assertion to verify that no such direct transition happened. However, now that we support fast depth clears, there is a valid transition from the "needs HiZ resolve" to the "needs depth resolve" state. When doing a fast depth clear, the old state of the buffer is irrelevant, since we are completely replacing it with the clear value, so it is not necessary to do any resolves before clearing--we can transition, if necessary, directly from the "needs HiZ resolve" state to the "needs depth resolve" state. To avoid spurious assertions in this valid case, this patch just removes the assertion. Reviewed-by: Eric Anholt <[email protected]> Reviewed-by: Chad Versace <[email protected]>
* radeonsi: remove old tilling handlingChristian König2012-08-243-279/+31
| | | | | | | | | Just use the functionality provided by the surface manager instead. This fixes just another bunch of piglit tests. Signed-off-by: Christian König <[email protected]> Reviewed-by: Michel Dänzer <[email protected]>