*
*/
+#include "pan_bo.h"
#include "pan_context.h"
+#include "pan_format.h"
#include "util/u_prim.h"
static mali_ptr
slot->size = stride * count;
slot->shift = slot->extra_flags = 0;
+ struct panfrost_batch *batch = panfrost_get_batch_for_fbo(ctx);
struct panfrost_transfer transfer =
- panfrost_allocate_transient(ctx, slot->size);
+ panfrost_allocate_transient(batch, slot->size);
slot->elements = transfer.gpu | MALI_ATTR_LINEAR;
slot->size = MIN2(max_size, expected_size);
/* Grab the BO and bind it to the batch */
- struct panfrost_job *batch = panfrost_get_job_for_fbo(ctx);
+ struct panfrost_batch *batch = panfrost_get_batch_for_fbo(ctx);
struct panfrost_bo *bo = pan_resource(target->buffer)->bo;
- panfrost_job_add_bo(batch, bo);
+
+ /* Varyings are WRITE from the perspective of the VERTEX but READ from
+ * the perspective of the TILER and FRAGMENT.
+ */
+ panfrost_batch_add_bo(batch, bo,
+ PAN_BO_ACCESS_SHARED |
+ PAN_BO_ACCESS_RW |
+ PAN_BO_ACCESS_VERTEX_TILER |
+ PAN_BO_ACCESS_FRAGMENT);
mali_ptr addr = bo->gpu + target->buffer_offset + (offset * slot->stride);
slot->elements = addr;
size_t vs_size = sizeof(struct mali_attr_meta) * vs->tripipe->varying_count;
size_t fs_size = sizeof(struct mali_attr_meta) * fs->tripipe->varying_count;
- struct panfrost_transfer trans = panfrost_allocate_transient(ctx,
+ struct panfrost_batch *batch = panfrost_get_batch_for_fbo(ctx);
+ struct panfrost_transfer trans = panfrost_allocate_transient(batch,
vs_size + fs_size);
struct pipe_stream_output_info so = vs->stream_output;
/* Fix up unaligned addresses */
for (unsigned i = 0; i < so_count; ++i) {
- if (varyings[i].elements < MALI_VARYING_SPECIAL)
+ if (varyings[i].elements < MALI_RECORD_SPECIAL)
continue;
unsigned align = (varyings[i].elements & 63);
}
}
- mali_ptr varyings_p = panfrost_upload_transient(ctx, &varyings, idx * sizeof(union mali_attr));
+ mali_ptr varyings_p = panfrost_upload_transient(batch, &varyings, idx * sizeof(union mali_attr));
ctx->payloads[PIPE_SHADER_VERTEX].postfix.varyings = varyings_p;
ctx->payloads[PIPE_SHADER_FRAGMENT].postfix.varyings = varyings_p;