Marek,

I just found a problem with this patch series with MSVC.

The new enum type which defines the ST_NEW_ values uses bitshifts of more than 32 bits. It looks like this overflows the 32-bit size of the enum datatype:

c:\users\brian\projects\mesa\src\mesa\state_tracker\st_atom_list.h(43) : warning
 C4309: 'initializing' : truncation of constant value
c:\users\brian\projects\mesa\src\mesa\state_tracker\st_atom_list.h(44) : warning
 C4309: 'initializing' : truncation of constant value
...

I don't know of a way to specify a 64-bit enum. stackoverflow.com offers a few ideas for C++, but they don't work for C.

My work-around is to create a 'static const uint64_t ST_NEW_foo = 1llu << ST_NEW_foo_INDEX;' for each flag, rather than an enum value.

I'll post a patch for this soon.

-Brian


On 07/30/2016 07:04 AM, Marek Olšák wrote:
Module: Mesa
Branch: master
Commit: c8fe3b9dca73e3b91979d92ba4136b302001b3bb
URL:    
https://urldefense.proofpoint.com/v2/url?u=http-3A__cgit.freedesktop.org_mesa_mesa_commit_-3Fid-3Dc8fe3b9dca73e3b91979d92ba4136b302001b3bb&d=CwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=T0t4QG7chq2ZwJo6wilkFznRSFy-8uDKartPGbomVj8&m=lFYqYu7WLZRIthDamMpIHOysN7nmCAUk1RdZwZC7E44&s=a157hpIVAAqEFvga55qDUIH6SprwqXZ4BCoGVPCWfa4&e=

Author: Marek Olšák <marek.ol...@amd.com>
Date:   Sun Jul 17 18:38:38 2016 +0200

st/mesa: completely rewrite state atoms

The goal is to do this in st_validate_state:
    while (dirty)
       atoms[u_bit_scan(&dirty)]->update(st);

That implies that atoms can't specify which flags they consume.
There is exactly one ST_NEW_* flag for each atom. (58 flags in total)

There are macros that combine multiple flags into one for easier use.

All _NEW_* flags are translated into ST_NEW_* flags in st_invalidate_state.
st/mesa doesn't keep the _NEW_* flags after that.

torcs is 2% faster between the previous patch and the end of this series.

v2: - add st_atom_list.h to Makefile.sources

Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com>

---

  src/mesa/Makefile.sources                      |   1 +
  src/mesa/state_tracker/st_atom.c               | 156 +++++-------------
  src/mesa/state_tracker/st_atom.h               | 210 +++++++++++++++++--------
  src/mesa/state_tracker/st_atom_array.c         |   4 -
  src/mesa/state_tracker/st_atom_atomicbuf.c     |  24 ---
  src/mesa/state_tracker/st_atom_blend.c         |   4 -
  src/mesa/state_tracker/st_atom_clip.c          |   4 -
  src/mesa/state_tracker/st_atom_constbuf.c      |  48 ------
  src/mesa/state_tracker/st_atom_depth.c         |   4 -
  src/mesa/state_tracker/st_atom_framebuffer.c   |   4 -
  src/mesa/state_tracker/st_atom_image.c         |  24 ---
  src/mesa/state_tracker/st_atom_list.h          |  75 +++++++++
  src/mesa/state_tracker/st_atom_msaa.c          |   8 -
  src/mesa/state_tracker/st_atom_pixeltransfer.c |   4 -
  src/mesa/state_tracker/st_atom_rasterizer.c    |  16 --
  src/mesa/state_tracker/st_atom_sampler.c       |   4 -
  src/mesa/state_tracker/st_atom_scissor.c       |   8 -
  src/mesa/state_tracker/st_atom_shader.c        |  24 ---
  src/mesa/state_tracker/st_atom_stipple.c       |   5 -
  src/mesa/state_tracker/st_atom_storagebuf.c    |  24 ---
  src/mesa/state_tracker/st_atom_tess.c          |   4 -
  src/mesa/state_tracker/st_atom_texture.c       |  24 ---
  src/mesa/state_tracker/st_atom_viewport.c      |   4 -
  src/mesa/state_tracker/st_cb_bitmap.c          |  10 +-
  src/mesa/state_tracker/st_cb_bufferobjects.c   |  10 +-
  src/mesa/state_tracker/st_cb_compute.c         |   2 +-
  src/mesa/state_tracker/st_cb_feedback.c        |   2 +-
  src/mesa/state_tracker/st_cb_program.c         |  38 ++---
  src/mesa/state_tracker/st_cb_texture.c         |   2 +-
  src/mesa/state_tracker/st_context.c            | 100 ++++++++++--
  src/mesa/state_tracker/st_context.h            |  42 +----
  src/mesa/state_tracker/st_draw.c               |   4 +-
  src/mesa/state_tracker/st_manager.c            |   4 +-
  33 files changed, 381 insertions(+), 516 deletions(-)

Diff:   
https://urldefense.proofpoint.com/v2/url?u=http-3A__cgit.freedesktop.org_mesa_mesa_diff_-3Fid-3Dc8fe3b9dca73e3b91979d92ba4136b302001b3bb&d=CwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=T0t4QG7chq2ZwJo6wilkFznRSFy-8uDKartPGbomVj8&m=lFYqYu7WLZRIthDamMpIHOysN7nmCAUk1RdZwZC7E44&s=LOlK4ENHEaa1JBlA0wq8I6GQWpROFYYDFo_2gyzhego&e=
_______________________________________________
mesa-commit mailing list
mesa-com...@lists.freedesktop.org
https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.freedesktop.org_mailman_listinfo_mesa-2Dcommit&d=CwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=T0t4QG7chq2ZwJo6wilkFznRSFy-8uDKartPGbomVj8&m=lFYqYu7WLZRIthDamMpIHOysN7nmCAUk1RdZwZC7E44&s=S1tyA97XsiodjH7EOJ1M5vfEd5yiU4qcDicS1fayqdE&e=


_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to