Mesa (master): gallium: give fragment-shader texture-lod its own cap

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jul 10 14:07:41 UTC 2019


Module: Mesa
Branch: master
Commit: 66ee6661e9968ea146d2ad0d606e1a35a17587dd
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=66ee6661e9968ea146d2ad0d606e1a35a17587dd

Author: Erik Faye-Lund <erik.faye-lund at collabora.com>
Date:   Fri Jul  5 15:46:38 2019 +0200

gallium: give fragment-shader texture-lod its own cap

Shader Model 3.0 is a big promise to make to the state-tracker, and
for instance mobile hardware might support texture lod but not some
of the other features of SM3. So let's give this its own cap for
simplicity.

Signed-off-by: Erik Faye-Lund <erik.faye-lund at collabora.com>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>

---

 src/gallium/auxiliary/util/u_screen.c  | 3 +++
 src/gallium/docs/source/screen.rst     | 2 ++
 src/gallium/include/pipe/p_defines.h   | 1 +
 src/mesa/state_tracker/st_extensions.c | 2 +-
 4 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/gallium/auxiliary/util/u_screen.c b/src/gallium/auxiliary/util/u_screen.c
index 3feb0b5f37c..5baf7d72fb1 100644
--- a/src/gallium/auxiliary/util/u_screen.c
+++ b/src/gallium/auxiliary/util/u_screen.c
@@ -370,6 +370,9 @@ u_pipe_screen_get_param_defaults(struct pipe_screen *pscreen,
       return 0;
 #endif
 
+   case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD:
+      return pscreen->get_param(pscreen, PIPE_CAP_SM3);
+
    default:
       unreachable("bad PIPE_CAP_*");
    }
diff --git a/src/gallium/docs/source/screen.rst b/src/gallium/docs/source/screen.rst
index 596a17f32eb..59fa82b427f 100644
--- a/src/gallium/docs/source/screen.rst
+++ b/src/gallium/docs/source/screen.rst
@@ -534,6 +534,8 @@ The integer capabilities:
 * ``PIPE_CAP_ATOMIC_FLOAT_MINMAX``: Atomic float point minimum,
   maximum, exchange and compare-and-swap support to buffer and shared variables.
 * ``PIPE_CAP_TGSI_DIV``: Whether opcode DIV is supported
+* ``PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD``: Whether texture lookups with
+  explicit LOD is supported in the fragment shader.
 
 .. _pipe_capf:
 
diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h
index 536f321edfd..8092fca4df1 100644
--- a/src/gallium/include/pipe/p_defines.h
+++ b/src/gallium/include/pipe/p_defines.h
@@ -888,6 +888,7 @@ enum pipe_cap
    PIPE_CAP_CS_DERIVED_SYSTEM_VALUES_SUPPORTED,
    PIPE_CAP_ATOMIC_FLOAT_MINMAX,
    PIPE_CAP_TGSI_DIV,
+   PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD,
 };
 
 /**
diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
index f423136929f..3611cdcd5fd 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -725,7 +725,7 @@ void st_init_extensions(struct pipe_screen *screen,
       { o(EXT_shader_image_load_formatted),  PIPE_CAP_IMAGE_LOAD_FORMATTED             },
       { o(ARB_shader_stencil_export),        PIPE_CAP_SHADER_STENCIL_EXPORT            },
       { o(ARB_shader_texture_image_samples), PIPE_CAP_TGSI_TXQS                        },
-      { o(ARB_shader_texture_lod),           PIPE_CAP_SM3                              },
+      { o(ARB_shader_texture_lod),           PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD      },
       { o(ARB_sparse_buffer),                PIPE_CAP_SPARSE_BUFFER_PAGE_SIZE          },
       { o(ARB_texture_buffer_object),        PIPE_CAP_TEXTURE_BUFFER_OBJECTS           },
       { o(ARB_texture_cube_map_array),       PIPE_CAP_CUBE_MAP_ARRAY                   },




More information about the mesa-commit mailing list