gallium: implement compute pbo download
this reworks PIPE_CAP_PREFER_BLIT_BASED_TEXTURE_TRANSFER into an enum as PIPE_CAP_TEXTURE_TRANSFER_MODES, enabling drivers to choose a (sometimes) faster, compute-based download mechanism based on a new pipe_screen hook compute pbo download is implemented using shaders with a prolog to convert the input format to generic rgb float values, then an epilog to convert to the output value. the prolog and epilog are determined based on a vec4 of packed ubo data which is dynamically updated based on the API usage currently, the only known limitations are: * GL_ARB_texture_cube_map_array is broken somehow (and disabled) * AMD hardware somehow can't do depth readback? otherwise it should work for every possible case Acked-by:Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Acked-by:
Marek Olšák <marek.olsak@amd.com> Part-of: <!11984>
Showing
- docs/gallium/screen.rst 3 additions, 1 deletiondocs/gallium/screen.rst
- src/gallium/include/pipe/p_defines.h 1 addition, 0 deletionssrc/gallium/include/pipe/p_defines.h
- src/mesa/meson.build 1 addition, 0 deletionssrc/mesa/meson.build
- src/mesa/state_tracker/st_cb_texture.c 20 additions, 14 deletionssrc/mesa/state_tracker/st_cb_texture.c
- src/mesa/state_tracker/st_context.c 5 additions, 4 deletionssrc/mesa/state_tracker/st_context.c
- src/mesa/state_tracker/st_context.h 2 additions, 0 deletionssrc/mesa/state_tracker/st_context.h
- src/mesa/state_tracker/st_pbo.c 9 additions, 0 deletionssrc/mesa/state_tracker/st_pbo.c
- src/mesa/state_tracker/st_pbo.h 6 additions, 0 deletionssrc/mesa/state_tracker/st_pbo.h
- src/mesa/state_tracker/st_pbo_compute.c 1110 additions, 0 deletionssrc/mesa/state_tracker/st_pbo_compute.c
Loading
Please register or sign in to comment