Skip to content

Metal API Validation assertion "missing Buffer binding" during draw in New Runtime (6.21.1) #455

Description

@khaptonstall

Submission checklist

  • I have confirmed the issue is present in the latest version of RiveRuntime
  • I have searched the documentation and forums and could not find an answer
  • I have searched existing issues and this is not a duplicate

Description

After upgrading from 6.20.5 to 6.21.1, we've started hitting a Metal API Validation assertion when rendering with the New Runtime. It only occurs when "Metal API Validation" is enabled in the scheme's Run → Diagnostics options; with validation disabled the app runs and the animations render fine.

The assertion fires from the Metal command encoder at draw time. Two of the vertex shader's buffer arguments (indices 6 and 7, TC and PB) are reported as unbound. Because it's a hard assertion, the process aborts.

This does not reproduce on 6.20.5, so it appears to be a regression introduced somewhere in the 6.21.x line.

Console output:

-[MTLDebugRenderCommandEncoder validateCommonDrawErrors:], line 6001: error 'Draw Errors Validation
Vertex Function(YB): missing Buffer binding at index 6 for TC[0].
Vertex Function(YB): missing Buffer binding at index 7 for PB[0].
'
-[MTLDebugRenderCommandEncoder validateCommonDrawErrors:], line 6001: error 'Draw Errors Validation
Vertex Function(YB): missing Buffer binding at index 6 for TC[0].
Vertex Function(YB): missing Buffer binding at index 7 for PB[0].
'
-[MTLDebugRenderCommandEncoder validateCommonDrawErrors:]:6001: failed assertion `Draw Errors Validation
Vertex Function(YB): missing Buffer binding at index 6 for TC[0].
Vertex Function(YB): -[MTLDebugRenderCommandEncoder validateCommonDrawErrors:]:6001: failed assertion `Draw Errors Validation
Vertex Function(YB): missing Buffer binding at index 6 for TC[0].
Vertex Function(YB): missing Buffer binding at index 7 for PB[0].
'
missing Buffer binding at index 7 for PB[0].
'
-[MTLDebugRenderCommandEncoder validateCommonDrawErrors:]:6001: failed assertion `Draw Errors Validation
Vertex Function(YB): missing Buffer binding at index 6 for TC[0].
Vertex Function(YB): missing Buffer binding at index 7 for PB[0].
'
CoreSimulator 1051.55 - Device: iPhone 17 Pro (ADDB7915-F08F-4C7E-BAA7-9861662F534E) - Runtime: iOS 26.4 (23E244) - DeviceType: iPhone 17 Pro
-[MTLDebugRenderCommandEncoder validateCommonDrawErrors:]:6001: failed assertion `Draw Errors Validation
Vertex Function(YB): missing Buffer binding at index 6 for TC[0].
Vertex Function(YB): missing Buffer binding at index 7 for PB[0].
'

Previous working version

6.20.5

Rive Apple runtime version

6.21.1

Reproduction steps / code

  1. Edit the run scheme → Run → Diagnostics → enable Metal API Validation.
  2. Build and run a Debug build on the iOS Simulator.
  3. Present a view that renders a .riv file using the New Runtime (Rive Renderer / Metal backend) — e.g. Tests/Assets/data_binding_test.riv from this repo (https://github.com/rive-app/rive-ios/blob/main/Tests/Assets/data_binding_test.riv).
  4. On draw, the validateCommonDrawErrors assertion above fires and the app aborts.

With Metal API Validation disabled, the same flow renders correctly.

Upload your reproduction files / stack trace

No response

Source .riv / .rev file

Tests/Assets/data_binding_test.riv (from this repo)

Screenshots / video

No response

Device

iOS Simulator (iPhone 17 Pro)

Apple OS version

iOS 26.4

Additional context

Only reproduces with Metal API Validation enabled; does not reproduce on 6.20.5.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions