Catalyst 4.8 ARBfp bug?

I noticed that ProgramEnvParameter4f( FRAGMENT_PROGRAM_ARB, … ) is not updating fragment programs with the correct values unless FRAGMENT_PROGRAM_ARB is disabled while the function is called.

This doesn’t happen with the Catalyst 4.5 driver.

I think this is a bug, at least accoridng to the the spec (taken from ARB_vertex_program)

(11) Should program parameter variables bound to GL state be updated
automatically after the bound state changes? If so, when?

  RESOLVED:  Yes.  Such variables are updated automatically prior to the
  next vertex program invocation with no application intervention
  required.  A proposal to reduce the burden by requiring a manual "update
  state" step was considered and rejected.

I quickly checked and I don’t have this problem. I don’t think it would make much sense if it would have to be disabled to work. It would make more sense if it worked only when FRAGMENT_PROGRAM is eabled.

Thanks for looking, but updating program.env[1] is definitely not working as expected with a certain fragment program, without the disable. Other fragment programs seem to behave normally with regards to this, but there are other things going wrong.

There’s a fragment program that causes rendering to slow to about 6secs/frame, that both compiles and passes the native limit test. I have a feeling that this is not going to be easily reproducible in a test app, but I’ll try.

Falling back to Cat 4.5 solves fixes both of these issues. My 6800 isn’t showing any problems either.

I haven’t done a whole lot of shader debugging to figure out what’s going wrong; I’ll post the offending programs on Monday once I figure out the minimum set of instructions that cause the slowdown. The EnvParameter behaviour I’m just going to assume is a driver bug.