gallium: add PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS
authorMarek Olšák <marek.olsak@amd.com>
Sun, 23 Aug 2015 23:19:35 +0000 (01:19 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Wed, 28 Oct 2015 10:52:17 +0000 (11:52 +0100)
For ARB_copy_image.

Reviewed-by: Brian Paul <brianp@vmware.com>
15 files changed:
src/gallium/docs/source/screen.rst
src/gallium/drivers/freedreno/freedreno_screen.c
src/gallium/drivers/i915/i915_screen.c
src/gallium/drivers/ilo/ilo_screen.c
src/gallium/drivers/llvmpipe/lp_screen.c
src/gallium/drivers/nouveau/nv30/nv30_screen.c
src/gallium/drivers/nouveau/nv50/nv50_screen.c
src/gallium/drivers/nouveau/nvc0/nvc0_screen.c
src/gallium/drivers/r300/r300_screen.c
src/gallium/drivers/r600/r600_pipe.c
src/gallium/drivers/radeonsi/si_pipe.c
src/gallium/drivers/softpipe/sp_screen.c
src/gallium/drivers/svga/svga_screen.c
src/gallium/drivers/vc4/vc4_screen.c
src/gallium/include/pipe/p_defines.h

index 151afb2dffe98929326b319135600e6b2a0de83c..91fdb43cfbbed210fce15b4f9204be02f19ecb1a 100644 (file)
@@ -278,7 +278,9 @@ The integer capabilities:
   in the shader.
 * ``PIPE_CAP_SHAREABLE_SHADERS``: Whether shader CSOs can be used by any
   pipe_context.
-
+* ``PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS``:
+  Whether copying between compressed and plain formats is supported where
+  a compressed block is copied to/from a plain pixel of the same size.
 
 
 .. _pipe_capf:
index 50d140fe9036db6382bce0578544073899575084..9f8c33263fba6b9d9259a5aa1145a47411f9c0a3 100644 (file)
@@ -238,6 +238,7 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
        case PIPE_CAP_TGSI_TXQS:
        case PIPE_CAP_FORCE_PERSAMPLE_INTERP:
        case PIPE_CAP_SHAREABLE_SHADERS:
+       case PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS:
                return 0;
 
        case PIPE_CAP_MAX_VIEWPORTS:
index 5812af626cb8ddc5b073795966c9a00ef3ac38ad..2d2fd375656fe947babe625146afbc75997d6d23 100644 (file)
@@ -252,6 +252,7 @@ i915_get_param(struct pipe_screen *screen, enum pipe_cap cap)
    case PIPE_CAP_TGSI_TXQS:
    case PIPE_CAP_FORCE_PERSAMPLE_INTERP:
    case PIPE_CAP_SHAREABLE_SHADERS:
+   case PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS:
       return 0;
 
    case PIPE_CAP_MAX_DUAL_SOURCE_RENDER_TARGETS:
index e1a7dc5668536f15ca017aa3530316ada70cb84e..888f7aa67827890478188f2a3193948875a2f184 100644 (file)
@@ -474,6 +474,7 @@ ilo_get_param(struct pipe_screen *screen, enum pipe_cap param)
    case PIPE_CAP_TGSI_TXQS:
    case PIPE_CAP_FORCE_PERSAMPLE_INTERP:
    case PIPE_CAP_SHAREABLE_SHADERS:
+   case PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS:
       return 0;
 
    case PIPE_CAP_VENDOR_ID:
index e2ed267da7899d27ada1721b91e9dfb9127ac03e..d1c50aefc84b4be456993a6f84fc3ef7cfce69be 100644 (file)
@@ -299,6 +299,7 @@ llvmpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
    case PIPE_CAP_TGSI_TXQS:
    case PIPE_CAP_FORCE_PERSAMPLE_INTERP:
    case PIPE_CAP_SHAREABLE_SHADERS:
+   case PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS:
       return 0;
    }
    /* should only get here on unhandled cases */
index 03301649e3868e9a06112893001f5eb68e0a341b..bdecb0a32b3499424f0a3599000ddcd17991f3da 100644 (file)
@@ -172,6 +172,7 @@ nv30_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
    case PIPE_CAP_TGSI_TXQS:
    case PIPE_CAP_FORCE_PERSAMPLE_INTERP:
    case PIPE_CAP_SHAREABLE_SHADERS:
+   case PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS:
       return 0;
 
    case PIPE_CAP_VENDOR_ID:
index ec51d00f266af0d655952d7e6729c34000e243c1..2c8884edc2dd60ecc8de51e7e111ce863968a7eb 100644 (file)
@@ -217,6 +217,7 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
    case PIPE_CAP_MAX_SHADER_PATCH_VARYINGS:
    case PIPE_CAP_FORCE_PERSAMPLE_INTERP:
    case PIPE_CAP_SHAREABLE_SHADERS:
+   case PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS:
       return 0;
 
    case PIPE_CAP_VENDOR_ID:
index af8e5f72670a9e27b94eedd4f257f6cc26123db6..1646a9dbcbefb58e56c944a8337508ef5bf73327 100644 (file)
@@ -203,6 +203,7 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
    case PIPE_CAP_DEVICE_RESET_STATUS_QUERY:
    case PIPE_CAP_FORCE_PERSAMPLE_INTERP:
    case PIPE_CAP_SHAREABLE_SHADERS:
+   case PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS:
       return 0;
 
    case PIPE_CAP_VENDOR_ID:
index a576abdfaf2558f838af5678bad2b235f71ce589..d5981248a86757ea2521b28c90563653c5463c60 100644 (file)
@@ -198,6 +198,7 @@ static int r300_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
         case PIPE_CAP_TGSI_TXQS:
         case PIPE_CAP_FORCE_PERSAMPLE_INTERP:
         case PIPE_CAP_SHAREABLE_SHADERS:
+        case PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS:
             return 0;
 
         /* SWTCL-only features. */
index 9a97de9965e26d9fcd88cae119587ef7159e2750..9f4cda2c1420daf9305c3e7c2eb210179bd62fd4 100644 (file)
@@ -344,6 +344,7 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
        case PIPE_CAP_DEPTH_BOUNDS_TEST:
        case PIPE_CAP_FORCE_PERSAMPLE_INTERP:
        case PIPE_CAP_SHAREABLE_SHADERS:
+       case PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS:
                return 0;
 
        /* Stream output. */
index 047bbf4e53745f171799ee4a02bfca665d5566aa..60baad3d13cdade66478d3ac8fd0766caf18e067 100644 (file)
@@ -298,6 +298,7 @@ static int si_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
        case PIPE_CAP_TEXTURE_GATHER_SM5:
        case PIPE_CAP_TGSI_TXQS:
        case PIPE_CAP_FORCE_PERSAMPLE_INTERP:
+       case PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS:
                return 1;
 
        case PIPE_CAP_RESOURCE_FROM_USER_MEMORY:
index e7006d2fa0da91a5acb1f38833c1305b03c2ebd8..c0fc82b2f2cc2098a31af102034e55f7e117e2eb 100644 (file)
@@ -249,6 +249,7 @@ softpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
    case PIPE_CAP_TGSI_TXQS:
    case PIPE_CAP_FORCE_PERSAMPLE_INTERP:
    case PIPE_CAP_SHAREABLE_SHADERS:
+   case PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS:
       return 0;
    }
    /* should only get here on unhandled cases */
index f6fafca5c0b2a24ef9d07134486aa24123f8f054..5aa7b0d86ebc206850cb5ae9d7458c0ea95d0d66 100644 (file)
@@ -382,6 +382,7 @@ svga_get_param(struct pipe_screen *screen, enum pipe_cap param)
    case PIPE_CAP_TGSI_TXQS:
    case PIPE_CAP_FORCE_PERSAMPLE_INTERP:
    case PIPE_CAP_SHAREABLE_SHADERS:
+   case PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS:
       return 0;
    }
 
index 774ec0956526e964956a93ff4b6223bdf1502f93..432b1d1b86ea79121b5fc0a0f757c93e3a042112 100644 (file)
@@ -183,6 +183,7 @@ vc4_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
        case PIPE_CAP_TGSI_TXQS:
        case PIPE_CAP_FORCE_PERSAMPLE_INTERP:
        case PIPE_CAP_SHAREABLE_SHADERS:
+       case PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS:
                 return 0;
 
                 /* Stream output. */
index 1ad545aae095cb7fca37de3fdb7ef58de008c794..b15c8809c1d56271e794f17eca369ddf8672f10b 100644 (file)
@@ -633,6 +633,7 @@ enum pipe_cap
    PIPE_CAP_TGSI_TXQS,
    PIPE_CAP_FORCE_PERSAMPLE_INTERP,
    PIPE_CAP_SHAREABLE_SHADERS,
+   PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS,
 };
 
 #define PIPE_QUIRK_TEXTURE_BORDER_COLOR_SWIZZLE_NV50 (1 << 0)