[Mesa-dev] [PATCH v2] nv50, nvc0: don't keep track of whether fb rt0 is integer-only
Samuel Pitoiset
samuel.pitoiset at gmail.com
Thu Oct 20 14:02:20 UTC 2016
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
On 10/20/2016 04:44 AM, Ilia Mirkin wrote:
> This reverts commits 1af0641db345209c076e9b1ba4dca7524541671a and
> a6ad49cbbd599aec054d0a3163fff5ad724f2b18.
>
> st/mesa adjusts the rasterizer state for us now.
>
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> ---
>
> v1 -> v2: also revert the nv50 commit
>
> src/gallium/drivers/nouveau/nv50/nv50_state.c | 10 ++++++++++
> .../drivers/nouveau/nv50/nv50_state_validate.c | 21 ---------------------
> src/gallium/drivers/nouveau/nv50/nv50_stateobj.h | 2 +-
> src/gallium/drivers/nouveau/nvc0/nvc0_state.c | 10 ++++++++++
> .../drivers/nouveau/nvc0/nvc0_state_validate.c | 21 ---------------------
> src/gallium/drivers/nouveau/nvc0/nvc0_stateobj.h | 2 +-
> 6 files changed, 22 insertions(+), 44 deletions(-)
>
> diff --git a/src/gallium/drivers/nouveau/nv50/nv50_state.c b/src/gallium/drivers/nouveau/nv50/nv50_state.c
> index a54d69c..4ef5a71 100644
> --- a/src/gallium/drivers/nouveau/nv50/nv50_state.c
> +++ b/src/gallium/drivers/nouveau/nv50/nv50_state.c
> @@ -119,6 +119,7 @@ nv50_blend_state_create(struct pipe_context *pipe,
> struct nv50_blend_stateobj *so = CALLOC_STRUCT(nv50_blend_stateobj);
> int i;
> bool emit_common_func = cso->rt[0].blend_enable;
> + uint32_t ms;
>
> if (nv50_context(pipe)->screen->tesla->oclass >= NVA3_3D_CLASS) {
> SB_BEGIN_3D(so, BLEND_INDEPENDENT, 1);
> @@ -190,6 +191,15 @@ nv50_blend_state_create(struct pipe_context *pipe,
> SB_DATA (so, nv50_colormask(cso->rt[0].colormask));
> }
>
> + ms = 0;
> + if (cso->alpha_to_coverage)
> + ms |= NV50_3D_MULTISAMPLE_CTRL_ALPHA_TO_COVERAGE;
> + if (cso->alpha_to_one)
> + ms |= NV50_3D_MULTISAMPLE_CTRL_ALPHA_TO_ONE;
> +
> + SB_BEGIN_3D(so, MULTISAMPLE_CTRL, 1);
> + SB_DATA (so, ms);
> +
> assert(so->size <= ARRAY_SIZE(so->state));
> return so;
> }
> diff --git a/src/gallium/drivers/nouveau/nv50/nv50_state_validate.c b/src/gallium/drivers/nouveau/nv50/nv50_state_validate.c
> index 5a3bb3e..c6f0363 100644
> --- a/src/gallium/drivers/nouveau/nv50/nv50_state_validate.c
> +++ b/src/gallium/drivers/nouveau/nv50/nv50_state_validate.c
> @@ -1,5 +1,4 @@
>
> -#include "util/u_format.h"
> #include "util/u_viewport.h"
>
> #include "nv50/nv50_context.h"
> @@ -348,25 +347,6 @@ nv50_validate_derived_2(struct nv50_context *nv50)
> }
>
> static void
> -nv50_validate_derived_3(struct nv50_context *nv50)
> -{
> - struct nouveau_pushbuf *push = nv50->base.pushbuf;
> - struct pipe_framebuffer_state *fb = &nv50->framebuffer;
> - uint32_t ms = 0;
> -
> - if ((!fb->nr_cbufs || !fb->cbufs[0] ||
> - !util_format_is_pure_integer(fb->cbufs[0]->format)) && nv50->blend) {
> - if (nv50->blend->pipe.alpha_to_coverage)
> - ms |= NV50_3D_MULTISAMPLE_CTRL_ALPHA_TO_COVERAGE;
> - if (nv50->blend->pipe.alpha_to_one)
> - ms |= NV50_3D_MULTISAMPLE_CTRL_ALPHA_TO_ONE;
> - }
> -
> - BEGIN_NV04(push, NV50_3D(MULTISAMPLE_CTRL), 1);
> - PUSH_DATA (push, ms);
> -}
> -
> -static void
> nv50_validate_clip(struct nv50_context *nv50)
> {
> struct nouveau_pushbuf *push = nv50->base.pushbuf;
> @@ -535,7 +515,6 @@ validate_list_3d[] = {
> { nv50_validate_derived_rs, NV50_NEW_3D_FRAGPROG | NV50_NEW_3D_RASTERIZER |
> NV50_NEW_3D_VERTPROG | NV50_NEW_3D_GMTYPROG },
> { nv50_validate_derived_2, NV50_NEW_3D_ZSA | NV50_NEW_3D_FRAMEBUFFER },
> - { nv50_validate_derived_3, NV50_NEW_3D_BLEND | NV50_NEW_3D_FRAMEBUFFER },
> { nv50_validate_clip, NV50_NEW_3D_CLIP | NV50_NEW_3D_RASTERIZER |
> NV50_NEW_3D_VERTPROG | NV50_NEW_3D_GMTYPROG },
> { nv50_constbufs_validate, NV50_NEW_3D_CONSTBUF },
> diff --git a/src/gallium/drivers/nouveau/nv50/nv50_stateobj.h b/src/gallium/drivers/nouveau/nv50/nv50_stateobj.h
> index 9598b04..579da9a 100644
> --- a/src/gallium/drivers/nouveau/nv50/nv50_stateobj.h
> +++ b/src/gallium/drivers/nouveau/nv50/nv50_stateobj.h
> @@ -19,7 +19,7 @@
> struct nv50_blend_stateobj {
> struct pipe_blend_state pipe;
> int size;
> - uint32_t state[82]; // TODO: allocate less if !independent_blend_enable
> + uint32_t state[84]; // TODO: allocate less if !independent_blend_enable
> };
>
> struct nv50_rasterizer_stateobj {
> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_state.c b/src/gallium/drivers/nouveau/nvc0/nvc0_state.c
> index 1d8a4b3..458d71d 100644
> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_state.c
> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_state.c
> @@ -91,6 +91,7 @@ nvc0_blend_state_create(struct pipe_context *pipe,
> struct nvc0_blend_stateobj *so = CALLOC_STRUCT(nvc0_blend_stateobj);
> int i;
> int r; /* reference */
> + uint32_t ms;
> uint8_t blend_en = 0;
> bool indep_masks = false;
> bool indep_funcs = false;
> @@ -176,6 +177,15 @@ nvc0_blend_state_create(struct pipe_context *pipe,
> }
> }
>
> + ms = 0;
> + if (cso->alpha_to_coverage)
> + ms |= NVC0_3D_MULTISAMPLE_CTRL_ALPHA_TO_COVERAGE;
> + if (cso->alpha_to_one)
> + ms |= NVC0_3D_MULTISAMPLE_CTRL_ALPHA_TO_ONE;
> +
> + SB_BEGIN_3D(so, MULTISAMPLE_CTRL, 1);
> + SB_DATA (so, ms);
> +
> assert(so->size <= ARRAY_SIZE(so->state));
> return so;
> }
> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_state_validate.c b/src/gallium/drivers/nouveau/nvc0/nvc0_state_validate.c
> index d50c75c..f5060cc 100644
> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_state_validate.c
> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_state_validate.c
> @@ -1,5 +1,4 @@
>
> -#include "util/u_format.h"
> #include "util/u_framebuffer.h"
> #include "util/u_math.h"
> #include "util/u_viewport.h"
> @@ -673,25 +672,6 @@ nvc0_validate_zsa_fb(struct nvc0_context *nvc0)
> }
>
> static void
> -nvc0_validate_blend_fb(struct nvc0_context *nvc0)
> -{
> - struct nouveau_pushbuf *push = nvc0->base.pushbuf;
> - struct pipe_framebuffer_state *fb = &nvc0->framebuffer;
> - uint32_t ms = 0;
> -
> - if ((!fb->nr_cbufs || !fb->cbufs[0] ||
> - !util_format_is_pure_integer(fb->cbufs[0]->format)) && nvc0->blend) {
> - if (nvc0->blend->pipe.alpha_to_coverage)
> - ms |= NVC0_3D_MULTISAMPLE_CTRL_ALPHA_TO_COVERAGE;
> - if (nvc0->blend->pipe.alpha_to_one)
> - ms |= NVC0_3D_MULTISAMPLE_CTRL_ALPHA_TO_ONE;
> - }
> -
> - BEGIN_NVC0(push, NVC0_3D(MULTISAMPLE_CTRL), 1);
> - PUSH_DATA (push, ms);
> -}
> -
> -static void
> nvc0_validate_rast_fb(struct nvc0_context *nvc0)
> {
> struct nouveau_pushbuf *push = nvc0->base.pushbuf;
> @@ -793,7 +773,6 @@ validate_list_3d[] = {
> { nvc0_validate_fp_zsa_rast, NVC0_NEW_3D_FRAGPROG | NVC0_NEW_3D_ZSA |
> NVC0_NEW_3D_RASTERIZER },
> { nvc0_validate_zsa_fb, NVC0_NEW_3D_ZSA | NVC0_NEW_3D_FRAMEBUFFER },
> - { nvc0_validate_blend_fb, NVC0_NEW_3D_BLEND | NVC0_NEW_3D_FRAMEBUFFER },
> { nvc0_validate_rast_fb, NVC0_NEW_3D_RASTERIZER | NVC0_NEW_3D_FRAMEBUFFER },
> { nvc0_validate_clip, NVC0_NEW_3D_CLIP | NVC0_NEW_3D_RASTERIZER |
> NVC0_NEW_3D_VERTPROG |
> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_stateobj.h b/src/gallium/drivers/nouveau/nvc0/nvc0_stateobj.h
> index c900fca..054b1e7 100644
> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_stateobj.h
> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_stateobj.h
> @@ -17,7 +17,7 @@
> struct nvc0_blend_stateobj {
> struct pipe_blend_state pipe;
> int size;
> - uint32_t state[70];
> + uint32_t state[72];
> };
>
> struct nvc0_rasterizer_stateobj {
>
--
-Samuel
More information about the mesa-dev
mailing list