- Migrate to GLib?
- Add support for external opcodes through (plugins)[https://gitlab.freedesktop.org/gstreamer/orc/-/issues/53]?
- Reduce the API to the minimum to run orcc and the generated code
- Remove orc-stdint.h.
- For
ORC_ENABLE_UNSTABLE_API
, create a private header and keep the symbol there - Make the
OrcX86OpcodeIdx
to not include the accepted type of data (mem, registers, etc) - The
OrcX86Insn
andOrcX86Opcode
have redundant fields. The instruction should include the prefix stuff, not the opcode - (Improve)[https://gitlab.freedesktop.org/gstreamer/orc/-/issues/55] the accumulator implementation to support not only addition but other (already existed) opcodes
- Make all .[ch] files to include only functions that belong to that particular component
- Have all code formatted accordingly
- Have a pre-commit hook to avoid new commits with wrong format
- Avoid using any direct access to a structure from the generated code, use getters/setters instead
- Avoid using any direct access to a structure from other components, use getters/setters instead
- Put every tool under the tools folder
- Have a folder per target
- Share all program code between mmx, sse and avx
- Move target code into a target related file, not a program related file
- Properly set the first shift on x86 loops. A variable with alignment 16 on a 32 byte boundary (AVX) should start the loop at 4 shift, not 0
- Properly align compiler variables on x86 arch, once a known alignment is know, based on iterations mark the
is_aligned
, not only for one var - Make
orc_compiler_append_code
and thereforeORC_ASM_CODE
keep track of the current instruction, to put the comment in the correct place - Have an
ORC_TARGET
envvar to choose the target at runtime
The following items come from the previous TODO and ROADMAP files which still need to be confirmed
- Memory management for executable sections of code.
- Parser
- APIs to handle the replacement for normal functions (schro)
- APIs to handle the construction of functions at runtime (pixman)
- Handle compilation failure to fallback to emulation
- Automatic testing of compiled code
- Automatic speed measurement
- Better MMX and SSE engine latency/throughput measurement
- SSE write alignment
- Handle SSE cache information and small n
- Contant n in NEON
- Aligned source checks
- New opcodes for sampling: video scaling, fir filtering, fir filtering with downsampling, upsampling/downsampling
- New opcodes for composite
- Float parameters
- Inline orc calls in the compiler
- Initialization functions in the compiler
- Instruction scheduler
- Improve emulation