mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-01 16:10:09 +01:00
freedreno/a6xx: Implement fast border colors in sampler
There are no fixed border color in GL so we have to compare colors. Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34786>
This commit is contained in:
parent
3691694933
commit
c1dbfa0e0f
1 changed files with 36 additions and 2 deletions
|
|
@ -292,8 +292,42 @@ fd6_sampler_state_create(struct pipe_context *pctx,
|
|||
so->texsamp1 |=
|
||||
A6XX_TEX_SAMP_1_COMPARE_FUNC((enum adreno_compare_func)cso->compare_func); /* maps 1:1 */
|
||||
|
||||
if (needs_border)
|
||||
so->texsamp2 = A6XX_TEX_SAMP_2_BCOLOR(get_bcolor_offset(ctx, cso));
|
||||
if (needs_border) {
|
||||
bool fast_border_color_enable = false;
|
||||
enum a6xx_fast_border_color fast_border_color = A6XX_BORDER_COLOR_0_0_0_0;
|
||||
if (cso->border_color.ui[0] == 0 &&
|
||||
cso->border_color.ui[1] == 0 &&
|
||||
cso->border_color.ui[2] == 0 &&
|
||||
cso->border_color.ui[3] == 0) {
|
||||
fast_border_color_enable = true;
|
||||
fast_border_color = A6XX_BORDER_COLOR_0_0_0_0;
|
||||
} else if (cso->border_color.ui[0] == 0 &&
|
||||
cso->border_color.ui[1] == 0 &&
|
||||
cso->border_color.ui[2] == 0 &&
|
||||
cso->border_color.ui[3] == 0x3F800000) {
|
||||
fast_border_color_enable = true;
|
||||
fast_border_color = A6XX_BORDER_COLOR_0_0_0_1;
|
||||
} else if (cso->border_color.ui[0] == 0x3F800000 &&
|
||||
cso->border_color.ui[1] == 0x3F800000 &&
|
||||
cso->border_color.ui[2] == 0x3F800000 &&
|
||||
cso->border_color.ui[3] == 0) {
|
||||
fast_border_color_enable = true;
|
||||
fast_border_color = A6XX_BORDER_COLOR_1_1_1_0;
|
||||
} else if (cso->border_color.ui[0] == 0x3F800000 &&
|
||||
cso->border_color.ui[1] == 0x3F800000 &&
|
||||
cso->border_color.ui[2] == 0x3F800000 &&
|
||||
cso->border_color.ui[3] == 0x3F800000) {
|
||||
fast_border_color_enable = true;
|
||||
fast_border_color = A6XX_BORDER_COLOR_1_1_1_1;
|
||||
}
|
||||
|
||||
if (fast_border_color_enable) {
|
||||
so->texsamp2 = A6XX_TEX_SAMP_2_FASTBORDERCOLOR(fast_border_color) |
|
||||
A6XX_TEX_SAMP_2_FASTBORDERCOLOREN;
|
||||
} else {
|
||||
so->texsamp2 = A6XX_TEX_SAMP_2_BCOLOR(get_bcolor_offset(ctx, cso));
|
||||
}
|
||||
}
|
||||
|
||||
/* We don't know if the format is going to be YUV. Setting CHROMA_LINEAR
|
||||
* unconditionally seems fine.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue