rbug: remove superfluous NULL check
[mesa.git] / src / gallium / auxiliary / driver_rbug / rbug_screen.c
index 6d93fb8e953375d3adf93f8612c2f7936dff21d6..5f27b628e8f7c3d382940626d4b3691523ab473b 100644 (file)
@@ -37,7 +37,7 @@
 #include "rbug_context.h"
 #include "rbug_objects.h"
 
-DEBUG_GET_ONCE_BOOL_OPTION(rbug, "GALLIUM_RBUG", FALSE)
+DEBUG_GET_ONCE_BOOL_OPTION(rbug, "GALLIUM_RBUG", false)
 
 static void
 rbug_screen_destroy(struct pipe_screen *_screen)
@@ -119,7 +119,7 @@ rbug_screen_get_paramf(struct pipe_screen *_screen,
                              param);
 }
 
-static boolean
+static bool
 rbug_screen_is_format_supported(struct pipe_screen *_screen,
                                 enum pipe_format format,
                                 enum pipe_texture_target target,
@@ -138,6 +138,23 @@ rbug_screen_is_format_supported(struct pipe_screen *_screen,
                                       tex_usage);
 }
 
+static void
+rbug_screen_query_dmabuf_modifiers(struct pipe_screen *_screen,
+                                   enum pipe_format format, int max,
+                                   uint64_t *modifiers,
+                                   unsigned int *external_only, int *count)
+{
+   struct rbug_screen *rb_screen = rbug_screen(_screen);
+   struct pipe_screen *screen = rb_screen->screen;
+
+   screen->query_dmabuf_modifiers(screen,
+                                  format,
+                                  max,
+                                  modifiers,
+                                  external_only,
+                                  count);
+}
+
 static struct pipe_context *
 rbug_screen_context_create(struct pipe_screen *_screen,
                            void *priv, unsigned flags)
@@ -152,6 +169,17 @@ rbug_screen_context_create(struct pipe_screen *_screen,
    return NULL;
 }
 
+static bool
+rbug_screen_can_create_resource(struct pipe_screen *_screen,
+                                const struct pipe_resource *templat)
+{
+   struct rbug_screen *rb_screen = rbug_screen(_screen);
+   struct pipe_screen *screen = rb_screen->screen;
+
+   return screen->can_create_resource(screen,
+                                      templat);
+}
+
 static struct pipe_resource *
 rbug_screen_resource_create(struct pipe_screen *_screen,
                             const struct pipe_resource *templat)
@@ -168,6 +196,25 @@ rbug_screen_resource_create(struct pipe_screen *_screen,
    return NULL;
 }
 
+static struct pipe_resource *
+rbug_screen_resource_create_with_modifiers(struct pipe_screen *_screen,
+                                           const struct pipe_resource *templat,
+                                           const uint64_t *modifiers, int count)
+{
+   struct rbug_screen *rb_screen = rbug_screen(_screen);
+   struct pipe_screen *screen = rb_screen->screen;
+   struct pipe_resource *result;
+
+   result = screen->resource_create_with_modifiers(screen,
+                                                   templat,
+                                                   modifiers,
+                                                   count);
+
+   if (result)
+      return rbug_resource_create(rb_screen, result);
+   return NULL;
+}
+
 static struct pipe_resource *
 rbug_screen_resource_from_handle(struct pipe_screen *_screen,
                                  const struct pipe_resource *templ,
@@ -198,7 +245,7 @@ rbug_screen_check_resource_capability(struct pipe_screen *_screen,
    return screen->check_resource_capability(screen, resource, bind);
 }
 
-static boolean
+static bool
 rbug_screen_resource_get_handle(struct pipe_screen *_screen,
                                 struct pipe_context *_pipe,
                                 struct pipe_resource *_resource,
@@ -215,6 +262,28 @@ rbug_screen_resource_get_handle(struct pipe_screen *_screen,
                                       resource, handle, usage);
 }
 
+static bool
+rbug_screen_resource_get_param(struct pipe_screen *_screen,
+                               struct pipe_context *_pipe,
+                               struct pipe_resource *_resource,
+                               unsigned plane,
+                               unsigned layer,
+                               enum pipe_resource_param param,
+                               unsigned handle_usage,
+                               uint64_t *value)
+{
+   struct rbug_screen *rb_screen = rbug_screen(_screen);
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct rbug_resource *rb_resource = rbug_resource(_resource);
+   struct pipe_screen *screen = rb_screen->screen;
+   struct pipe_resource *resource = rb_resource->resource;
+
+   return screen->resource_get_param(screen, rb_pipe ? rb_pipe->pipe : NULL,
+                                     resource, plane, layer, param,
+                                     handle_usage, value);
+}
+
+
 static void
 rbug_screen_resource_get_info(struct pipe_screen *_screen,
                               struct pipe_resource *_resource,
@@ -238,8 +307,7 @@ rbug_screen_resource_changed(struct pipe_screen *_screen,
    struct pipe_screen *screen = rb_screen->screen;
    struct pipe_resource *resource = rb_resource->resource;
 
-   if (screen->resource_changed)
-      screen->resource_changed(screen, resource);
+   screen->resource_changed(screen, resource);
 }
 
 static void
@@ -279,7 +347,7 @@ rbug_screen_fence_reference(struct pipe_screen *_screen,
                            fence);
 }
 
-static boolean
+static bool
 rbug_screen_fence_finish(struct pipe_screen *_screen,
                          struct pipe_context *_ctx,
                          struct pipe_fence_handle *fence,
@@ -292,7 +360,17 @@ rbug_screen_fence_finish(struct pipe_screen *_screen,
    return screen->fence_finish(screen, ctx, fence, timeout);
 }
 
-boolean
+static int
+rbug_screen_fence_get_fd(struct pipe_screen *_screen,
+                         struct pipe_fence_handle *fence)
+{
+   struct rbug_screen *rb_screen = rbug_screen(_screen);
+   struct pipe_screen *screen = rb_screen->screen;
+
+   return screen->fence_get_fd(screen, fence);
+}
+
+bool
 rbug_enabled()
 {
    return debug_get_option_rbug();
@@ -328,17 +406,22 @@ rbug_screen_create(struct pipe_screen *screen)
    rb_screen->base.get_shader_param = rbug_screen_get_shader_param;
    rb_screen->base.get_paramf = rbug_screen_get_paramf;
    rb_screen->base.is_format_supported = rbug_screen_is_format_supported;
+   SCR_INIT(query_dmabuf_modifiers);
    rb_screen->base.context_create = rbug_screen_context_create;
+   SCR_INIT(can_create_resource);
    rb_screen->base.resource_create = rbug_screen_resource_create;
+   SCR_INIT(resource_create_with_modifiers);
    rb_screen->base.resource_from_handle = rbug_screen_resource_from_handle;
    SCR_INIT(check_resource_capability);
    rb_screen->base.resource_get_handle = rbug_screen_resource_get_handle;
+   SCR_INIT(resource_get_param);
    SCR_INIT(resource_get_info);
    SCR_INIT(resource_changed);
    rb_screen->base.resource_destroy = rbug_screen_resource_destroy;
    rb_screen->base.flush_frontbuffer = rbug_screen_flush_frontbuffer;
    rb_screen->base.fence_reference = rbug_screen_fence_reference;
    rb_screen->base.fence_finish = rbug_screen_fence_finish;
+   rb_screen->base.fence_get_fd = rbug_screen_fence_get_fd;
 
    rb_screen->screen = screen;