GN build: remove Linux support

No longer used.

Change-Id: I4b0026fbe3092e39bc2e6569928256710f1dcb22
Reviewed-on: https://fuchsia-review.googlesource.com/c/third_party/mesa/+/982951
Reviewed-by: John Bauman <jbauman@google.com>
Commit-Queue: Craig Stout <cstout@google.com>
diff --git a/include/BUILD.gn b/include/BUILD.gn
index e1e963e..e95e79f 100644
--- a/include/BUILD.gn
+++ b/include/BUILD.gn
@@ -29,9 +29,6 @@
   if (is_fuchsia) {
     defines = [ "VK_USE_PLATFORM_FUCHSIA=1" ]
   }
-  if (is_linux) {
-    defines = [ "VK_USE_PLATFORM_WAYLAND_KHR=1" ]
-  }
 }
 
 mesa_source_set("vulkan") {
@@ -44,9 +41,6 @@
     "vulkan/vulkan.h",
     "vulkan/vulkan_intel.h",
   ]
-  if (is_linux) {
-    public_deps = [ "//third_party/wayland:client_headers" ]
-  }
 }
 
 mesa_source_set("c_compat") {
diff --git a/src/gbm/BUILD.gn b/src/gbm/BUILD.gn
deleted file mode 100644
index 3b297b0..0000000
--- a/src/gbm/BUILD.gn
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 2021 The Fuchsia Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import("../../mesa.gni")
-
-mesa_source_set("gbm_src") {
-  defines = [ "USE_MAGMA=1" ]
-
-  sources = [
-    "backends/magma/gbm_magma.c",
-    "main/gbm.c",
-    "main/backend.c",
-  ]
-
-  include_dirs = [
-    "main",
-    "//third_party/mesa/include",
-  ]
-
-  deps = [
-    "//src/graphics/lib/magma/src/libmagma_virt",
-  ]
-
-  cflags_c = [ "-Wno-strict-prototypes" ]
-}
-
-shared_library("gbm") {
-  public_deps = [ "//third_party/mesa/include:gbm-header" ]
-  deps = [ ":gbm_src" ]
-}
diff --git a/src/intel/vulkan/BUILD.gn b/src/intel/vulkan/BUILD.gn
index 22a38b4..6aee86e 100644
--- a/src/intel/vulkan/BUILD.gn
+++ b/src/intel/vulkan/BUILD.gn
@@ -22,6 +22,8 @@
 import("../../../mesa.gni")
 import("//src/graphics/lib/magma/gnbuild/magma.gni")
 
+assert(is_fuchsia)
+
 declare_args() {
   # TODO(https://fxbug.dev/42146493) - remove once external sync FD extensions fully supported
   anv_enable_external_sync_fd = false
@@ -87,10 +89,6 @@
     ]
   }
 
-  if (is_linux) {
-    deps += [ "//src/graphics/lib/magma/src/libmagma_virt" ]
-  }
-
   configs = [ ":vulkan_icd_config" ]
 }
 
@@ -103,11 +101,6 @@
   ]
   cflags_cc = [ "-Wno-c++11-narrowing" ]
 
-  if (is_linux) {
-    # TODO(https://fxbug.dev/42082076): support flexible device path
-    defines = [ "DEV_GPU_PATH_OVERRIDE=\"/dev/magma0\"" ]
-  }
-
   public_configs = [
     ":vulkan_internal_config",
     "$mesa_build_root/src/vulkan/runtime:magma_config",
@@ -135,10 +128,6 @@
     "//sdk/lib/magma_client:magma_headers",
   ]
 
-  if (is_linux) {
-    deps += [ "//third_party/wayland:client" ]
-  }
-
   sources = [
     "$target_gen_dir/anv_entrypoints.c",
     "$target_gen_dir/anv_entrypoints.h",
diff --git a/src/vulkan/wsi/BUILD.gn b/src/vulkan/wsi/BUILD.gn
index 4951a6a..aacb915 100644
--- a/src/vulkan/wsi/BUILD.gn
+++ b/src/vulkan/wsi/BUILD.gn
@@ -95,17 +95,5 @@
 
   include_dirs = [ "$target_gen_dir" ]
 
-  if (is_linux) {
-    public_deps += [ "wayland" ]
-    sources += [
-      "wsi_common_drm.c",
-      "wsi_common_wayland.c",
-      "wsi_common_wayland.h",
-    ]
-    defines = [
-      "VK_USE_PLATFORM_WAYLAND_KHR=1",
-      "USE_MAGMA=1"
-    ]
-  }
   configs = [ "//build/config:Wno-conversion" ]
 }
diff --git a/src/vulkan/wsi/wayland/BUILD.gn b/src/vulkan/wsi/wayland/BUILD.gn
deleted file mode 100644
index 9745ca5..0000000
--- a/src/vulkan/wsi/wayland/BUILD.gn
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright 2019 Google, LLC
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
-# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-# IN THE SOFTWARE.
-
-import("//third_party/wayland/wayland.gni")
-
-if (is_linux) {
-  # Do not remove this guard. Refer to OSRB-209 for context.
-  group("wayland") {
-    visibility = [ "//third_party/mesa/*" ]
-    public_deps = [
-      "//third_party/wayland:client_headers",
-      ":dmabuf_code",
-      ":dmabuf_header",
-      ":drm_code",
-      ":drm_header",
-    ]
-  }
-}
-
-wayland_protocol_code("dmabuf_code") {
-  visibility = [ ":*" ]
-  protocol = "linux-dmabuf-unstable-v1.xml"
-  output = "${target_gen_dir}/linux-dmabuf-unstable-v1-protocol.c"
-}
-
-wayland_protocol_header("dmabuf_header") {
-  visibility = [ ":*" ]
-  protocol = "linux-dmabuf-unstable-v1.xml"
-  variant = "client"
-  core = false
-  output = "${target_gen_dir}/linux-dmabuf-unstable-v1-client-protocol.h"
-}
-
-wayland_protocol_code("drm_code") {
-  visibility = [ ":*" ]
-  protocol = "../../../egl/wayland/wayland-drm/wayland-drm.xml"
-  output = "${target_gen_dir}/wayland-drm-protocol.c"
-}
-
-wayland_protocol_header("drm_header") {
-  visibility = [ ":*" ]
-  protocol = "../../../egl/wayland/wayland-drm/wayland-drm.xml"
-  variant = "client"
-  core = false
-  output = "${target_gen_dir}/wayland-drm-client-protocol.h"
-}
diff --git a/src/vulkan/wsi/wayland/linux-dmabuf-unstable-v1.xml b/src/vulkan/wsi/wayland/linux-dmabuf-unstable-v1.xml
deleted file mode 100644
index bb36257..0000000
--- a/src/vulkan/wsi/wayland/linux-dmabuf-unstable-v1.xml
+++ /dev/null
@@ -1,586 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<protocol name="linux_dmabuf_unstable_v1">
-
-  <copyright>
-    Copyright © 2014, 2015 Collabora, Ltd.
-
-    Permission is hereby granted, free of charge, to any person obtaining a
-    copy of this software and associated documentation files (the "Software"),
-    to deal in the Software without restriction, including without limitation
-    the rights to use, copy, modify, merge, publish, distribute, sublicense,
-    and/or sell copies of the Software, and to permit persons to whom the
-    Software is furnished to do so, subject to the following conditions:
-
-    The above copyright notice and this permission notice (including the next
-    paragraph) shall be included in all copies or substantial portions of the
-    Software.
-
-    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
-    THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-    DEALINGS IN THE SOFTWARE.
-  </copyright>
-
-  <interface name="zwp_linux_dmabuf_v1" version="4">
-    <description summary="factory for creating dmabuf-based wl_buffers">
-      Following the interfaces from:
-      https://www.khronos.org/registry/egl/extensions/EXT/EGL_EXT_image_dma_buf_import.txt
-      https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_image_dma_buf_import_modifiers.txt
-      and the Linux DRM sub-system's AddFb2 ioctl.
-
-      This interface offers ways to create generic dmabuf-based wl_buffers.
-
-      Clients can use the get_surface_feedback request to get dmabuf feedback
-      for a particular surface. If the client wants to retrieve feedback not
-      tied to a surface, they can use the get_default_feedback request.
-
-      The following are required from clients:
-
-      - Clients must ensure that either all data in the dma-buf is
-        coherent for all subsequent read access or that coherency is
-        correctly handled by the underlying kernel-side dma-buf
-        implementation.
-
-      - Don't make any more attachments after sending the buffer to the
-        compositor. Making more attachments later increases the risk of
-        the compositor not being able to use (re-import) an existing
-        dmabuf-based wl_buffer.
-
-      The underlying graphics stack must ensure the following:
-
-      - The dmabuf file descriptors relayed to the server will stay valid
-        for the whole lifetime of the wl_buffer. This means the server may
-        at any time use those fds to import the dmabuf into any kernel
-        sub-system that might accept it.
-
-      However, when the underlying graphics stack fails to deliver the
-      promise, because of e.g. a device hot-unplug which raises internal
-      errors, after the wl_buffer has been successfully created the
-      compositor must not raise protocol errors to the client when dmabuf
-      import later fails.
-
-      To create a wl_buffer from one or more dmabufs, a client creates a
-      zwp_linux_dmabuf_params_v1 object with a zwp_linux_dmabuf_v1.create_params
-      request. All planes required by the intended format are added with
-      the 'add' request. Finally, a 'create' or 'create_immed' request is
-      issued, which has the following outcome depending on the import success.
-
-      The 'create' request,
-      - on success, triggers a 'created' event which provides the final
-        wl_buffer to the client.
-      - on failure, triggers a 'failed' event to convey that the server
-        cannot use the dmabufs received from the client.
-
-      For the 'create_immed' request,
-      - on success, the server immediately imports the added dmabufs to
-        create a wl_buffer. No event is sent from the server in this case.
-      - on failure, the server can choose to either:
-        - terminate the client by raising a fatal error.
-        - mark the wl_buffer as failed, and send a 'failed' event to the
-          client. If the client uses a failed wl_buffer as an argument to any
-          request, the behaviour is compositor implementation-defined.
-
-      For all DRM formats and unless specified in another protocol extension,
-      pre-multiplied alpha is used for pixel values.
-
-      Warning! The protocol described in this file is experimental and
-      backward incompatible changes may be made. Backward compatible changes
-      may be added together with the corresponding interface version bump.
-      Backward incompatible changes are done by bumping the version number in
-      the protocol and interface names and resetting the interface version.
-      Once the protocol is to be declared stable, the 'z' prefix and the
-      version number in the protocol and interface names are removed and the
-      interface version number is reset.
-    </description>
-
-    <request name="destroy" type="destructor">
-      <description summary="unbind the factory">
-        Objects created through this interface, especially wl_buffers, will
-        remain valid.
-      </description>
-    </request>
-
-    <request name="create_params">
-      <description summary="create a temporary object for buffer parameters">
-        This temporary object is used to collect multiple dmabuf handles into
-        a single batch to create a wl_buffer. It can only be used once and
-        should be destroyed after a 'created' or 'failed' event has been
-        received.
-      </description>
-      <arg name="params_id" type="new_id" interface="zwp_linux_buffer_params_v1"
-           summary="the new temporary"/>
-    </request>
-
-    <event name="format">
-      <description summary="supported buffer format">
-        This event advertises one buffer format that the server supports.
-        All the supported formats are advertised once when the client
-        binds to this interface. A roundtrip after binding guarantees
-        that the client has received all supported formats.
-
-        For the definition of the format codes, see the
-        zwp_linux_buffer_params_v1::create request.
-
-        Starting version 4, the format event is deprecated and must not be
-        sent by compositors. Instead, use get_default_feedback or
-        get_surface_feedback.
-      </description>
-      <arg name="format" type="uint" summary="DRM_FORMAT code"/>
-    </event>
-
-    <event name="modifier" since="3">
-      <description summary="supported buffer format modifier">
-        This event advertises the formats that the server supports, along with
-        the modifiers supported for each format. All the supported modifiers
-        for all the supported formats are advertised once when the client
-        binds to this interface. A roundtrip after binding guarantees that
-        the client has received all supported format-modifier pairs.
-
-        For legacy support, DRM_FORMAT_MOD_INVALID (that is, modifier_hi ==
-        0x00ffffff and modifier_lo == 0xffffffff) is allowed in this event.
-        It indicates that the server can support the format with an implicit
-        modifier. When a plane has DRM_FORMAT_MOD_INVALID as its modifier, it
-        is as if no explicit modifier is specified. The effective modifier
-        will be derived from the dmabuf.
-
-        A compositor that sends valid modifiers and DRM_FORMAT_MOD_INVALID for
-        a given format supports both explicit modifiers and implicit modifiers.
-
-        For the definition of the format and modifier codes, see the
-        zwp_linux_buffer_params_v1::create and zwp_linux_buffer_params_v1::add
-        requests.
-
-        Starting version 4, the modifier event is deprecated and must not be
-        sent by compositors. Instead, use get_default_feedback or
-        get_surface_feedback.
-      </description>
-      <arg name="format" type="uint" summary="DRM_FORMAT code"/>
-      <arg name="modifier_hi" type="uint"
-           summary="high 32 bits of layout modifier"/>
-      <arg name="modifier_lo" type="uint"
-           summary="low 32 bits of layout modifier"/>
-    </event>
-
-    <!-- Version 4 additions -->
-
-    <request name="get_default_feedback" since="4">
-      <description summary="get default feedback">
-        This request creates a new wp_linux_dmabuf_feedback object not bound
-        to a particular surface. This object will deliver feedback about dmabuf
-        parameters to use if the client doesn't support per-surface feedback
-        (see get_surface_feedback).
-      </description>
-      <arg name="id" type="new_id" interface="zwp_linux_dmabuf_feedback_v1"/>
-    </request>
-
-    <request name="get_surface_feedback" since="4">
-      <description summary="get feedback for a surface">
-        This request creates a new wp_linux_dmabuf_feedback object for the
-        specified wl_surface. This object will deliver feedback about dmabuf
-        parameters to use for buffers attached to this surface.
-
-        If the surface is destroyed before the wp_linux_dmabuf_feedback object,
-        the feedback object becomes inert.
-      </description>
-      <arg name="id" type="new_id" interface="zwp_linux_dmabuf_feedback_v1"/>
-      <arg name="surface" type="object" interface="wl_surface"/>
-    </request>
-  </interface>
-
-  <interface name="zwp_linux_buffer_params_v1" version="4">
-    <description summary="parameters for creating a dmabuf-based wl_buffer">
-      This temporary object is a collection of dmabufs and other
-      parameters that together form a single logical buffer. The temporary
-      object may eventually create one wl_buffer unless cancelled by
-      destroying it before requesting 'create'.
-
-      Single-planar formats only require one dmabuf, however
-      multi-planar formats may require more than one dmabuf. For all
-      formats, an 'add' request must be called once per plane (even if the
-      underlying dmabuf fd is identical).
-
-      You must use consecutive plane indices ('plane_idx' argument for 'add')
-      from zero to the number of planes used by the drm_fourcc format code.
-      All planes required by the format must be given exactly once, but can
-      be given in any order. Each plane index can be set only once.
-    </description>
-
-    <enum name="error">
-      <entry name="already_used" value="0"
-             summary="the dmabuf_batch object has already been used to create a wl_buffer"/>
-      <entry name="plane_idx" value="1"
-             summary="plane index out of bounds"/>
-      <entry name="plane_set" value="2"
-             summary="the plane index was already set"/>
-      <entry name="incomplete" value="3"
-             summary="missing or too many planes to create a buffer"/>
-      <entry name="invalid_format" value="4"
-             summary="format not supported"/>
-      <entry name="invalid_dimensions" value="5"
-             summary="invalid width or height"/>
-      <entry name="out_of_bounds" value="6"
-             summary="offset + stride * height goes out of dmabuf bounds"/>
-      <entry name="invalid_wl_buffer" value="7"
-             summary="invalid wl_buffer resulted from importing dmabufs via
-               the create_immed request on given buffer_params"/>
-    </enum>
-
-    <request name="destroy" type="destructor">
-      <description summary="delete this object, used or not">
-        Cleans up the temporary data sent to the server for dmabuf-based
-        wl_buffer creation.
-      </description>
-    </request>
-
-    <request name="add">
-      <description summary="add a dmabuf to the temporary set">
-        This request adds one dmabuf to the set in this
-        zwp_linux_buffer_params_v1.
-
-        The 64-bit unsigned value combined from modifier_hi and modifier_lo
-        is the dmabuf layout modifier. DRM AddFB2 ioctl calls this the
-        fb modifier, which is defined in drm_mode.h of Linux UAPI.
-        This is an opaque token. Drivers use this token to express tiling,
-        compression, etc. driver-specific modifications to the base format
-        defined by the DRM fourcc code.
-
-        Starting from version 4, the invalid_format protocol error is sent if
-        the format + modifier pair was not advertised as supported.
-
-        This request raises the PLANE_IDX error if plane_idx is too large.
-        The error PLANE_SET is raised if attempting to set a plane that
-        was already set.
-      </description>
-      <arg name="fd" type="fd" summary="dmabuf fd"/>
-      <arg name="plane_idx" type="uint" summary="plane index"/>
-      <arg name="offset" type="uint" summary="offset in bytes"/>
-      <arg name="stride" type="uint" summary="stride in bytes"/>
-      <arg name="modifier_hi" type="uint"
-           summary="high 32 bits of layout modifier"/>
-      <arg name="modifier_lo" type="uint"
-           summary="low 32 bits of layout modifier"/>
-    </request>
-
-    <enum name="flags" bitfield="true">
-      <entry name="y_invert" value="1" summary="contents are y-inverted"/>
-      <entry name="interlaced" value="2" summary="content is interlaced"/>
-      <entry name="bottom_first" value="4" summary="bottom field first"/>
-    </enum>
-
-    <request name="create">
-      <description summary="create a wl_buffer from the given dmabufs">
-        This asks for creation of a wl_buffer from the added dmabuf
-        buffers. The wl_buffer is not created immediately but returned via
-        the 'created' event if the dmabuf sharing succeeds. The sharing
-        may fail at runtime for reasons a client cannot predict, in
-        which case the 'failed' event is triggered.
-
-        The 'format' argument is a DRM_FORMAT code, as defined by the
-        libdrm's drm_fourcc.h. The Linux kernel's DRM sub-system is the
-        authoritative source on how the format codes should work.
-
-        The 'flags' is a bitfield of the flags defined in enum "flags".
-        'y_invert' means the that the image needs to be y-flipped.
-
-        Flag 'interlaced' means that the frame in the buffer is not
-        progressive as usual, but interlaced. An interlaced buffer as
-        supported here must always contain both top and bottom fields.
-        The top field always begins on the first pixel row. The temporal
-        ordering between the two fields is top field first, unless
-        'bottom_first' is specified. It is undefined whether 'bottom_first'
-        is ignored if 'interlaced' is not set.
-
-        This protocol does not convey any information about field rate,
-        duration, or timing, other than the relative ordering between the
-        two fields in one buffer. A compositor may have to estimate the
-        intended field rate from the incoming buffer rate. It is undefined
-        whether the time of receiving wl_surface.commit with a new buffer
-        attached, applying the wl_surface state, wl_surface.frame callback
-        trigger, presentation, or any other point in the compositor cycle
-        is used to measure the frame or field times. There is no support
-        for detecting missed or late frames/fields/buffers either, and
-        there is no support whatsoever for cooperating with interlaced
-        compositor output.
-
-        The composited image quality resulting from the use of interlaced
-        buffers is explicitly undefined. A compositor may use elaborate
-        hardware features or software to deinterlace and create progressive
-        output frames from a sequence of interlaced input buffers, or it
-        may produce substandard image quality. However, compositors that
-        cannot guarantee reasonable image quality in all cases are recommended
-        to just reject all interlaced buffers.
-
-        Any argument errors, including non-positive width or height,
-        mismatch between the number of planes and the format, bad
-        format, bad offset or stride, may be indicated by fatal protocol
-        errors: INCOMPLETE, INVALID_FORMAT, INVALID_DIMENSIONS,
-        OUT_OF_BOUNDS.
-
-        Dmabuf import errors in the server that are not obvious client
-        bugs are returned via the 'failed' event as non-fatal. This
-        allows attempting dmabuf sharing and falling back in the client
-        if it fails.
-
-        This request can be sent only once in the object's lifetime, after
-        which the only legal request is destroy. This object should be
-        destroyed after issuing a 'create' request. Attempting to use this
-        object after issuing 'create' raises ALREADY_USED protocol error.
-
-        It is not mandatory to issue 'create'. If a client wants to
-        cancel the buffer creation, it can just destroy this object.
-      </description>
-      <arg name="width" type="int" summary="base plane width in pixels"/>
-      <arg name="height" type="int" summary="base plane height in pixels"/>
-      <arg name="format" type="uint" summary="DRM_FORMAT code"/>
-      <arg name="flags" type="uint" enum="flags" summary="see enum flags"/>
-    </request>
-
-    <event name="created">
-      <description summary="buffer creation succeeded">
-        This event indicates that the attempted buffer creation was
-        successful. It provides the new wl_buffer referencing the dmabuf(s).
-
-        Upon receiving this event, the client should destroy the
-        zwp_linux_buffer_params_v1 object.
-      </description>
-      <arg name="buffer" type="new_id" interface="wl_buffer"
-           summary="the newly created wl_buffer"/>
-    </event>
-
-    <event name="failed">
-      <description summary="buffer creation failed">
-        This event indicates that the attempted buffer creation has
-        failed. It usually means that one of the dmabuf constraints
-        has not been fulfilled.
-
-        Upon receiving this event, the client should destroy the
-        zwp_linux_buffer_params_v1 object.
-      </description>
-    </event>
-
-    <request name="create_immed" since="2">
-      <description summary="immediately create a wl_buffer from the given
-                     dmabufs">
-        This asks for immediate creation of a wl_buffer by importing the
-        added dmabufs.
-
-        In case of import success, no event is sent from the server, and the
-        wl_buffer is ready to be used by the client.
-
-        Upon import failure, either of the following may happen, as seen fit
-        by the implementation:
-        - the client is terminated with one of the following fatal protocol
-          errors:
-          - INCOMPLETE, INVALID_FORMAT, INVALID_DIMENSIONS, OUT_OF_BOUNDS,
-            in case of argument errors such as mismatch between the number
-            of planes and the format, bad format, non-positive width or
-            height, or bad offset or stride.
-          - INVALID_WL_BUFFER, in case the cause for failure is unknown or
-            plaform specific.
-        - the server creates an invalid wl_buffer, marks it as failed and
-          sends a 'failed' event to the client. The result of using this
-          invalid wl_buffer as an argument in any request by the client is
-          defined by the compositor implementation.
-
-        This takes the same arguments as a 'create' request, and obeys the
-        same restrictions.
-      </description>
-      <arg name="buffer_id" type="new_id" interface="wl_buffer"
-           summary="id for the newly created wl_buffer"/>
-      <arg name="width" type="int" summary="base plane width in pixels"/>
-      <arg name="height" type="int" summary="base plane height in pixels"/>
-      <arg name="format" type="uint" summary="DRM_FORMAT code"/>
-      <arg name="flags" type="uint" enum="flags" summary="see enum flags"/>
-    </request>
-  </interface>
-
-  <interface name="zwp_linux_dmabuf_feedback_v1" version="4">
-    <description summary="dmabuf feedback">
-      This object advertises dmabuf parameters feedback. This includes the
-      preferred devices and the supported formats/modifiers.
-
-      The parameters are sent once when this object is created and whenever they
-      change. The done event is always sent once after all parameters have been
-      sent. When a single parameter changes, all parameters are re-sent by the
-      compositor.
-
-      Compositors can re-send the parameters when the current client buffer
-      allocations are sub-optimal. Compositors should not re-send the
-      parameters if re-allocating the buffers would not result in a more optimal
-      configuration. In particular, compositors should avoid sending the exact
-      same parameters multiple times in a row.
-
-      The tranche_target_device and tranche_formats events are grouped by
-      tranches of preference. For each tranche, a tranche_target_device, one
-      tranche_flags and one or more tranche_formats events are sent, followed
-      by a tranche_done event finishing the list. The tranches are sent in
-      descending order of preference. All formats and modifiers in the same
-      tranche have the same preference.
-
-      To send parameters, the compositor sends one main_device event, tranches
-      (each consisting of one tranche_target_device event, one tranche_flags
-      event, tranche_formats events and then a tranche_done event), then one
-      done event.
-    </description>
-
-    <request name="destroy" type="destructor">
-      <description summary="destroy the feedback object">
-        Using this request a client can tell the server that it is not going to
-        use the wp_linux_dmabuf_feedback object anymore.
-      </description>
-    </request>
-
-    <event name="done">
-      <description summary="all feedback has been sent">
-        This event is sent after all parameters of a wp_linux_dmabuf_feedback
-        object have been sent.
-
-        This allows changes to the wp_linux_dmabuf_feedback parameters to be
-        seen as atomic, even if they happen via multiple events.
-      </description>
-    </event>
-
-    <event name="format_table">
-      <description summary="format and modifier table">
-        This event provides a file descriptor which can be memory-mapped to
-        access the format and modifier table.
-
-        The table contains a tightly packed array of consecutive format +
-        modifier pairs. Each pair is 16 bytes wide. It contains a format as a
-        32-bit unsigned integer, followed by 4 bytes of unused padding, and a
-        modifier as a 64-bit unsigned integer. The native endianness is used.
-
-        The client must map the file descriptor in read-only private mode.
-
-        Compositors are not allowed to mutate the table file contents once this
-        event has been sent. Instead, compositors must create a new, separate
-        table file and re-send feedback parameters. Compositors are allowed to
-        store duplicate format + modifier pairs in the table.
-      </description>
-      <arg name="fd" type="fd" summary="table file descriptor"/>
-      <arg name="size" type="uint" summary="table size, in bytes"/>
-    </event>
-
-    <event name="main_device">
-      <description summary="preferred main device">
-        This event advertises the main device that the server prefers to use
-        when direct scan-out to the target device isn't possible. The
-        advertised main device may be different for each
-        wp_linux_dmabuf_feedback object, and may change over time.
-
-        There is exactly one main device. The compositor must send at least
-        one preference tranche with tranche_target_device equal to main_device.
-
-        Clients need to create buffers that the main device can import and
-        read from, otherwise creating the dmabuf wl_buffer will fail (see the
-        wp_linux_buffer_params.create and create_immed requests for details).
-        The main device will also likely be kept active by the compositor,
-        so clients can use it instead of waking up another device for power
-        savings.
-
-        In general the device is a DRM node. The DRM node type (primary vs.
-        render) is unspecified. Clients must not rely on the compositor sending
-        a particular node type. Clients cannot check two devices for equality
-        by comparing the dev_t value.
-
-        If explicit modifiers are not supported and the client performs buffer
-        allocations on a different device than the main device, then the client
-        must force the buffer to have a linear layout.
-      </description>
-      <arg name="device" type="array" summary="device dev_t value"/>
-    </event>
-
-    <event name="tranche_done">
-      <description summary="a preference tranche has been sent">
-        This event splits tranche_target_device and tranche_formats events in
-        preference tranches. It is sent after a set of tranche_target_device
-        and tranche_formats events; it represents the end of a tranche. The
-        next tranche will have a lower preference.
-      </description>
-    </event>
-
-    <event name="tranche_target_device">
-      <description summary="target device">
-        This event advertises the target device that the server prefers to use
-        for a buffer created given this tranche. The advertised target device
-        may be different for each preference tranche, and may change over time.
-
-        There is exactly one target device per tranche.
-
-        The target device may be a scan-out device, for example if the
-        compositor prefers to directly scan-out a buffer created given this
-        tranche. The target device may be a rendering device, for example if
-        the compositor prefers to texture from said buffer.
-
-        The client can use this hint to allocate the buffer in a way that makes
-        it accessible from the target device, ideally directly. The buffer must
-        still be accessible from the main device, either through direct import
-        or through a potentially more expensive fallback path. If the buffer
-        can't be directly imported from the main device then clients must be
-        prepared for the compositor changing the tranche priority or making
-        wl_buffer creation fail (see the wp_linux_buffer_params.create and
-        create_immed requests for details).
-
-        If the device is a DRM node, the DRM node type (primary vs. render) is
-        unspecified. Clients must not rely on the compositor sending a
-        particular node type. Clients cannot check two devices for equality by
-        comparing the dev_t value.
-
-        This event is tied to a preference tranche, see the tranche_done event.
-      </description>
-      <arg name="device" type="array" summary="device dev_t value"/>
-    </event>
-
-    <event name="tranche_formats">
-      <description summary="supported buffer format modifier">
-        This event advertises the format + modifier combinations that the
-        compositor supports.
-
-        It carries an array of indices, each referring to a format + modifier
-        pair in the last received format table (see the format_table event).
-        Each index is a 16-bit unsigned integer in native endianness.
-
-        For legacy support, DRM_FORMAT_MOD_INVALID is an allowed modifier.
-        It indicates that the server can support the format with an implicit
-        modifier. When a buffer has DRM_FORMAT_MOD_INVALID as its modifier, it
-        is as if no explicit modifier is specified. The effective modifier
-        will be derived from the dmabuf.
-
-        A compositor that sends valid modifiers and DRM_FORMAT_MOD_INVALID for
-        a given format supports both explicit modifiers and implicit modifiers.
-
-        Compositors must not send duplicate format + modifier pairs within the
-        same tranche or across two different tranches with the same target
-        device and flags.
-
-        This event is tied to a preference tranche, see the tranche_done event.
-
-        For the definition of the format and modifier codes, see the
-        wp_linux_buffer_params.create request.
-      </description>
-      <arg name="indices" type="array" summary="array of 16-bit indexes"/>
-    </event>
-
-    <enum name="tranche_flags" bitfield="true">
-      <entry name="scanout" value="1" summary="direct scan-out tranche"/>
-    </enum>
-
-    <event name="tranche_flags">
-      <description summary="tranche flags">
-        This event sets tranche-specific flags.
-
-        The scanout flag is a hint that direct scan-out may be attempted by the
-        compositor on the target device if the client appropriately allocates a
-        buffer. How to allocate a buffer that can be scanned out on the target
-        device is implementation-defined.
-
-        This event is tied to a preference tranche, see the tranche_done event.
-      </description>
-      <arg name="flags" type="uint" enum="tranche_flags" summary="tranche flags"/>
-    </event>
-  </interface>
-
-</protocol>
\ No newline at end of file