geo wrote:
nop
got this from ian's site. oh! thats great then and hmm may i know how you disassmble these libraries? are you reading binaries? or API documentation? would love to follow your foot steps on this coz i think i can have some spare time for this
First run "nm" on the binary, then pick an interesting function from its output and run "dis -F function_name" on the binary. This will disassemble the chosen function.
The O2 OpenGL libraries have a few functions ending with "_vice" or "_ICE" or something similar (I forgot
), these are the ICE-optimized versions and probably the best place to start.
geo wrote:
hmm if you say disassmble, do you mean you use a debugger to do step by step on the assembly program? or are you decodin raw binaries?
I was just disassembling the binaries with "dis", as mentioned above
Using a debugger would be an overkill, since none of the code is really obfuscated and nobody stripped the symbols, so it's quite readable.
geo wrote:
oh! i think i download that code but it was for linux?
Yes, the project SAQ linked before is for Linux, but some parts of it can still be used on IRIX, e.g. the patches for binutils.
geo wrote:
btw, IIRC i read from Ian site that DMBuffer is used by ICE for input and output while dmIC is the API, does this helps?
That API is too high-level to be of any use in loading code onto the ICE. You should focus on libvice (the IRIX version, not the Linux one) and how that Photoshop plugin or the OpenGL libraries use it.
geo wrote:
hmm if you mean RAM on it does it mean its like a SOC? or you mean registers? coz i thought its an ASIC and ASIC is not capable to have RAM inside?
Sure you can have RAM in ASICs, it just takes up lots of space, so it's usually reserved for cache and buffers which need to be fast
geo wrote:
or do you mean the cache memory?
The ICE actually uses its cache for this, yes
geo wrote:
i also thought that all datas that will pass to ICE is only via DMBuffer in which i assume is only on the main memory right? maybe it just need a pointer?
Yes, the ICE can do DMA to main memory, but not for the code it executes (only for the data it works on), so you need to fit the algorithm you want to run on the ICE inside its on-chip memory.
Also, doing DMA from the ICE chip competes with the main CPU (they're on the same bus), so if the algorithm does lots of memory accesses, it's usually better to run it on the main CPU.
geo wrote:
oh just notice, you meantioned decoding JPEGS.. but i thought ICE was indeed built for JPEGs, do you mean some other format of JPEG?
The ICE is just a MIPS core with a SIMD unit, it doesn't know anything about image formats.
The SIMD unit has some generic instructions present in encoding/decoding JPEGs (e.g. multiply-accumulate), but those are generic and can be used in any other algorithms as well.
geo wrote:
(my luck: paid for PVO, arrived is PVO+MXE)
geo wrote:
oh? you mean the card alone? or the card still inside Octane? that indeed is cool to try!! hehe but how about an OS that doesnt need MMU? Minix maybe? or RISCOS? not sure hehe or an RTOS maybe? i love RTOS coz thats where i work everyday
Inside an Octane. There would be no advantage to running an OS on those processors on the DIVO, though, I just find it interesting, that's all
geo wrote:
oh!! ok2 noted then but hmm its already confirmd it doesnt do floating point as stated at ians notes.. anyway still this ICE needs to be melted hehe
I meant the CPUs on the DIVO board
The ICE can only do integer ops and SIMD on integer vectors, yes.
geo wrote:
btw shades, one question for ICE.. when we use the Analog Video in, is ICE utilized to handle the window size? i mean it can resize the video resolution to a higher without degrading the image quality?
No, scaling things is memory-bound and memory-bound tasks are not good for running on such a coprocessor (there's too much copying involved and that slows things down).
The O2's MACE chip handles resizing video coming from the A/V card.