OSDN Git Service

freedreno/msm: simplify emit_reloc_ring() vfunc
authorRob Clark <robclark@freedesktop.org>
Wed, 10 Oct 2018 15:10:39 +0000 (11:10 -0400)
committerRob Clark <robclark@freedesktop.org>
Sat, 13 Oct 2018 21:23:12 +0000 (17:23 -0400)
Now that it doesn't have to deal with the ringmarker case, we can make
some simplifications.

Signed-off-by: Rob Clark <robclark@freedesktop.org>
freedreno/freedreno_priv.h
freedreno/freedreno_ringbuffer.c
freedreno/kgsl/kgsl_ringbuffer.c
freedreno/msm/msm_ringbuffer.c

index 48cd638..b8eac4b 100644 (file)
@@ -140,8 +140,7 @@ struct fd_ringbuffer_funcs {
        void (*emit_reloc)(struct fd_ringbuffer *ring,
                        const struct fd_reloc *reloc);
        uint32_t (*emit_reloc_ring)(struct fd_ringbuffer *ring,
-                       struct fd_ringbuffer *target, uint32_t cmd_idx,
-                       uint32_t submit_offset, uint32_t size);
+                       struct fd_ringbuffer *target, uint32_t cmd_idx);
        uint32_t (*cmd_count)(struct fd_ringbuffer *ring);
        void (*destroy)(struct fd_ringbuffer *ring);
 };
index ddaa463..8f0093a 100644 (file)
@@ -166,8 +166,7 @@ drm_public uint32_t
 fd_ringbuffer_emit_reloc_ring_full(struct fd_ringbuffer *ring,
                struct fd_ringbuffer *target, uint32_t cmd_idx)
 {
-       uint32_t size = offset_bytes(target->cur, target->start);
-       return ring->funcs->emit_reloc_ring(ring, target, cmd_idx, 0, size);
+       return ring->funcs->emit_reloc_ring(ring, target, cmd_idx);
 }
 
 drm_public uint32_t
index 7361f7d..42a0e0a 100644 (file)
@@ -174,13 +174,12 @@ static void kgsl_ringbuffer_emit_reloc(struct fd_ringbuffer *ring,
 }
 
 static uint32_t kgsl_ringbuffer_emit_reloc_ring(struct fd_ringbuffer *ring,
-               struct fd_ringbuffer *target, uint32_t cmd_idx,
-               uint32_t submit_offset, uint32_t size)
+               struct fd_ringbuffer *target, uint32_t cmd_idx)
 {
        struct kgsl_ringbuffer *target_ring = to_kgsl_ringbuffer(target);
        assert(cmd_idx == 0);
-       (*ring->cur++) = target_ring->bo->gpuaddr + submit_offset;
-       return size;
+       (*ring->cur++) = target_ring->bo->gpuaddr;
+       return  offset_bytes(target->cur, target->start);
 }
 
 static void kgsl_ringbuffer_destroy(struct fd_ringbuffer *ring)
index 304be11..24aa9fd 100644 (file)
@@ -566,15 +566,14 @@ static void msm_ringbuffer_emit_reloc(struct fd_ringbuffer *ring,
 }
 
 static uint32_t msm_ringbuffer_emit_reloc_ring(struct fd_ringbuffer *ring,
-               struct fd_ringbuffer *target, uint32_t cmd_idx,
-               uint32_t submit_offset, uint32_t size)
+               struct fd_ringbuffer *target, uint32_t cmd_idx)
 {
        struct msm_cmd *cmd = NULL;
        struct msm_ringbuffer *msm_target = to_msm_ringbuffer(target);
        uint32_t idx = 0;
        int added_cmd = FALSE;
-
-       submit_offset += msm_target->offset;
+       uint32_t size;
+       uint32_t submit_offset = msm_target->offset;
 
        LIST_FOR_EACH_ENTRY(cmd, &msm_target->cmd_list, list) {
                if (idx == cmd_idx)
@@ -593,6 +592,7 @@ static uint32_t msm_ringbuffer_emit_reloc_ring(struct fd_ringbuffer *ring,
                size = cmd->size;
        } else {
                struct fd_ringbuffer *parent = ring->parent ? ring->parent : ring;
+               size = offset_bytes(target->cur, target->start);
                added_cmd = get_cmd(parent, cmd, submit_offset, size,
                                MSM_SUBMIT_CMD_IB_TARGET_BUF);
        }