summaryrefslogtreecommitdiff
path: root/src/gallium/auxiliary/translate/translate_sse.c
AgeCommit message (Collapse)Author
2010-10-25translate: use function typedefs, casts to silence warningsBrian Paul
2010-08-24translate_sse: clear state for each function emissionLuca Barbieri
Fixes #29771.
2010-08-23translate_sse: fix x86-64Luca Barbieri
2010-08-22translate_sse: add R32G32B32A32_FLOAT -> X8X8X8X8_UNORM for EMIT_4UBJakob Bornecrantz
Changed by me to use movd instead of movss to avoid penalties.
2010-08-22translate_sse: refactor constant managementLuca Barbieri
2010-08-21translate_sse: Silence uninitialized variable warnings.Vinson Lee
Initialize variables on error paths.
2010-08-19translate_sse: fix emit_load_sse2Luca Barbieri
2010-08-18translate_sse: don't overwrite source buffer pointerLuca Barbieri
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.
2010-08-16translate: Move loop variable declaration outside for loop.Vinson Lee
Fixes MSVC build.
2010-08-16translate: Remove unused temporary register.José Fonseca
Assuming the side-effect of x86_make_reg is also unnecessary.
2010-08-16translate_sse: major rewrite (v5)Luca Barbieri
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.
2010-08-16translate: add support for 8/16-bit indicesLuca Barbieri
Currently, only 32-bit indices are supported, but some use cases translate needs support for all types.
2010-08-16translate_sse: remove useless generated function wrappersLuca Barbieri
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.
2010-04-26translate: Take and respect a max_index argument.José Fonseca
2010-03-12gallium: fix BGRA vertex color swizzlesMarek Olšák
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>
2010-03-01translate: Rename pipe formats.José Fonseca
2010-01-05gallium: Handle InstanceID as a true 32-bit uint.Michal Krol
2009-12-30Add lame support for instanceID to draw module.Michal Krol
It's all screaming for integer support -- fake it with float for now.
2009-12-30Implement instanced indexed draw.Michal Krol
2009-12-30translate: Fix a call to indexed SSE run.Michal Krol
2009-12-30translate: Implement instancing for linear SSE run.Michal Krol
2009-12-29Implement draw_arrays_instanced() in softpipe.Michal Krol
Modify the translate module to respect instance divisors and accept instance id as a parameter to calculate input vertex offset.
2008-11-14translate: pull in prefetch and other optimizations from draw_vs_aos.cKeith Whitwell
2008-08-24gallium: refactor/replace p_util.h with util/u_memory.h and util/u_math.hBrian Paul
Also, rename p_tile.[ch] to u_tile.[ch]
2008-05-30Merge branch 'gallium-tex-surfaces' into gallium-0.1Jakob Bornecrantz
Conflicts: src/gallium/drivers/i915simple/i915_context.h
2008-05-29gallium: MSVC warning fixes.José Fonseca
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
2008-05-28translate: Mark functions as PIPE_CDECL.José Fonseca
2008-05-28Merge branch 'gallium-vertex-linear' into gallium-0.1Jakob Bornecrantz
Conflicts: src/gallium/auxiliary/draw/draw_pt_varray.c
2008-05-28gallium: Windows CE portability fixes.José Fonseca
2008-05-23translate: mark functions as PIPE_CDECLKeith Whitwell
2008-05-23translate: remove spurious commentKeith Whitwell
2008-05-01rtasm: fix labels after (not so) recent change to allow dynamic fn growthKeith Whitwell
Using char * for labels doesn't work if you realloc the function during assembly and free the old storage...
2008-04-21translate: fail on x86 rtasm failKeith Whitwell
2008-04-19translate: fix several bugsKeith Whitwell
- specify cdecl calling convention on WIN32 - fix load bgra8 function - fix previous don't crash fix.
2008-04-19translate: don't crash on failure to create sse versionKeith Whitwell
2008-04-18translate: add sse version based on old draw_vf_sse.cKeith Whitwell