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.
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.
And lookup the GLX screen for the context. Otherwise we'll end up
jumping through a NULL-pointer once we try to look up the visual
or config for the shared context.
https://bugs.freedesktop.org/show_bug.cgi?id=14245
Rename vgFooBar to vegaFooBar and use vgapi as the dispatcher. This
makes sure there is always a current context when the internal functions
are called. And eglGetProcAddress is finally supported.