Age | Commit message (Collapse) | Author |
|
|
|
Fixes #29771.
|
|
|
|
Changed by me to use movd instead of movss to avoid penalties.
|
|
|
|
Initialize variables on error paths.
|
|
|
|
We were putting the source pointer in a register used as a temporary,
breaking all paths that don't read the data in a single instruction.
|
|
Fixes MSVC build.
|
|
Assuming the side-effect of x86_make_reg is also unnecessary.
|
|
NOTE: Win64 is untested, and is thus currently disabled.
If you have such a system, please enable it and report whether it works.
To enable it, change src/gallium/auxiliary/translate/translate.c
Changes in v5:
- On Win64, preserve %xmm6 and %xmm7 as required by the ABI
- Use _WIN64 instead of WIN64
Changes in v4:
- Use x86_target() and x86_target_caps()
- Enable translate_sse in x86-64, but not in Win64
Changes in v3:
- Win64 support (untested)
- Use u_cpu_detect.h constants instead of #ifs
Changes in v2:
- Minimize #ifs
- Give a name to magic number CHANNELS_0001
- Add support for CPUs without SSE (only memcpy and swizzles, like non SSE2)
- Fixed comments
translate_sse is currently very limited to the point of
being useless in essentially all cases.
In particular, it only support some float32 and unorm8
formats and doesn't work on x86-64.
This commit rewrites it to support:
1. Dumb memory copy for any pair of identical formats
2. All formats that are swizzles of each other
3. Converting 32/64-bit floats and all 8/16/32-bit integers to 32-bit float
4. Converting unorm8/snorm8 to snorm16 and uscaled8/sscaled8 to sscaled16
5. Support for x86-64 (doesn't take advantage of it in any way though)
This new translate can even be useful to translate index buffers for
cards that lack 8-bit index support.
It passes the testsuite I wrote, but note that this is a major change, and more
testing would be great.
|
|
Currently, only 32-bit indices are supported, but some use cases
translate needs support for all types.
|
|
Currently translate_sse puts two trivial wrappers in the translate vtable.
These slow it down and enlarge the source code for no gain, except perhaps
the ability to set a breakpoint there, so remove them.
Breakpoints can be set on the caller of the translate functions, with no
loss of functionality.
|
|
|
|
The mapping for vertex_array_bgra:
(gl -> st -> translate)
GL_RGBA -> PIPE_FORMAT_R8G8B8A8 (RGBA) -> no swizzle (XYZW)
GL_BGRA -> PIPE_FORMAT_A8R8G8B8 (ARGB) -> ZYXW (BGRA again??)
Iẗ́'s pretty clear that PIPE_FORMAT_A8R8G8B8 here is wrong. This commit
fixes the pipe format and removes obvious workarounds in util/translate.
Tested with: softpipe, llvmpipe, r300g.
Signed-off-by: José Fonseca <jfonseca@vmware.com>
|
|
|
|
|
|
It's all screaming for integer support -- fake it with float for now.
|
|
|
|
|
|
|
|
Modify the translate module to respect instance divisors and accept
instance id as a parameter to calculate input vertex offset.
|
|
|
|
Also, rename p_tile.[ch] to u_tile.[ch]
|
|
Conflicts:
src/gallium/drivers/i915simple/i915_context.h
|
|
Conflicts:
src/gallium/auxiliary/draw/draw_pt_varray.c
src/gallium/auxiliary/draw/draw_pt_varray_tmp.h
src/gallium/auxiliary/draw/draw_pt_vcache.c
|
|
|
|
Conflicts:
src/gallium/auxiliary/draw/draw_pt_varray.c
|
|
|
|
|
|
|
|
Using char * for labels doesn't work if you realloc the function
during assembly and free the old storage...
|
|
|
|
- specify cdecl calling convention on WIN32
- fix load bgra8 function
- fix previous don't crash fix.
|
|
|
|
|