Age | Commit message (Collapse) | Author |
|
|
|
The texture sampling code doesn't really have any dependencies on the
rest of softpipe, just the tile cache.
|
|
The tile cache code now has no hard dependencies on softpipe.
|
|
|
|
|
|
Can't share sampler varients across multiple tex units because the texture
pointer is in the sampler varient. That prevents different textures per unit.
Fixes progs/demos/multiarb, progs/glsl/samplers, etc.
|
|
Fixes progs/demos/cubemap
|
|
|
|
|
|
|
|
|
|
Split into component pieces, stitch together at runtime using function
pointers. Make it possible to utilize the existing fastpaths as image-level
filters for generic mip-filtering routines.
Remove special case for rectangle filtering, as it can now be handled by
the 2d path.
As most of the mesa demo texturing was already covered by fast paths, its
harder to find examples of speedups, but tunnel gets a boost as mip-nearest
filtering is now able to access the img_2d_linear_wrap_POT functions
for sampling within a mipmap level.
|
|
|
|
|
|
|
|
Let eg. sp_get_samples_rect be hooked directly in as the tgsi sampler
routine.
Add a field to determine whether this is a vertex or fragment sampling
call, and massage parameters to match the tgsi call.
|
|
|
|
|
|
Fixes two issues - firstly for mipmap levels with one or more
dimensions smaller than tilesize, the code was sampling off the edge
of the texture (but still within the tile).
Secondly, in the linear_mipmap_linear case, both the default code and
new fastpath were incorrect. This change fixes the fastpath and adds
a comment to the default path, which still needs to be fixed.
Basically the issue is that the coordinates in the smaller texture
level are/were being computed by just dividing thecoordinates from the
larger texture level by two, as in:
x0[j] /= 2;
y0[j] /= 2;
x1[j] /= 2;
y1[j] /= 2;
The issues with this are signficant. Initially x1 is most often equal
to x0+1, but after this, it will likely be equal to x0, so we will not
actually be performing the linear blend within the smaller mipmap.
The fastpath code avoided this (recalculated x1), but was still using
the weighting factors from the larger mipmap level (xw, yw), which
were incorrect.
Change the fastpath code to do two full, independent linear samples of
the two mipmap levels before blending. The default code needs to do
the same thing.
|
|
linear-mip-linear-repeat-POT sampling faspath, provides a very nice
speedup to apps that do this common type of texturing.
Test case: demos/terrain, turn fog off, turn texturing on.
Without patch: 12 fps
With patch: 20 fps.
|
|
|
|
|
|
Also ALGYRHYTHMS.
|
|
Still broken, but compiles cleaner, behaves better, etc.
|
|
This name is totally subject to change if ever I need to separate R3xx
for some other reason.
|
|
This reverts commit 6a40d1e9d96f8e8c57bc3bbd6f567cacd4471f59.
Turns out that we *do* need these for OQ after all. Go figure.
Conflicts:
src/gallium/winsys/drm/radeon/core/radeon_r300.h
|
|
|
|
|
|
These do similar jobs but with largely disjoint code. Will want
to evolve them separately going forward.
|
|
|
|
|
|
- This fixes neverball corruption.
- I'm unsure about what we're actually flushing here.
|
|
|
|
The value is an enum, not a bitmask.
|
|
It's the front stencil methods that have contiguous offsets,
not the back ones.
Unfortunately the names in the header still have FRONT/BACK
reversed, so I'm using hex values until it gets updated.
|
|
- We cannot assume all state objects are present when the pipe context changes.
|
|
The TEX instruction is passed the first index of a contiguous
range of 4 TEMP registers that contain coordinates / LOD and,
after execution, the texel values.
It seems the first index is required to be a multiple of 4 on
some (older ?) cards.
|
|
|
|
The hardware expects a texture's tile mode to change with
the mipmap level.
Also, only multiply by block size once to obtain size.
|
|
Since we don't turn off scissors, we need to update the
stateobj when the framebuffer size changes.
|
|
Now that we know how to make the hardware have y-coordinate origin
top, we can get rid of all the inversion introduced earlier.
|
|
|
|
|
|
|
|
|
|
We need aditional meta data about the usage of the surface
in softpipe because we need to be able tell the diffrence
between PRIMARY and DISPLAY_TARGET surfaces.
|
|
This reverts commit 1295cf423e21dad04a947960782ffa8db2739709.
The original formulation was easier to understand & work with. Will
revisit this later.
|
|
Unshare one function (setup_pos_vector) as we want to push this code
into the generated shader in the SSE case.
|
|
However we do llvm integration, it will be different & more comprehensive
than this.
|
|
|