When internal_format and tex->format differ, st_finailize_texture will
surface_copy between surfaces with different formats. This commit works
around the issue by ignoring internal_format. A sane fix is needed
here.
In particular, don't use the clamped lod to compute level + 1, or
lod in [-1, 0] range will actually interpolate with level 1.
This makes Mipfilter DCT pass 100%.
Also start axing the code duplication for scalar case. The olution is to
treat the scalar case specially in a few innermost functions, and leave
outer functions untouched.
It's quite a pain to remember the details after a while, and it is quite
likely we'll want to use this again, either for different polynomial
orders or different functions, so commit it here.
The advantage of range[-0.5, 0.5] is that it doesn't require floor (for
which intrinsics are only available in SSE4.1).
But the EXP opcode pretty much forces us to use floor, and there is a
good floor approximation around truncation available anyway.
This fixes EXP failures in VShader DCT.
This reduces redundant code by moving:
- CS space reservation
- buffer validation
- dirty state emission
- index bias emission
- AOS emission
into r300_prepare_for_rendering.
The cont_mask must be restored and exec mask recomputed in order to decide
whether to repeat the loop or not.
Unlike the continue mask, the break_mask must be preserved across loop
iterations.
Fixes several VShader DCT cases, and no regressions with glean.
Mainly for the recent work on mapi and gles. The latter adds some
sources to src/mesa/main that are generated on the fly. This makes
python a requirement for building Mesa. An alternative is to package
those sources into the tarballs. That may be done in another commit.
The new target installs client API modules to EGL_DRIVER_INSTALL_DIR.
They are used by st/egl.
The client APIs are built from OpenGL and OpenVG state trackers. For
this to work, st/vega is modified to produce a static library,
libvega.a, instead. st/es is also not needed any more. It is removed
and --with-state-trackers=es is replaced by --enable-gles-overlay.
As st/egl now has its own client API modules, this solves the ABI issue
between st/egl and client APIs, as long as the client API modules are
distributed with st/egl. Plus, this allows st/egl to support OpenGL
with non-Gallium libGL.so.
Define <API>_LIB, <API>_LIB_NAME, <API>_LIB_GLOB, and some other
variables in the configs. Fix a typo in glesv1_cm.pc.in where an
inexistent variable is used.