mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 18:18:06 +02:00
freedreno: fdN_gmem_restore_format() is not gen specific
Refactor out into a common helper, since this is the same across generations when we need equiv z/s gmem restore format. Next patch needs this in a5xx, rather than creating yet another helper push this into core. Signed-off-by: Rob Clark <robdclark@gmail.com>
This commit is contained in:
parent
6f93c75a47
commit
bea8602e5b
8 changed files with 25 additions and 50 deletions
|
|
@ -299,13 +299,13 @@ fd3_emit_gmem_restore_tex(struct fd_ringbuffer *ring,
|
|||
}
|
||||
|
||||
struct fd_resource *rsc = fd_resource(psurf[i]->texture);
|
||||
enum pipe_format format = fd3_gmem_restore_format(psurf[i]->format);
|
||||
enum pipe_format format = fd_gmem_restore_format(psurf[i]->format);
|
||||
/* The restore blit_zs shader expects stencil in sampler 0, and depth
|
||||
* in sampler 1
|
||||
*/
|
||||
if (rsc->stencil && i == 0) {
|
||||
rsc = rsc->stencil;
|
||||
format = fd3_gmem_restore_format(rsc->base.b.format);
|
||||
format = fd_gmem_restore_format(rsc->base.b.format);
|
||||
}
|
||||
|
||||
/* note: PIPE_BUFFER disallowed for surfaces */
|
||||
|
|
|
|||
|
|
@ -348,27 +348,6 @@ fd3_pipe2nblocksx(enum pipe_format format, unsigned width)
|
|||
return util_format_get_nblocksx(format, width);
|
||||
}
|
||||
|
||||
/* we need to special case a bit the depth/stencil restore, because we are
|
||||
* using the texture sampler to blit into the depth/stencil buffer, *not*
|
||||
* into a color buffer. Otherwise fd3_tex_swiz() will do the wrong thing,
|
||||
* as it is assuming that you are sampling into normal render target..
|
||||
*/
|
||||
enum pipe_format
|
||||
fd3_gmem_restore_format(enum pipe_format format)
|
||||
{
|
||||
switch (format) {
|
||||
case PIPE_FORMAT_Z24X8_UNORM:
|
||||
case PIPE_FORMAT_Z24_UNORM_S8_UINT:
|
||||
return PIPE_FORMAT_R8G8B8A8_UNORM;
|
||||
case PIPE_FORMAT_Z16_UNORM:
|
||||
return PIPE_FORMAT_R8G8_UNORM;
|
||||
case PIPE_FORMAT_S8_UINT:
|
||||
return PIPE_FORMAT_R8_UNORM;
|
||||
default:
|
||||
return format;
|
||||
}
|
||||
}
|
||||
|
||||
enum a3xx_color_fmt
|
||||
fd3_fs_output_format(enum pipe_format format)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@ enum a3xx_vtx_fmt fd3_pipe2vtx(enum pipe_format format);
|
|||
enum a3xx_tex_fmt fd3_pipe2tex(enum pipe_format format);
|
||||
enum a3xx_tex_fetchsize fd3_pipe2fetchsize(enum pipe_format format);
|
||||
enum a3xx_color_fmt fd3_pipe2color(enum pipe_format format);
|
||||
enum pipe_format fd3_gmem_restore_format(enum pipe_format format);
|
||||
enum a3xx_color_fmt fd3_fs_output_format(enum pipe_format format);
|
||||
enum a3xx_color_swap fd3_pipe2swap(enum pipe_format format);
|
||||
unsigned fd3_pipe2nblocksx(enum pipe_format format, unsigned width);
|
||||
|
|
|
|||
|
|
@ -291,14 +291,14 @@ fd4_emit_gmem_restore_tex(struct fd_ringbuffer *ring, unsigned nr_bufs,
|
|||
for (i = 0; i < nr_bufs; i++) {
|
||||
if (bufs[i]) {
|
||||
struct fd_resource *rsc = fd_resource(bufs[i]->texture);
|
||||
enum pipe_format format = fd4_gmem_restore_format(bufs[i]->format);
|
||||
enum pipe_format format = fd_gmem_restore_format(bufs[i]->format);
|
||||
|
||||
/* The restore blit_zs shader expects stencil in sampler 0,
|
||||
* and depth in sampler 1
|
||||
*/
|
||||
if (rsc->stencil && (i == 0)) {
|
||||
rsc = rsc->stencil;
|
||||
format = fd4_gmem_restore_format(rsc->base.b.format);
|
||||
format = fd_gmem_restore_format(rsc->base.b.format);
|
||||
}
|
||||
|
||||
/* note: PIPE_BUFFER disallowed for surfaces */
|
||||
|
|
|
|||
|
|
@ -394,29 +394,6 @@ fd4_pipe2fetchsize(enum pipe_format format)
|
|||
}
|
||||
}
|
||||
|
||||
/* we need to special case a bit the depth/stencil restore, because we are
|
||||
* using the texture sampler to blit into the depth/stencil buffer, *not*
|
||||
* into a color buffer. Otherwise fd4_tex_swiz() will do the wrong thing,
|
||||
* as it is assuming that you are sampling into normal render target..
|
||||
*
|
||||
* TODO looks like we can probably share w/ a3xx..
|
||||
*/
|
||||
enum pipe_format
|
||||
fd4_gmem_restore_format(enum pipe_format format)
|
||||
{
|
||||
switch (format) {
|
||||
case PIPE_FORMAT_Z24X8_UNORM:
|
||||
case PIPE_FORMAT_Z24_UNORM_S8_UINT:
|
||||
return PIPE_FORMAT_R8G8B8A8_UNORM;
|
||||
case PIPE_FORMAT_Z16_UNORM:
|
||||
return PIPE_FORMAT_R8G8_UNORM;
|
||||
case PIPE_FORMAT_S8_UINT:
|
||||
return PIPE_FORMAT_R8_UNORM;
|
||||
default:
|
||||
return format;
|
||||
}
|
||||
}
|
||||
|
||||
enum a4xx_depth_format
|
||||
fd4_pipe2depth(enum pipe_format format)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -36,7 +36,6 @@
|
|||
enum a4xx_vtx_fmt fd4_pipe2vtx(enum pipe_format format);
|
||||
enum a4xx_tex_fmt fd4_pipe2tex(enum pipe_format format);
|
||||
enum a4xx_color_fmt fd4_pipe2color(enum pipe_format format);
|
||||
enum pipe_format fd4_gmem_restore_format(enum pipe_format format);
|
||||
enum a3xx_color_swap fd4_pipe2swap(enum pipe_format format);
|
||||
enum a4xx_tex_fetchsize fd4_pipe2fetchsize(enum pipe_format format);
|
||||
enum a4xx_depth_format fd4_pipe2depth(enum pipe_format format);
|
||||
|
|
|
|||
|
|
@ -67,6 +67,26 @@ fd_pipe2index(enum pipe_format format)
|
|||
}
|
||||
}
|
||||
|
||||
/* we need to special case a bit the depth/stencil restore, because we are
|
||||
* using the texture sampler to blit into the depth/stencil buffer, *not*
|
||||
* into a color buffer. Otherwise fdN_tex_swiz() will do the wrong thing,
|
||||
* as it is assuming that you are sampling into normal render target..
|
||||
*/
|
||||
enum pipe_format
|
||||
fd_gmem_restore_format(enum pipe_format format)
|
||||
{
|
||||
switch (format) {
|
||||
case PIPE_FORMAT_Z24X8_UNORM:
|
||||
case PIPE_FORMAT_Z24_UNORM_S8_UINT:
|
||||
return PIPE_FORMAT_R8G8B8A8_UNORM;
|
||||
case PIPE_FORMAT_Z16_UNORM:
|
||||
return PIPE_FORMAT_R8G8_UNORM;
|
||||
case PIPE_FORMAT_S8_UINT:
|
||||
return PIPE_FORMAT_R8_UNORM;
|
||||
default:
|
||||
return format;
|
||||
}
|
||||
}
|
||||
|
||||
enum adreno_rb_blend_factor
|
||||
fd_blend_factor(unsigned factor)
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
|
||||
enum adreno_rb_depth_format fd_pipe2depth(enum pipe_format format);
|
||||
enum pc_di_index_size fd_pipe2index(enum pipe_format format);
|
||||
enum pipe_format fd_gmem_restore_format(enum pipe_format format);
|
||||
enum adreno_rb_blend_factor fd_blend_factor(unsigned factor);
|
||||
enum adreno_pa_su_sc_draw fd_polygon_mode(unsigned mode);
|
||||
enum adreno_stencil_op fd_stencil_op(unsigned op);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue