-struct exec_info {
- /* This is the array of BOs that were looked up at the start of exec.
- * Command validation will use indices into this array.
- */
- struct drm_gem_cma_object **bo;
- uint32_t bo_count;
-
- /* Current indices into @bo loaded by the non-hardware packet
- * that passes in indices. This can be used even without
- * checking that we've seen one of those packets, because
- * @bo_count is always >= 1, and this struct is initialized to
- * 0.
- */
- uint32_t bo_index[2];
- uint32_t max_width, max_height;
-
- /**
- * This is the BO where we store the validated command lists
- * and shader records.
- */
- struct drm_gem_cma_object *exec_bo;
-
- /**
- * This tracks the per-shader-record state (packet 64) that
- * determines the length of the shader record and the offset
- * it's expected to be found at. It gets read in from the
- * command lists.
- */
- struct vc4_shader_state {
- uint8_t packet;
- uint32_t addr;
- } *shader_state;
-
- /** How many shader states the user declared they were using. */
- uint32_t shader_state_size;
- /** How many shader state records the validator has seen. */
- uint32_t shader_state_count;
-
- /**
- * Computed addresses pointing into exec_bo where we start the
- * bin thread (ct0) and render thread (ct1).
- */
- uint32_t ct0ca, ct0ea;
- uint32_t ct1ca, ct1ea;
- uint32_t shader_paddr;
+struct drm_vc4_bo {
+ struct drm_gem_cma_object base;
+ struct vc4_bo *bo;
+ struct vc4_validated_shader_info *validated_shader;
+ struct list_head unref_head;