ir3: use empirical size for params as used by the shader
[mesa.git] / src / gallium / drivers / freedreno / freedreno_texture.c
index 5ba851fa10420a34e453329e312a07d5c2d177a2..5b0bec17f5da417e26f24bb3d598897896fb93e9 100644 (file)
@@ -1,5 +1,3 @@
-/* -*- mode: C; c-file-style: "k&r"; tab-width 4; indent-tabs-mode: t; -*- */
-
 /*
  * Copyright (C) 2012 Rob Clark <robclark@freedesktop.org>
  *
@@ -33,6 +31,7 @@
 
 #include "freedreno_texture.h"
 #include "freedreno_context.h"
+#include "freedreno_resource.h"
 #include "freedreno_util.h"
 
 static void
@@ -76,16 +75,18 @@ static void set_sampler_views(struct fd_texture_stateobj *tex,
                struct pipe_sampler_view *view = views ? views[i] : NULL;
                unsigned p = i + start;
                pipe_sampler_view_reference(&tex->textures[p], view);
-               if (tex->textures[p])
+               if (tex->textures[p]) {
+                       fd_resource_set_usage(tex->textures[p]->texture, FD_DIRTY_TEX);
                        tex->valid_textures |= (1 << p);
-               else
+               } else {
                        tex->valid_textures &= ~(1 << p);
+               }
        }
 
        tex->num_textures = util_last_bit(tex->valid_textures);
 
        for (i = 0; i < tex->num_textures; i++) {
-               uint nr_samples = tex->textures[i]->texture->nr_samples;
+               uint nr_samples = fd_resource_nr_samples(tex->textures[i]->texture);
                samplers |= (nr_samples >> 1) << (i * 2);
        }
 
@@ -119,9 +120,10 @@ fd_set_sampler_views(struct pipe_context *pctx, enum pipe_shader_type shader,
 void
 fd_texture_init(struct pipe_context *pctx)
 {
-       pctx->delete_sampler_state = fd_sampler_state_delete;
-
-       pctx->sampler_view_destroy = fd_sampler_view_destroy;
+       if (!pctx->delete_sampler_state)
+               pctx->delete_sampler_state = fd_sampler_state_delete;
+       if (!pctx->sampler_view_destroy)
+               pctx->sampler_view_destroy = fd_sampler_view_destroy;
 }
 
 /* helper for setting up border-color buffer for a3xx/a4xx: */