[Mesa-dev] [PATCH 2/2] gallium: don't use enum bitfields in p_video_state.h

Christian König deathsimple at vodafone.de
Thu Jul 14 06:28:30 PDT 2011


Am Donnerstag, den 14.07.2011, 15:04 +0200 schrieb Michel Dänzer:
> On Mit, 2011-07-13 at 16:28 -0600, Brian Paul wrote: 
> > Silences many warnings about "type of bit-field ‘field_select’ is a
> > GCC extension".
> > ---
> >  src/gallium/include/pipe/p_video_state.h |    8 ++++----
> >  1 files changed, 4 insertions(+), 4 deletions(-)
> > 
> > diff --git a/src/gallium/include/pipe/p_video_state.h b/src/gallium/include/pipe/p_video_state.h
> > index 5b47b15..1f42ac5 100644
> > --- a/src/gallium/include/pipe/p_video_state.h
> > +++ b/src/gallium/include/pipe/p_video_state.h
> > @@ -49,8 +49,8 @@ struct pipe_motionvector
> >  {
> >     struct {
> >        signed x:16, y:16;
> > -      enum pipe_video_field_select field_select:16;
> > -      enum pipe_video_mv_weight weight:16;
> > +      unsigned field_select:16; /**< enum pipe_video_field_select */
> > +      unsigned weight:16;  /**< enum pipe_video_mv_weight  */
> >     } top, bottom;
> >  };
> >  
> > @@ -58,8 +58,8 @@ struct pipe_motionvector
> >  struct pipe_ycbcr_block
> >  {
> >     unsigned x:8, y:8;
> > -   enum pipe_mpeg12_dct_intra intra:8;
> > -   enum pipe_mpeg12_dct_type coding:8;
> > +   unsigned intra:8;  /**< enum pipe_mpeg12_dct_intra */
> > +   unsigned coding:8; /**< enum pipe_mpeg12_dct_type */
> >  };
> >  
> >  struct pipe_picture_desc
> 
> Out of curiosity, what's the benefit of using bitfields here at all, as
> opposed to fixed size integer types?
> 
> IME bitfields are generally best avoided if possible.
There is no real benefit, those are there just for historical reasons. I
started with and interface that looked some like this:

app copies info into XvMC structure->XvMC state tracker copies into
those pipe structures->driver copies them into vertex buffers.

That were a bit too much copy things around for my taste, so I changed
the driver interface to directly export pointers to the vertex buffers
with types of pipe_motionvector/pipe_ycbcr_block and was so happy about
the speed improvements that I forgotten to clean that up.

I just put it onto my todo list, but not as prio 1. I've anybody has
time to spare feel free to clean it up. 

Christian.



More information about the mesa-dev mailing list