freedreno: Move fs functions after geometry pipeline stages
[mesa.git] / src / gallium / drivers / freedreno / a6xx / fd6_context.c
index 4f696ef092c4a7167d8d949ade545c311dceb4c3..f2e8e4eaf3d4ead3c4962ac806c917bcbbee42ae 100644 (file)
@@ -34,6 +34,7 @@
 #include "fd6_draw.h"
 #include "fd6_emit.h"
 #include "fd6_gmem.h"
+#include "fd6_image.h"
 #include "fd6_program.h"
 #include "fd6_query.h"
 #include "fd6_rasterizer.h"
@@ -49,9 +50,11 @@ fd6_context_destroy(struct pipe_context *pctx)
 
        fd_context_destroy(pctx);
 
-       fd_bo_del(fd6_ctx->vsc_data);
-       fd_bo_del(fd6_ctx->vsc_data2);
-       fd_bo_del(fd6_ctx->blit_mem);
+       if (fd6_ctx->vsc_data)
+               fd_bo_del(fd6_ctx->vsc_data);
+       if (fd6_ctx->vsc_data2)
+               fd_bo_del(fd6_ctx->vsc_data2);
+       fd_bo_del(fd6_ctx->control_mem);
 
        fd_context_cleanup_common_vbos(&fd6_ctx->base);
 
@@ -105,6 +108,9 @@ fd6_context_create(struct pipe_screen *pscreen, void *priv, unsigned flags)
        if (!pctx)
                return NULL;
 
+       /* after fd_context_init() to override set_shader_images() */
+       fd6_image_init(pctx);
+
        util_blitter_set_texture_multisample(fd6_ctx->base.blitter, true);
 
        /* fd_context_init overwrites delete_rasterizer_state, so set this
@@ -112,16 +118,14 @@ fd6_context_create(struct pipe_screen *pscreen, void *priv, unsigned flags)
        pctx->delete_rasterizer_state = fd6_rasterizer_state_delete;
        pctx->delete_depth_stencil_alpha_state = fd6_depth_stencil_alpha_state_delete;
 
-       fd6_ctx->vsc_data = fd_bo_new(screen->dev,
-                       (A6XX_VSC_DATA_PITCH * 32) + 0x100,
-                       DRM_FREEDRENO_GEM_TYPE_KMEM, "vsc_data");
-
-       fd6_ctx->vsc_data2 = fd_bo_new(screen->dev,
-                       A6XX_VSC_DATA2_PITCH * 32,
-                       DRM_FREEDRENO_GEM_TYPE_KMEM, "vsc_data2");
+       /* initial sizes for VSC buffers (or rather the per-pipe sizes
+        * which is used to derive entire buffer size:
+        */
+       fd6_ctx->vsc_data_pitch = 0x440;
+       fd6_ctx->vsc_data2_pitch = 0x1040;
 
-       fd6_ctx->blit_mem = fd_bo_new(screen->dev, 0x1000,
-                       DRM_FREEDRENO_GEM_TYPE_KMEM, "blit");
+       fd6_ctx->control_mem = fd_bo_new(screen->dev, 0x1000,
+                       DRM_FREEDRENO_GEM_TYPE_KMEM, "control");
 
        fd_context_setup_common_vbos(&fd6_ctx->base);