lima: fix PP stream terminator size
authorVasily Khoruzhick <anarsoul@gmail.com>
Thu, 17 Oct 2019 02:20:25 +0000 (19:20 -0700)
committerVasily Khoruzhick <anarsoul@gmail.com>
Sun, 5 Jan 2020 08:16:39 +0000 (00:16 -0800)
PP stream terminator size seems to be 4 words, it worked with full PP
stream because we align stream beginning to 32 bytes and BO is
initialized with zeroes. But with partial PP stream it sometimes break
if for new PP stream we reuse BO that has non-zero value at this place.

Reviewed-by: Qiang Yu <yuq825@gmail.com>
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
src/gallium/drivers/lima/lima_draw.c

index 72cd3f6cb35880b72a3addf8a2b96cb428a956e5..5690aba3e3a9b2080d124b910cc3efc6aec5f111 100644 (file)
@@ -425,7 +425,7 @@ lima_get_pp_stream_size(int num_pp, int tiled_w, int tiled_h, uint32_t *off)
     *    extra size should be added to the preceeding stream
     * 2. alignment: each stream address should be 0x20 aligned
     */
-   int delta = tiled_w * tiled_h / num_pp * 16 + 8;
+   int delta = tiled_w * tiled_h / num_pp * 16 + 16;
    int remain = tiled_w * tiled_h % num_pp;
    int offset = 0;
 
@@ -519,6 +519,8 @@ lima_generate_pp_stream(struct lima_context *ctx, int off_x, int off_y,
    for (i = 0; i < num_pp; i++) {
       stream[i][si[i]++] = 0;
       stream[i][si[i]++] = 0xBC000000;
+      stream[i][si[i]++] = 0;
+      stream[i][si[i]++] = 0;
 
       lima_dump_command_stream_print(
          stream[i], si[i] * 4, false, "pp plb stream %d at va %x\n",