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