From: Erik Faye-Lund Date: Fri, 5 Jul 2019 13:46:38 +0000 (+0200) Subject: gallium: give fragment-shader texture-lod its own cap X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=66ee6661e9968ea146d2ad0d606e1a35a17587dd;p=mesa.git 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 Reviewed-by: Marek Olšák --- 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 },