freedreno/a6xx: fix hang with large render target
[mesa.git] / src / gallium / drivers / svga / svga_sampler_view.h
index e64665f2e584a8549a3cdb8bdf9386c46f5bba51..b6f548992e18bd6f6d602715d65c840b17028bbc 100644 (file)
@@ -35,7 +35,9 @@
 struct pipe_context;
 struct pipe_screen;
 struct svga_context;
+struct svga_pipe_sampler_view;
 struct svga_winsys_surface;
+struct svga_surface;
 enum SVGA3dSurfaceFormat;
 
 
@@ -83,15 +85,31 @@ svga_validate_sampler_view(struct svga_context *svga, struct svga_sampler_view *
 void
 svga_destroy_sampler_view_priv(struct svga_sampler_view *v);
 
-static INLINE void
+void
+svga_debug_describe_sampler_view(char *buf, const struct svga_sampler_view *sv);
+
+static inline void
 svga_sampler_view_reference(struct svga_sampler_view **ptr, struct svga_sampler_view *v)
 {
    struct svga_sampler_view *old = *ptr;
 
-   if (pipe_reference(&(*ptr)->reference, &v->reference))
+   if (pipe_reference_described(&(*ptr)->reference, &v->reference, 
+                                (debug_reference_descriptor)svga_debug_describe_sampler_view))
       svga_destroy_sampler_view_priv(old);
    *ptr = v;
 }
 
+boolean
+svga_check_sampler_view_resource_collision(const struct svga_context *svga,
+                                           const struct svga_winsys_surface *res,
+                                           enum pipe_shader_type shader);
+
+boolean
+svga_check_sampler_framebuffer_resource_collision(struct svga_context *svga,
+                                                  enum pipe_shader_type shader);
+
+enum pipe_error
+svga_validate_pipe_sampler_view(struct svga_context *svga,
+                                struct svga_pipe_sampler_view *sv);
 
 #endif