v3d: enable framebuffer fetch
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33766>
This commit is contained in:

committed by
Marge Bot

parent
6023a46d02
commit
332b313547
@@ -271,7 +271,7 @@ GLES3.1, GLSL ES 3.1 -- all DONE: freedreno/a5xx+, nvc0, r600, radeonsi, virgl,
|
||||
GLES3.2, GLSL ES 3.2 -- all DONE: freedreno/a6xx, radeonsi, virgl, llvmpipe, zink, iris, crocus/gen7.5+, asahi
|
||||
|
||||
GL_EXT_color_buffer_float DONE (all drivers)
|
||||
GL_KHR_blend_equation_advanced DONE (freedreno/a6xx, nvc0, panfrost, crocus/gen4.5+)
|
||||
GL_KHR_blend_equation_advanced DONE (freedreno/a6xx, nvc0, panfrost, crocus/gen4.5+, v3d)
|
||||
GL_KHR_debug DONE (all drivers)
|
||||
GL_KHR_robustness DONE (freedreno, nvc0, r600)
|
||||
GL_KHR_texture_compression_astc_ldr DONE (freedreno, r600, v3d, vc4, panfrost, softpipe, lima, crocus/gen6+)
|
||||
@@ -317,8 +317,8 @@ Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES ve
|
||||
GL_ARB_sparse_texture_clamp DONE (radeonsi/gfx9+, zink)
|
||||
GL_ARB_texture_filter_minmax DONE (freedreno/a6xx, nvc0/gm200+, zink)
|
||||
GL_ARM_shader_framebuffer_fetch_depth_stencil DONE (llvmpipe)
|
||||
GL_EXT_shader_framebuffer_fetch DONE (freedreno/a6xx, iris/gen9+, llvmpipe, panfrost, virgl, zink, asahi)
|
||||
GL_EXT_shader_framebuffer_fetch_non_coherent DONE (freedreno/a6xx, iris, llvmpipe, panfrost, virgl, zink, asahi)
|
||||
GL_EXT_shader_framebuffer_fetch DONE (freedreno/a6xx, iris/gen9+, llvmpipe, panfrost, virgl, zink, asahi, v3d)
|
||||
GL_EXT_shader_framebuffer_fetch_non_coherent DONE (freedreno/a6xx, iris, llvmpipe, panfrost, virgl, zink, asahi, v3d)
|
||||
GL_EXT_clear_texture DONE (all drivers)
|
||||
GL_EXT_color_buffer_half_float DONE (freedreno, iris, llvmpipe, nv50, nvc0, radeonsi, zink, crocus, asahi)
|
||||
GL_EXT_conservative_depth DONE (all drivers that support GLES 3.0+)
|
||||
@@ -338,7 +338,7 @@ Khronos, ARB, and OES extensions that are not part of any OpenGL or OpenGL ES ve
|
||||
GL_EXT_texture_norm16 DONE (freedreno, r600, radeonsi, nvc0i, softpipe, zink, iris, crocus)
|
||||
GL_EXT_texture_sRGB_R8 DONE (all drivers that support GLES 3.0+)
|
||||
GL_EXT_texture_view DONE (all drivers that support GL_OES_texture_view)
|
||||
GL_KHR_blend_equation_advanced_coherent DONE (freedreno/a6xx, panfrost, zink, asahi, iris/gen9+)
|
||||
GL_KHR_blend_equation_advanced_coherent DONE (freedreno/a6xx, panfrost, zink, asahi, iris/gen9+, v3d)
|
||||
GL_KHR_shader_subgroup DONE (radeonsi, zink)
|
||||
GL_KHR_texture_compression_astc_hdr DONE (core only)
|
||||
GL_KHR_texture_compression_astc_sliced_3d DONE (freedreno/a4xx+, r600, radeonsi, panfrost, softpipe, v3d, zink, lima, asahi, iris/gen9+)
|
||||
|
@@ -20,3 +20,7 @@ VK_KHR_shader_subgroup_extended_types on panvk/v10+
|
||||
shaderStorageImageExtendedFormats on panvk
|
||||
VK_KHR_display on panvk
|
||||
VK_EXT_display_control on panvk
|
||||
EXT_shader_framebuffer_image_fetch on v3d
|
||||
EXT_shader_framebuffer_image_fetch_coherent on v3d
|
||||
KHR_blend_equation_advanced on v3d
|
||||
KHR_blend_equation_advanced_coherent on v3d
|
||||
|
@@ -439,7 +439,7 @@ struct v3d_fs_key {
|
||||
uint8_t uint_color_rb;
|
||||
|
||||
/* Color format information per render target. Only set when logic
|
||||
* operations are enabled.
|
||||
* operations are enabled or when fbfetch is in use.
|
||||
*/
|
||||
struct {
|
||||
enum pipe_format format;
|
||||
|
@@ -690,11 +690,13 @@ v3d_update_compiled_fs(struct v3d_context *v3d, uint8_t prim_mode)
|
||||
*/
|
||||
key->cbufs |= 1 << i;
|
||||
|
||||
/* If logic operations are enabled then we might emit color
|
||||
* reads and we need to know the color buffer format and
|
||||
* swizzle for that.
|
||||
/* When emitting color reads (in the case of logic ops and
|
||||
* load_output) we need to know the color buffer format and
|
||||
* swizzle.
|
||||
*/
|
||||
if (key->logicop_func != PIPE_LOGICOP_COPY) {
|
||||
if (key->logicop_func != PIPE_LOGICOP_COPY ||
|
||||
s->info.fs.uses_fbfetch_output) {
|
||||
|
||||
key->color_fmt[i].format = cbuf->format;
|
||||
memcpy(key->color_fmt[i].swizzle,
|
||||
v3d_get_format_swizzle(&v3d->screen->devinfo,
|
||||
|
@@ -338,6 +338,8 @@ v3d_init_screen_caps(struct v3d_screen *screen)
|
||||
caps->max_texture_array_layers = V3D_MAX_ARRAY_LAYERS;
|
||||
|
||||
caps->max_render_targets = V3D_MAX_RENDER_TARGETS(screen->devinfo.ver);
|
||||
caps->fbfetch = caps->max_render_targets;
|
||||
caps->fbfetch_coherent = true;
|
||||
|
||||
caps->vendor_id = 0x14E4;
|
||||
|
||||
|
@@ -560,6 +560,9 @@ emit_shader_state_record(struct v3d_context *v3d,
|
||||
shader.fragment_shader_does_z_writes =
|
||||
v3d->prog.fs->prog_data.fs->writes_z;
|
||||
|
||||
shader.enable_sample_rate_shading =
|
||||
job->msaa && v3d->prog.fs->prog_data.fs->force_per_sample_msaa;
|
||||
|
||||
/* Set if the EZ test must be disabled (due to shader side
|
||||
* effects and the early_z flag not being present in the
|
||||
* shader).
|
||||
|
Reference in New Issue
Block a user