Age | Commit message (Collapse) | Author |
|
When a GLSL sampler reads from an incomplete texture it should
return (0,0,0,1). Instead of jumping through hoops in all the drivers
to make this happen, just create/install a fallback texture with those
texel values.
Fixes piglit/fp-incomplete-tex on i965 and more importantly, fixes some
GPU lockups when trying to sample from missing surfaces. If a binding
table entry is NULL, it seems that sampling sometimes works, but not
always (lockup).
Todo: create a fallback texture for each type of texture target?
(cherry picked from commit 3f25219c7bf0f090502489928f0f018e62c4f6cf)
|
|
The current texture for any particular texture unit is given an additional
reference in update_texture_state(); but if the context is closed before
that texture can be released (which is quite frequent in normal use, unless
a program unbinds and deletes the texture and renders without it to force
a call to update_texture_state(), the memory is lost.
This affects general Mesa; but the i965 is particularly affected because
it allocates a considerable amount of additional memory for each allocated
texture.
(cherry picked from master, commit c230767d6956b63a2b101acb48f98823bb5dd31a)
|
|
|
|
|
|
|
|
add new entrypoints, new texture format, etc
translate in texenvprogram.c for drivers using the mesa-generated tex env
fragment program
also handled in swrast, but not tested (cannot work due to negative texel
results not handled correctly)
|
|
It was only used in one place in swrast.
|
|
Another conditional can be avoided.
|
|
Need to clear the _ReallyEnabled field before possibly continuing the loop.
Also, set _Current pointer to NULL if the unit is no longer enabled.
Fixes piglit lodbias regression
|
|
Fixes piglit copytexsubimage regression.
|
|
This field should not include vertex textures. It indicates the coord
inputs for fragment / fixed-function processing.
|
|
We can avoid a few iterations this way.
|
|
|
|
|
|
This trims down and cleans up imports.h and glheader.h quite a bit.
|
|
|
|
Just copy the whole struct.
|
|
|
|
Plus, put them in the order of highest to lowest priority to simplify
the texture_override() loop.
|
|
Use loops to consolidate lots of texture object code.
|
|
Replace Default1D/2D/3D/Cube/etc with DefaultTex[TEXTURE_x_INDEX].
The same should be done with the Current1D/2D/3D/etc pointers...
|
|
New gl_texgen struct allows quite a bit of code reduction.
|
|
|
|
|
|
|
|
If we had a vertex shader but no fragment shader (i.e. fixed function) we
didn't get the right enabled texture targets.
Fixes blank/white texture problem.
|
|
Everyone should be using the newer/better ARB versions of these extensions.
|
|
|
|
See bug #17895. These assertions could be removed when this is resolved.
|
|
The max texture coord units is still 8. All the fixed-function paths are
still limited to 8 too. But GLSL shaders can use more samplers now.
Note that some texcoord-related data structures are declared to be 16
elements in size rather than 8. This just simplifies the code in a few
places; the extra elements aren't accessible to the user.
These changes haven't been extensively tested yet, but sanity checking has
been done.
It should be possible to increase the max image units/samplers to 32 without
doing anything special. Beyond that we'll need longer bitfields in a few
places.
|
|
|
|
|
|
(cherry picked from commit 7ecac78ab53016ae3db3dd601b187cb050037463)
|
|
(cherry picked from commit 27049189d6221fefe43eb55846efaa51742dcdf4)
|
|
Also, check the FEATURE flags in many places.
(cherry picked from commit 40d1a40f294f1ed2dacfad6f5498322fc08cc2d1)
Conflicts:
src/mesa/main/config.h
src/mesa/main/context.c
src/mesa/main/texobj.c
src/mesa/main/texstate.c
src/mesa/main/texstore.c
|
|
Also unify caching of fragment and vertex programs in shader/prog_cache.c`
Brought across from gallium-0.2
|
|
Caught by texturing/gen-teximage test in piglit.
|
|
The old behaviour depended on which texture images the fragment program
reads from, which seems to contradict the shader specifications.
Note: Piglit's general/texgen test checks for this problem.
|
|
GL_REPLACE_EXT comes from the ancient GL_EXT_texture extension. Found an old demo that
actually uses it.
The values of the GL_REPLACE and GL_REPLACE_EXT tokens is different, unfortunately.
|
|
group's objects (Shane Blackett)
|
|
Simplification in colortab.c too.
|
|
|
|
Use new _mesa_reference_texobj() function for referencing/unreferencing
textures. Add new assertions/tests to try to detect invalid usage of
deleted textures.
|
|
state validation/update.
Note that we're still temporarily skipping the test for an active fragment
program. Need to fix shadow2D() ...
|
|
|
|
|
|
|
|
|
|
The ARB_fp (and other assembly-level fragment program specs) say that the
depth comparison function is always GL_NONE in fragment program mode.
|
|
Shadow sampling from texture arrays is still not implemented. Everything
else should be there, though.
|