mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 09:08:10 +02:00
gallium: Add PIPE_CAP_FBFETCH_COHERENT and expose extensions
st/mesa now exposes KHR_blend_equation_advanced_coherent and EXT_shader_framebuffer_fetch if the new capability is supported. Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
87f4286137
commit
cca8af0c7d
4 changed files with 8 additions and 0 deletions
|
|
@ -271,6 +271,7 @@ u_pipe_screen_get_param_defaults(struct pipe_screen *pscreen,
|
|||
return 0;
|
||||
|
||||
case PIPE_CAP_FBFETCH:
|
||||
case PIPE_CAP_FBFETCH_COHERENT:
|
||||
case PIPE_CAP_TGSI_MUL_ZERO_WINS:
|
||||
case PIPE_CAP_DOUBLES:
|
||||
case PIPE_CAP_INT64:
|
||||
|
|
|
|||
|
|
@ -382,6 +382,8 @@ The integer capabilities:
|
|||
current framebuffer can be read in the shader. 0 means framebuffer fetch
|
||||
is not supported. 1 means that only the first render target can be read,
|
||||
and a larger value would mean that multiple render targets are supported.
|
||||
* ``PIPE_CAP_FBFETCH_COHERENT``: Whether framebuffer fetches from the fragment
|
||||
shader can be guaranteed to be coherent with framebuffer writes.
|
||||
* ``PIPE_CAP_TGSI_MUL_ZERO_WINS``: Whether TGSI shaders support the
|
||||
``TGSI_PROPERTY_MUL_ZERO_WINS`` shader property.
|
||||
* ``PIPE_CAP_DOUBLES``: Whether double precision floating-point operations
|
||||
|
|
|
|||
|
|
@ -884,6 +884,7 @@ enum pipe_cap
|
|||
PIPE_CAP_DMABUF,
|
||||
PIPE_CAP_PREFER_COMPUTE_BLIT_FOR_MULTIMEDIA,
|
||||
PIPE_CAP_FRAGMENT_SHADER_INTERLOCK,
|
||||
PIPE_CAP_FBFETCH_COHERENT,
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1395,13 +1395,17 @@ void st_init_extensions(struct pipe_screen *screen,
|
|||
}
|
||||
|
||||
unsigned max_fb_fetch_rts = screen->get_param(screen, PIPE_CAP_FBFETCH);
|
||||
bool coherent_fb_fetch =
|
||||
screen->get_param(screen, PIPE_CAP_FBFETCH_COHERENT);
|
||||
|
||||
if (max_fb_fetch_rts > 0) {
|
||||
extensions->KHR_blend_equation_advanced = true;
|
||||
extensions->KHR_blend_equation_advanced_coherent = coherent_fb_fetch;
|
||||
|
||||
if (max_fb_fetch_rts >=
|
||||
screen->get_param(screen, PIPE_CAP_MAX_RENDER_TARGETS)) {
|
||||
extensions->EXT_shader_framebuffer_fetch_non_coherent = true;
|
||||
extensions->EXT_shader_framebuffer_fetch = coherent_fb_fetch;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue