Age | Commit message (Collapse) | Author |
|
Changes:
- Disable swizzling on non-RGBA 2D textures, since the current 2D
code is mostly broken in those cases. A later patch will fix this.
Thanks to Andrew Randrianasulu who reported this.
- Fix compressed texture transfers and hack around the current 2D
code inability to copy compressed textures by using direct access.
Thanks to Andrew Randrianasulu who reported this.
This patch rewrites all the miptree layout and transfer code in the
nvfx driver.
The current code is broken in several ways:
1. 3D textures are laid out first by face, then by level, which is
incorrect
2. Cube maps should have 128-byte aligned faces
3. Swizzled textures have a strange alignment test that seems
unnecessary
4. We store the image_offsets for each face/slice but they can be
easily computed instead
5. "Swizzling" is not supported for compressed formats. They can be
"swizzled" but swizzling only means that there are no gaps (pitch is
level-dependant) and the layout is still linear
6. Swizzling is not supported for non-RGBA formats. All formats (except
possibly depth) can be swizzled according to my testing.
The miptree layout is rewritten based on my empirical testing, which I
posted in the "miptree findings" mail.
The image_offset array is removed, since it can be calculated with a
simple multiplication; the only array in the miptree structure is now
the one for mipmap level starts, which it seems cannot be easily
computed in constant time.
Also, we now directly store a nouveau_bo instead of a pipe_buffer in
the miptree structure, like nv50 does.
Support for render temporaries is removed, and will be readded in a
later patch.
Note that the current temporary code is broken, because it does not
copy the temporary back on render cache flushes.
|
|
Add a function to get whether a resource is likely on the GPU or not.
Currently always returns TRUE.
|
|
|
|
|
|
|
|
A source line was put in the wrong place.
|
|
The trace driver's implementation of sampler_view_destroy was calling
directly into the underlying pipe's sampler_view_destroy implementation.
This causes problems for pipes that keep references to sampler views
even after the state tracker has released them. Instead, we'll simply
drop the trace driver's reference to the pipe's sampler view.
Signed-off-by: José Fonseca <jfonseca@vmware.com>
|
|
The trace driver was tracing the unwrapped version of the index buffer
when setting the index buffer. This caused an assert validating that
a resource belonged to the trace driver to fail. Instead, we'll log
the unmodified index buffer structure when setting the index buffer.
Signed-off-by: José Fonseca <jfonseca@vmware.com>
|
|
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
|
|
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
|
|
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
|
|
|
|
|
|
|
|
Searched for them with:
git grep -E '[!=]=.*PIPE_TEXTURE_2D|PIPE_TEXTURE_2D.*[!=]=|case.*PIPE_TEXTURE_2D'
Behavior hasn't been changed.
|
|
|
|
|
|
|
|
To my knowledge, there is no way to flush zmask and thus write the clear
value.
This fixes zbuffer reads, among other things.
|
|
|
|
This pretty much ports the code from r600c, however it doesn't
always seem to work quite perfectly, but I can't find anything in this
code that is wrong. I'm guessing either literal input or constants
aren't working always.
|
|
|
|
|
|
the first two are straight op2's and the DDX/DDY are taken from r600c.
|
|
fixes fp-set-01 and glsl-fs-step
|
|
fixes biased texturing tests
|
|
Don't do perspective for TEX, and also copy input to a temporary for TEX
also add tex opcode names
|
|
makes glsl-fs-log2 and glsl1-integer division with uniform var pass
|
|
fixes piglit pointAtten and point-sprite tests
|
|
This still needs work, passes tex3d, fbo-scissor-bitmap, scissor-bitmap
|
|
h needs to be rounded up, this probably needs revisiting when we get
to tiling etc.
fixes fbo-generatemipmap-npot
|
|
8 more piglit tests pass,
fbo-clearmipmap, fbo-copyteximage, fbo-generatemipmap,
fbo-generatemipmap-nonsquare, fbo-generatemipmap-scissor,
fbo-generatemipmap-viewport, gen-teximage, gen-texsubimage
|
|
Signed-off-by: Jerome Glisse <jglisse@redhat.com>
|
|
we were destroying the mm before unrefing all the objects, so segfault.
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
|
Apart from the fact that the radeon.h/r600_states.h editing is a nightmare, this
wasn't so bad.
passes piglit user-clip test now also trivial tests.
Signed-off-by: Dave Airlie <airlied@redhat.com>
|
|
Reported-by: Niels Ole Salscheider <niels_ole@salscheider-online.de>
|
|
|
|
Signed-off-by: Marek Olšák <maraeo@gmail.com>
|
|
This changes r300_destroy_context() so it can be called
on a partially-initialized context, and uses it when
r300_create_context() hits a fatal error.
This makes sure r300_create_context() doesn't leak memory
or neglect to call r300_update_num_contexts() when it fails.
Signed-off-by: Marek Olšák <maraeo@gmail.com>
|
|
This fixes a potential bug if (has_hyperz) is false
(it would still init the atom as if has_hyperz were true).
Signed-off-by: Marek Olšák <maraeo@gmail.com>
|
|
|
|
|
|
Check for these and route them to a dedicated handler with one fewer
levels of recursive rasterization.
|
|
|
|
No need to calculate these values any longer, nor to store them in the
bin data. Improves isosurf a bit more, 115->123 fps.
|
|
For 16 and 64 pixel levels, calculate a mask which is linear in x and
y (ie not in the swizzle layout).
When iterating over full and partial masks, figure out position by
manipulating the bit number set in the mask, rather than relying on
postion arrays.
Similarly, calculate the lower-level c values from dcdx, dcdy and the
position rather than relying on the step array.
|
|
|
|
|
|
No noticable slowdown with isosurf.
|
|
isosurf 95->115 fps just by exchanging the two inner loops in this
function...
|