This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

glGetProgramBinary unsupported?

When I query the binary, I really get a binary and nothing human readable. I was expecting to see the generated assembly code like how Nvidia returns it. It's really difficult to write a maxFLOPS test without seeing this assembly. Moreover the Midgard architecture is a mixmatch between old school VLIW and scalar so I never know whether scalar or vector MULs are being generated from my code.

Parents
  • Sonic's reply is bang on, there are no guarantees about the data being returned by getProgramBinaryOES, contractually it is only intended to be passed back to ProgramBinaryOES. ARM do not currently provide public access to the ISA documentation for Mali GPUs, or any shader dis-assembly tools.

    pdsharma wrote:

    the Midgard architecture is a mixmatch between old school VLIW and scalar so I never know whether scalar or vector MULs are being generated from my code.

    Just to clarify, the vector and scalar functional units present in the A-pipe are entirely instructable by a given VLIW, there is no separate scalar instruction type. If you are performing a multiply on 2 vectors, this will be executed in the VMUL unit. Conversely float * float is executed on the SMUL. I don't believe there's anything fancy going on in that regard

    Hth,

    Chris

Reply
  • Sonic's reply is bang on, there are no guarantees about the data being returned by getProgramBinaryOES, contractually it is only intended to be passed back to ProgramBinaryOES. ARM do not currently provide public access to the ISA documentation for Mali GPUs, or any shader dis-assembly tools.

    pdsharma wrote:

    the Midgard architecture is a mixmatch between old school VLIW and scalar so I never know whether scalar or vector MULs are being generated from my code.

    Just to clarify, the vector and scalar functional units present in the A-pipe are entirely instructable by a given VLIW, there is no separate scalar instruction type. If you are performing a multiply on 2 vectors, this will be executed in the VMUL unit. Conversely float * float is executed on the SMUL. I don't believe there's anything fancy going on in that regard

    Hth,

    Chris

Children