| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently in nvXX_transfer_new a temporary as large as the surface is created.
If the subrectangle is not the whole texture we would need to read
back the whole texture, but we aren't.
Thus, everything but the subrectangle specified is loaded as garbage.
This can be seen in progs/demos/ray.
This patch fixes the problem by creating a temporary that covers only
the desired subrectangle.
That makes us hit an alignment assert in nv04_surface_2d.c. Fix it
using the point registers instead of manipulating the swizzled surface
offset to account for the destination coordinates (which do not seem
to have a 1024 limit).
Signed-off-by: Francisco Jerez <[email protected]>
|
|
|
|
|
|
|
|
| |
- unreference state objects so that buffer objects are unreferenced and
eventually destroyed
- free channel at screen's destruction
Based on Krzysztof Smiechowicz's patch.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
nVidia hardware seems to swizzle rectangular texture (with width !=
height) coordinates by swizzling the lower bits and then adding the
higher bits from the larger dimension.
However, nv04_swizzle_bits ignores width and height and just
interleaves everything.
This causes problems with rectangular POT textures with height or
width 2048 or 4096 (but not 2048x1024 where it works by chance) since
the driver swizzles them in 1024x1024 chunks and gets the start
position for the non-first chunks wrong.
The following patch seems to fix those problems.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I just coded a patch that does this and seems to work fine. It must be
fixed since it breaks OpenGL (or the state tracker can be changed, but
it seems better to do it in the driver).
The patch also fixes NV20 and NV30 in the same way. They compile but
are untested.
I would guess that using the 3D engine is faster for the larger
levels, but the 2D engine is faster for the smaller ones (and lacks
this issue).
|
| |
|
| |
|
|\
| |
| |
| |
| | |
Conflicts:
src/mesa/state_tracker/st_draw.c
|
| |
| |
| |
| |
| | |
several drivers which chose to ignore edgeflags might require some more work,
while edgeflags never worked there they might now crash.
|
| |
| |
| |
| |
| | |
Previously they depended on format blocks, but after removing those
they started depending on format encoding.
|
|/
|
|
|
|
|
| |
- Added flush notify functions for NV30 and NV40.
- Flushing mid frame will call flush notify, which will resubmit all
relocs.
- We don't try to recover from reloc failure yet.
|
| |
|
|
|
|
|
|
| |
Thanks to Bob Gleitsmann for the patch.
I'll clean this up in a better way later if noone else beats me to it.
|
|\
| |
| |
| |
| | |
Conflicts:
src/gallium/state_trackers/xorg/xorg_exa.c
|
| | |
|
|/ |
|
|
|
|
| |
width/height/depth arrays
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Workarounds not necessary, SIFM can handle NPOT, we just weren't setting
dst dimensions properly. SIFM can't handle odd w,h though, that still
needs fixing.
|
|
|
|
|
|
| |
Always test for PIPE_TRANSFER_READ/WRITE using the bit-wise and operator, and
add a pipe_transfer_buffer_flags() helper for getting the buffer usage flags
corresponding to them.
|
|
|
|
|
| |
No longer used. S3TC support is queried via
pipe_screen::is_format_supported.
|
|
|
|
| |
Based on the patch from Luo Jinghua.
|
| |
|
| |
|
|
|
|
| |
split copy a bit more
|
| |
|
| |
|
| |
|
|
|
|
| |
default extension list
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
libdrm_nouveau is linked with the winsys, there's no good reason to do all
this through yet another layer.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Also implement context member functions to optimize away those
flushes whenever possible.
Signed-off-by: Thomas Hellstrom <thellstrom-at-vmware-dot-com>
|
|
|
|
|
| |
The format field encodes compressed vs. uncompressed already. We can easily
check if a texture is compressed with pf_is_compressed(texture->format).
|
| |
|
|
|
|
|
|
|
| |
I should have gotten most uses and implementation
correctly fixed, but things might break.
Feel free to blame me.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The core reference counting code is centralized in p_refcnt.h.
This has some consequences related to struct pipe_buffer:
* The screen member of struct pipe_buffer must be initialized, or
pipe_buffer_reference() will crash trying to destroy a buffer with reference
count 0. u_simple_screen takes care of this, but I may have missed some of
the drivers not using it.
* Except for rare exceptions deep in winsys code, buffers must always be
allocated via pipe_buffer_create() or via screen->*buffer_create() rather
than via winsys->*buffer_create().
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
The template makefile that most libraries in
gallium included was based on dri and had a bunch
unrelevant junk in it.
Update it and improve the depending makefiles.
|
|\ |
|