mesa/src/intel
Kenneth Graunke d5d2fb5c4c isl: Mark enum isl_channel_select packed so it becomes 1 byte.
I recently discovered that the following code lead to valgrind errors:

   struct isl_swizzle swizzle = ISL_SWIZZLE_IDENTITY;
   VALGRIND_CHECK_MEM_IS_DEFINED(&swizzle, sizeof(swizzle));

which is surprising, because struct isl_swizzle is simply:

   struct isl_swizzle {
      enum isl_channel_select r:4;
      enum isl_channel_select g:4;
      enum isl_channel_select b:4;
      enum isl_channel_select a:4;
   };

and the above code initializes all of them with a C99 initializer.
Iván Briano reminded me that C99 initializers don't necessarily zero
padding.  A quick inspection revealed that sizeof(struct isl_swizzle)
was 4 (rather than the expected 2).  Ian Romanick suggested changing
it to uint16_t, since this is essentially dicing up an unsigned, and
that worked.

This patch marks enum isl_channel_select packed, changing its size
from 4 bytes to 1 byte.  This then makes struct isl_swizzle 2 bytes,
with no bogus padding fields.  This eliminates valgrind undefined
memory warnings.

These isl_swizzle values become part of our BLORP blit program keys,
which are then hashed.  This undefined padding was being included in
the hashing, possibly leading to issues.  I originally saw this error
when running KHR-GL45.texture_size_promotion.functional in iris under
valgrind.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
2019-06-07 11:09:44 -07:00
..
blorp intel/blorp: Handle SINT/UINT clamping on blits. 2019-06-05 16:58:07 -07:00
common intel/decoder: Use get_state_size() over guessed counts in more cases 2019-05-28 13:44:16 -07:00
compiler intel/compiler: Treat b32csel as potentially producing a Boolean result for resolve analysis 2019-06-05 17:04:17 -07:00
dev iris: Print binding tables when INTEL_DEBUG=bt 2019-06-03 14:14:45 -07:00
genxml intel/genxml: Update MI_ATOMIC genxml definition. 2019-04-29 21:19:59 +00:00
isl isl: Mark enum isl_channel_select packed so it becomes 1 byte. 2019-06-07 11:09:44 -07:00
perf intel/perf: improve dynamic loading config detection 2019-06-05 20:16:23 +00:00
tools intel/tools: use C99 print conversion specifier for 32 bit builds 2019-06-05 19:25:15 +00:00
vulkan anv: allow NV12 <--> AHARDWAREBUFFER_FORMAT_Y8Cb8Cr8_420 inter-op 2019-06-06 09:20:03 -07:00
Android.blorp.mk intel: android: remove libdrm_intel requirement 2017-03-30 19:07:23 +01:00
Android.common.mk android: static link with libexpat with Android O+ 2019-03-25 10:11:57 +02:00
Android.compiler.mk android: fix build issues with brw_nir_trig_workarounds.c 2017-10-04 07:39:05 +03:00
Android.dev.mk drm-uapi: use local files, not system libdrm 2019-02-14 11:20:00 +00:00
Android.genxml.mk intel/genxml/icl: Generate packing headers 2018-02-15 16:14:55 -08:00
Android.isl.mk android: intel/isl: remove redundant building rules 2019-02-22 07:56:11 +02:00
Android.mk i965: extract performance query metrics 2019-04-17 14:10:42 +01:00
Android.perf.mk i965: extract performance query metrics 2019-04-17 14:10:42 +01:00
Android.vulkan.mk anv/android: fix missing dependencies issue during parallel build 2019-05-27 10:13:17 +03:00
Makefile.perf.am i965: extract performance query metrics 2019-04-17 14:10:42 +01:00
Makefile.sources intel/compiler: add a NIR pass to lower conversions 2019-04-18 11:05:18 +02:00
meson.build i965: extract performance query metrics 2019-04-17 14:10:42 +01:00