Claude review: drm/imagination: Fit paired fragment job in the correct CCCB

Claude Code Review Bot
2026-03-31T07:33:24Z

Patch Review

**Status**: Correct fix, Cc: stable appropriate.

The core problem: when `prepare_job()` was called recursively for the paired fragment job, it passed the geometry job's `queue` (entity), so `pvr_queue_get_job_cccb_fence()` checked space in the geometry CCCB instead of the fragment CCCB.

The fix moves the fragment job's `done_fence` init and CCCB space check into `pvr_queue_get_paired_frag_job_dep()`, which correctly derives the fragment queue from `frag_job->ctx->queues.fragment`:

```c
+ struct pvr_queue *frag_queue = frag_job ? frag_job->ctx->queues.fragment : NULL;
...
+ pvr_queue_job_fence_init(frag_job->done_fence, frag_queue);
+ return pvr_queue_get_job_cccb_fence(frag_queue, frag_job);
```

This eliminates the recursive `prepare_job()` call entirely. After this change, `pvr_queue_prepare_job()` can use `pvr_queue_job_fence_init(job->done_fence, queue)` unconditionally for non-paired-fragment jobs, which simplifies the code.

The early-return check for `job->paired_job->has_pm_ref` is preserved for the case where `prepare_job()` is called again after the paired fragment job has already been submitted.

**No issues.**