COPY_4V(value, ctx->Transform._ClipUserPlane[plane]);
}
return;
+
+ case STATE_ATOMIC_COUNTER_OFFSET:
+ {
+ const GLuint counter = (GLuint) state[1];
+ val[0].i = ctx->AtomicBufferBindings[counter].Offset % ctx->Const.ShaderStorageBufferOffsetAlignment;
+ }
+ return;
}
}
case STATE_CLIP_INTERNAL:
return _NEW_TRANSFORM | _NEW_PROJECTION;
+ /* Needs to return any nonzero value to trigger constant updating */
+ case STATE_ATOMIC_COUNTER_OFFSET:
+ return _NEW_PROGRAM_CONSTANTS;
+
case STATE_TCS_PATCH_VERTICES_IN:
case STATE_TES_PATCH_VERTICES_IN:
case STATE_INTERNAL_DRIVER:
case STATE_CLIP_INTERNAL:
append(dst, "clipInternal");
break;
+ case STATE_ATOMIC_COUNTER_OFFSET:
+ append(dst, "counterOffset");
+ break;
default:
/* probably STATE_INTERNAL_DRIVER+i (driver private state) */
append(dst, "driverState");
case STATE_LIGHT_POSITION_NORMALIZED:
case STATE_LIGHT_HALF_VECTOR:
case STATE_CLIP_INTERNAL:
+ case STATE_ATOMIC_COUNTER_OFFSET:
append_index(str, state[1], false);
break;
case STATE_POINT_SIZE:
STATE_ADVANCED_BLENDING_MODE,
STATE_ALPHA_REF, /* alpha-test reference value */
STATE_CLIP_INTERNAL, /* similar to STATE_CLIPPLANE, but in clip-space */
+ STATE_ATOMIC_COUNTER_OFFSET, /* the byte offset to add to atomic counter bindings */
STATE_INTERNAL_DRIVER, /* first available state index for drivers (must be last) */