Mesa (master): intel/blorp: Use designated initializers in surf_convert_to_single_slice

2016-11-15 Thread Jordan Justen
Module: Mesa
Branch: master
Commit: 615ccf44cf0305976b15bad48252943802e41345
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=615ccf44cf0305976b15bad48252943802e41345

Author: Jordan Justen 
Date:   Tue Nov 15 02:21:00 2016 -0800

intel/blorp: Use designated initializers in surf_convert_to_single_slice

Signed-off-by: Jordan Justen 
Reviewed-by: Kenneth Graunke 
Reviewed-by: Jason Ekstrand 

---

 src/intel/blorp/blorp_blit.c | 29 +
 1 file changed, 13 insertions(+), 16 deletions(-)

diff --git a/src/intel/blorp/blorp_blit.c b/src/intel/blorp/blorp_blit.c
index 1108335..c0b56c3 100644
--- a/src/intel/blorp/blorp_blit.c
+++ b/src/intel/blorp/blorp_blit.c
@@ -1347,22 +1347,19 @@ surf_convert_to_single_slice(const struct isl_device 
*isl_dev,
uint32_t tile_x_px, tile_y_px;
surf_get_intratile_offset_px(info, &tile_x_px, &tile_y_px);
 
-   /* TODO: Once this file gets converted to C, we shouls just use designated
-* initializers.
-*/
-   struct isl_surf_init_info init_info = { 0, };
-
-   init_info.dim = ISL_SURF_DIM_2D;
-   init_info.format = info->surf.format;
-   init_info.width = slice_width_px + tile_x_px;
-   init_info.height = slice_height_px + tile_y_px;
-   init_info.depth = 1;
-   init_info.levels = 1;
-   init_info.array_len = 1;
-   init_info.samples = info->surf.samples;
-   init_info.min_pitch = info->surf.row_pitch;
-   init_info.usage = info->surf.usage;
-   init_info.tiling_flags = 1 << info->surf.tiling;
+   struct isl_surf_init_info init_info = {
+  .dim = ISL_SURF_DIM_2D,
+  .format = info->surf.format,
+  .width = slice_width_px + tile_x_px,
+  .height = slice_height_px + tile_y_px,
+  .depth = 1,
+  .levels = 1,
+  .array_len = 1,
+  .samples = info->surf.samples,
+  .min_pitch = info->surf.row_pitch,
+  .usage = info->surf.usage,
+  .tiling_flags = 1 << info->surf.tiling,
+   };
 
isl_surf_init_s(isl_dev, &info->surf, &init_info);
assert(info->surf.row_pitch == init_info.min_pitch);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): egl: add missing error-checking to eglReleaseTexImage()

2016-11-15 Thread Tapani Pälli
Module: Mesa
Branch: master
Commit: 25c60fa6a2d9861655271b5236c27aa72e48edbf
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=25c60fa6a2d9861655271b5236c27aa72e48edbf

Author: Eric Engestrom 
Date:   Sat Oct  1 00:23:26 2016 +0100

egl: add missing error-checking to eglReleaseTexImage()

Signed-off-by: Eric Engestrom 
Reviewed-by: Tapani Pälli 

---

 src/egl/main/eglsurface.c | 43 ---
 1 file changed, 40 insertions(+), 3 deletions(-)

diff --git a/src/egl/main/eglsurface.c b/src/egl/main/eglsurface.c
index 8e56919..04f42ca 100644
--- a/src/egl/main/eglsurface.c
+++ b/src/egl/main/eglsurface.c
@@ -525,14 +525,51 @@ _eglBindTexImage(_EGLDriver *drv, _EGLDisplay *dpy, 
_EGLSurface *surface,
 }
 
 EGLBoolean
-_eglReleaseTexImage(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf,
+_eglReleaseTexImage(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surf,
 EGLint buffer)
 {
-   /* TODO: do basic error checking and return success/fail.
+   /* Just do basic error checking and return success/fail.
 * Drivers must implement the real stuff.
 */
 
-  return EGL_TRUE;
+   EGLint texture_type = EGL_PBUFFER_BIT;
+
+   if (surf == EGL_NO_SURFACE)
+   {
+  _eglError(EGL_BAD_SURFACE, "eglReleaseTexImage");
+  return EGL_FALSE;
+   }
+
+   if (!surf->BoundToTexture)
+   {
+  /* Not an error, simply nothing to do */
+  return EGL_TRUE;
+   }
+
+   if (surf->TextureFormat == EGL_NO_TEXTURE)
+   {
+  _eglError(EGL_BAD_MATCH, "eglReleaseTexImage");
+  return EGL_FALSE;
+   }
+
+   if (buffer != EGL_BACK_BUFFER)
+   {
+  _eglError(EGL_BAD_PARAMETER, "eglReleaseTexImage");
+  return EGL_FALSE;
+   }
+
+   if (dpy->Extensions.NOK_texture_from_pixmap)
+  texture_type |= EGL_PIXMAP_BIT;
+
+   if (!(surf->Type & texture_type))
+   {
+  _eglError(EGL_BAD_SURFACE, "eglReleaseTexImage");
+  return EGL_FALSE;
+   }
+
+   surf->BoundToTexture = EGL_FALSE;
+
+   return EGL_TRUE;
 }
 
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): EGL/android: pbuffer implementation

2016-11-15 Thread Tapani Pälli
Module: Mesa
Branch: master
Commit: b663753f3b27b2bbc14ec7552c178f9900e79954
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b663753f3b27b2bbc14ec7552c178f9900e79954

Author: Liu Zhiquan 
Date:   Wed Nov 16 10:11:28 2016 +0800

EGL/android: pbuffer implementation

Android path didn't support pbuffer, so add pbuffer support to fix
most failing dEQP and CTS pbuffer test cases.

Patch adds a single buffer config to support pbuffer, and creates
image in getBuffers for pbuffer when surface type is front surface.

The EGL 1.5 spec states that pbuffers have a back buffer but no front
buffer, single-buffered surfaces with no front buffer confuse Mesa;
so we deviate from the spec, following the precedent of Mesa's EGL
X11 platform.

V3: update commit message and code review changes.

Signed-off-by: Liu Zhiquan 
Signed-off-by: Kalyan Kondapally 
Reviewed-by: Emil Velikov 

---

 src/egl/drivers/dri2/egl_dri2.h |  3 +-
 src/egl/drivers/dri2/platform_android.c | 98 +
 2 files changed, 78 insertions(+), 23 deletions(-)

diff --git a/src/egl/drivers/dri2/egl_dri2.h b/src/egl/drivers/dri2/egl_dri2.h
index 0020a5b..c039b64 100644
--- a/src/egl/drivers/dri2/egl_dri2.h
+++ b/src/egl/drivers/dri2/egl_dri2.h
@@ -290,7 +290,8 @@ struct dri2_egl_surface
 #ifdef HAVE_ANDROID_PLATFORM
struct ANativeWindow *window;
struct ANativeWindowBuffer *buffer;
-   __DRIimage *dri_image;
+   __DRIimage *dri_image_back;
+   __DRIimage *dri_image_front;
 
/* EGL-owned buffers */
__DRIbuffer   *local_buffers[__DRI_BUFFER_COUNT];
diff --git a/src/egl/drivers/dri2/platform_android.c 
b/src/egl/drivers/dri2/platform_android.c
index cf60f1d..4efba98 100644
--- a/src/egl/drivers/dri2/platform_android.c
+++ b/src/egl/drivers/dri2/platform_android.c
@@ -204,9 +204,9 @@ droid_window_enqueue_buffer(_EGLDisplay *disp, struct 
dri2_egl_surface *dri2_sur
 
mtx_lock(&disp->Mutex);
 
-   if (dri2_surf->dri_image) {
-  dri2_dpy->image->destroyImage(dri2_surf->dri_image);
-  dri2_surf->dri_image = NULL;
+   if (dri2_surf->dri_image_back) {
+  dri2_dpy->image->destroyImage(dri2_surf->dri_image_back);
+  dri2_surf->dri_image_back = NULL;
}
 
return EGL_TRUE;
@@ -295,7 +295,7 @@ droid_create_surface(_EGLDriver *drv, _EGLDisplay *disp, 
EGLint type,
   window->query(window, NATIVE_WINDOW_HEIGHT, &dri2_surf->base.Height);
}
 
-   config = dri2_get_dri_config(dri2_conf, EGL_WINDOW_BIT,
+   config = dri2_get_dri_config(dri2_conf, type,
 dri2_surf->base.GLColorspace);
if (!config)
   goto cleanup_surface;
@@ -353,6 +353,18 @@ droid_destroy_surface(_EGLDriver *drv, _EGLDisplay *disp, 
_EGLSurface *surf)
   dri2_surf->window->common.decRef(&dri2_surf->window->common);
}
 
+   if (dri2_surf->dri_image_back) {
+  _eglLog(_EGL_DEBUG, "%s : %d : destroy dri_image_back", __func__, 
__LINE__);
+  dri2_dpy->image->destroyImage(dri2_surf->dri_image_back);
+  dri2_surf->dri_image_back = NULL;
+   }
+
+   if (dri2_surf->dri_image_front) {
+  _eglLog(_EGL_DEBUG, "%s : %d : destroy dri_image_front", __func__, 
__LINE__);
+  dri2_dpy->image->destroyImage(dri2_surf->dri_image_front);
+  dri2_surf->dri_image_front = NULL;
+   }
+
(*dri2_dpy->core->destroyDrawable)(dri2_surf->dri_drawable);
 
free(dri2_surf);
@@ -391,8 +403,8 @@ get_back_bo(struct dri2_egl_surface *dri2_surf)
int fourcc, pitch;
int offset = 0, fd;
 
-   if (dri2_surf->dri_image)
-  return 0;
+   if (dri2_surf->dri_image_back)
+  return 0;
 
if (!dri2_surf->buffer)
   return -1;
@@ -414,7 +426,7 @@ get_back_bo(struct dri2_egl_surface *dri2_surf)
   return -1;
}
 
-   dri2_surf->dri_image =
+   dri2_surf->dri_image_back =
   dri2_dpy->image->createImageFromFds(dri2_dpy->dri_screen,
   dri2_surf->base.Width,
   dri2_surf->base.Height,
@@ -424,7 +436,7 @@ get_back_bo(struct dri2_egl_surface *dri2_surf)
   &pitch,
   &offset,
   dri2_surf);
-   if (!dri2_surf->dri_image)
+   if (!dri2_surf->dri_image_back)
   return -1;
 
return 0;
@@ -439,25 +451,75 @@ droid_image_get_buffers(__DRIdrawable *driDrawable,
   struct __DRIimageList *images)
 {
struct dri2_egl_surface *dri2_surf = loaderPrivate;
+   struct dri2_egl_display *dri2_dpy =
+  dri2_egl_display(dri2_surf->base.Resource.Display);
 
images->image_mask = 0;
+   images->front = NULL;
+   images->back = NULL;
 
if (update_buffers(dri2_surf) < 0)
   return 0;
 
if (buffer_mask & __DRI_IMAGE_BUFFER_FRONT) {
-  /*
-   * We don't support front buffers and GLES doesn't require them for
-   * window surfaces, but some DRI drivers will request them anyway.
-   * We just ignore such request as ot

Mesa (master): i965: Fix KBL typo in string

2016-11-15 Thread Kenneth Graunke
Module: Mesa
Branch: master
Commit: 19a01f8139f74d98548c87a0fd3cc2ff9c60b46b
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=19a01f8139f74d98548c87a0fd3cc2ff9c60b46b

Author: Ben Widawsky 
Date:   Thu Nov 10 10:20:13 2016 -0800

i965: Fix KBL typo in string

Signed-off-by: Ben Widawsky 
Reviewed-by: Anuj Phogat 
Reviewed-by: Kenneth Graunke 

---

 include/pci_ids/i965_pci_ids.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/pci_ids/i965_pci_ids.h b/include/pci_ids/i965_pci_ids.h
index fbc3999..ffcaf33 100644
--- a/include/pci_ids/i965_pci_ids.h
+++ b/include/pci_ids/i965_pci_ids.h
@@ -153,7 +153,7 @@ CHIPSET(0x5913, kbl_gt1_5, "Intel(R) Kabylake GT1.5")
 CHIPSET(0x5915, kbl_gt1_5, "Intel(R) Kabylake GT1.5")
 CHIPSET(0x5917, kbl_gt1_5, "Intel(R) Kabylake GT1.5")
 CHIPSET(0x5912, kbl_gt2, "Intel(R) Kabylake GT2")
-CHIPSET(0x5916, kbl_gt2, "Intel(R) HD Graphics 620 (Intel(R) Kabylake GT2)")
+CHIPSET(0x5916, kbl_gt2, "Intel(R) HD Graphics 620 (Kabylake GT2)")
 CHIPSET(0x591A, kbl_gt2, "Intel(R) Kabylake GT2")
 CHIPSET(0x591B, kbl_gt2, "Intel(R) Kabylake GT2")
 CHIPSET(0x591D, kbl_gt2, "Intel(R) Kabylake GT2")

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965/glk: Add basic Geminilake support

2016-11-15 Thread Kenneth Graunke
Module: Mesa
Branch: master
Commit: 2193fb0e1f437b53672a03f74e40d4aebc503f9e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2193fb0e1f437b53672a03f74e40d4aebc503f9e

Author: Ben Widawsky 
Date:   Thu Nov 10 10:20:11 2016 -0800

i965/glk: Add basic Geminilake support

v2: s/bdw/gen; Add the 2x6 config
v3: Add min_ds_entries

Cc: "13.0" 
Signed-off-by: Ben Widawsky 
Reviewed-by: Anuj Phogat 
Reviewed-by: Kenneth Graunke 

---

 include/pci_ids/i965_pci_ids.h |  2 ++
 src/intel/common/gen_device_info.c | 46 ++
 2 files changed, 48 insertions(+)

diff --git a/include/pci_ids/i965_pci_ids.h b/include/pci_ids/i965_pci_ids.h
index e482007..fbc3999 100644
--- a/include/pci_ids/i965_pci_ids.h
+++ b/include/pci_ids/i965_pci_ids.h
@@ -163,3 +163,5 @@ CHIPSET(0x5923, kbl_gt3, "Intel(R) Kabylake GT3")
 CHIPSET(0x5926, kbl_gt3, "Intel(R) Kabylake GT3")
 CHIPSET(0x5927, kbl_gt3, "Intel(R) Kabylake GT3")
 CHIPSET(0x593B, kbl_gt4, "Intel(R) Kabylake GT4")
+CHIPSET(0x3184, glk, "Intel(R) HD Graphics (Geminilake)")
+CHIPSET(0x3185, glk_2x6, "Intel(R) HD Graphics (Geminilake 2x6)")
diff --git a/src/intel/common/gen_device_info.c 
b/src/intel/common/gen_device_info.c
index c7b8e56..51fdf34 100644
--- a/src/intel/common/gen_device_info.c
+++ b/src/intel/common/gen_device_info.c
@@ -475,6 +475,52 @@ static const struct gen_device_info 
gen_device_info_kbl_gt4 = {
.num_slices = 3,
 };
 
+static const struct gen_device_info gen_device_info_glk = {
+   GEN9_FEATURES,
+   .is_broxton = 1,
+   .gt = 1,
+   .has_llc = false,
+
+   .num_slices = 1,
+   .max_vs_threads = 112,
+   .max_tcs_threads = 112,
+   .max_tes_threads = 112,
+   .max_gs_threads = 112,
+   .max_cs_threads = 6 * 6,
+   .urb = {
+  .size = 192,
+  .min_vs_entries = 34,
+  .min_ds_entries = 34,
+  .max_vs_entries = 704,
+  .max_tcs_entries = 256,
+  .max_tes_entries = 416,
+  .max_gs_entries = 256,
+   }
+};
+
+static const struct gen_device_info gen_device_info_glk_2x6 = {
+   GEN9_FEATURES,
+   .is_broxton = 1,
+   .gt = 1,
+   .has_llc = false,
+
+   .num_slices = 1,
+   .max_vs_threads = 56, /* XXX: guess */
+   .max_tcs_threads = 56, /* XXX: guess */
+   .max_tes_threads = 56,
+   .max_gs_threads = 56,
+   .max_cs_threads = 6 * 6,
+   .urb = {
+  .size = 128,
+  .min_vs_entries = 34,
+  .min_ds_entries = 34,
+  .max_vs_entries = 352,
+  .max_tcs_entries = 128,
+  .max_tes_entries = 208,
+  .max_gs_entries = 128,
+   }
+};
+
 bool
 gen_get_device_info(int devid, struct gen_device_info *devinfo)
 {

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): i965: Consolidate GEN9 LP definition

2016-11-15 Thread Kenneth Graunke
Module: Mesa
Branch: master
Commit: 37370f6bfce8ef146e55efb906dfe3a73f510938
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=37370f6bfce8ef146e55efb906dfe3a73f510938

Author: Ben Widawsky 
Date:   Thu Nov 10 10:20:12 2016 -0800

i965: Consolidate GEN9 LP definition

Signed-off-by: Ben Widawsky 
Reviewed-by: Anuj Phogat 
Reviewed-by: Kenneth Graunke 

---

 src/intel/common/gen_device_info.c | 122 +
 1 file changed, 42 insertions(+), 80 deletions(-)

diff --git a/src/intel/common/gen_device_info.c 
b/src/intel/common/gen_device_info.c
index 51fdf34..b8d9227 100644
--- a/src/intel/common/gen_device_info.c
+++ b/src/intel/common/gen_device_info.c
@@ -346,6 +346,44 @@ static const struct gen_device_info gen_device_info_chv = {
   .max_gs_entries = 640,\
}
 
+#define GEN9_LP_FEATURES   \
+   GEN9_FEATURES,  \
+   .is_broxton = 1,\
+   .gt = 1,\
+   .has_llc = false,   \
+   .num_slices = 1,\
+   .max_vs_threads = 112,  \
+   .max_tcs_threads = 112, \
+   .max_tes_threads = 112, \
+   .max_gs_threads = 112,  \
+   .max_cs_threads = 6 * 6,\
+   .urb = {\
+  .size = 192, \
+  .min_vs_entries = 34,\
+  .min_ds_entries = 34,\
+  .max_vs_entries = 704,   \
+  .max_tcs_entries = 256,  \
+  .max_tes_entries = 416,  \
+  .max_gs_entries = 256,   \
+   }
+
+#define GEN9_LP_FEATURES_2X6   \
+   GEN9_LP_FEATURES,   \
+   .max_vs_threads = 56,   \
+   .max_tcs_threads = 56,  \
+   .max_tes_threads = 56,  \
+   .max_gs_threads = 56,   \
+   .max_cs_threads = 6 * 6,\
+   .urb = {\
+  .size = 128, \
+  .min_vs_entries = 34,\
+  .min_ds_entries = 34,\
+  .max_vs_entries = 352,   \
+  .max_tcs_entries = 128,  \
+  .max_tes_entries = 208,  \
+  .max_gs_entries = 128,   \
+   }
+
 static const struct gen_device_info gen_device_info_skl_gt1 = {
GEN9_FEATURES, .gt = 1,
.num_slices = 1,
@@ -377,49 +415,11 @@ static const struct gen_device_info 
gen_device_info_skl_gt4 = {
 };
 
 static const struct gen_device_info gen_device_info_bxt = {
-   GEN9_FEATURES,
-   .is_broxton = 1,
-   .gt = 1,
-   .has_llc = false,
-
-   .num_slices = 1,
-   .max_vs_threads = 112,
-   .max_tcs_threads = 112,
-   .max_tes_threads = 112,
-   .max_gs_threads = 112,
-   .max_cs_threads = 6 * 6,
-   .urb = {
-  .size = 192,
-  .min_vs_entries = 34,
-  .min_ds_entries = 34,
-  .max_vs_entries = 704,
-  .max_tcs_entries = 256,
-  .max_tes_entries = 416,
-  .max_gs_entries = 256,
-   }
+   GEN9_LP_FEATURES
 };
 
 static const struct gen_device_info gen_device_info_bxt_2x6 = {
-   GEN9_FEATURES,
-   .is_broxton = 1,
-   .gt = 1,
-   .has_llc = false,
-
-   .num_slices = 1,
-   .max_vs_threads = 56, /* XXX: guess */
-   .max_tcs_threads = 56, /* XXX: guess */
-   .max_tes_threads = 56,
-   .max_gs_threads = 56,
-   .max_cs_threads = 6 * 6,
-   .urb = {
-  .size = 128,
-  .min_vs_entries = 34,
-  .min_ds_entries = 34,
-  .max_vs_entries = 352,
-  .max_tcs_entries = 128,
-  .max_tes_entries = 208,
-  .max_gs_entries = 128,
-   }
+   GEN9_LP_FEATURES_2X6
 };
 /*
  * Note: for all KBL SKUs, the PRM says SKL for GS entries, not SKL+.
@@ -476,49 +476,11 @@ static const struct gen_device_info 
gen_device_info_kbl_gt4 = {
 };
 
 static const struct gen_device_info gen_device_info_glk = {
-   GEN9_FEATURES,
-   .is_broxton = 1,
-   .gt = 1,
-   .has_llc = false,
-
-   .num_slices = 1,
-   .max_vs_threads = 112,
-   .max_tcs_threads = 112,
-   .max_tes_threads = 112,
-   .max_gs_threads = 112,
-   .max_cs_threads = 6 * 6,
-   .urb = {
-  .size = 192,
-  .min_vs_entries = 34,
-  .min_ds_entries = 34,
-  .max_vs_entries = 704,
-  .max_tcs_entries = 256,
-  .max_tes_entries = 416,
-  .max_gs_entries = 256,
-   }
+   GEN9_LP_FEATURES
 };
 
 static const struct gen_device_info gen_device_info_glk_2x6 = {
-   GEN9_FEATURES,
-   .is_broxton = 1,
-   .gt = 1,
-   .has_llc = false,
-
-   .num_slices = 1,
-   .max_vs_threads = 56, /* XXX: guess */
-   .max_tcs_threads = 56, /* XXX: guess */
-   .max_tes

Mesa (master): util: Fix Clang trivial destructor check.

2016-11-15 Thread Vinson Lee
Module: Mesa
Branch: master
Commit: ed6694d5114e81cf1c413aec8265ddc8a5c52599
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=ed6694d5114e81cf1c413aec8265ddc8a5c52599

Author: Vinson Lee 
Date:   Sun Nov 13 22:53:54 2016 -0800

util: Fix Clang trivial destructor check.

Check for Clang before GCC.

Clang defines __GNUC__ == 4 and __GNUC_MINOR__ == 2 and matches the GCC
check but not the GCC version for trivial destructor.

Fixes: 98ab905af0e0 ("mesa: Define introspection macro to determine
whether a type is trivially destructible.")
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98526
Signed-off-by: Vinson Lee 
Reviewed-by: Marek Olšák 
Reviewed-by: Edward O'Callaghan 
Reviewed-by: Francisco Jerez 

---

 src/util/macros.h | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/util/macros.h b/src/util/macros.h
index 0563fa5..733bf42 100644
--- a/src/util/macros.h
+++ b/src/util/macros.h
@@ -167,12 +167,12 @@ do {   \
  * performs no action and all member variables and base classes are
  * trivially destructible themselves.
  */
-#   if defined(__GNUC__)
-#  if ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)))
+#   if (defined(__clang__) && defined(__has_feature))
+#  if __has_feature(has_trivial_destructor)
 # define HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T)
 #  endif
-#   elif (defined(__clang__) && defined(__has_feature))
-#  if __has_feature(has_trivial_destructor)
+#   elif defined(__GNUC__)
+#  if ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)))
 # define HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T)
 #  endif
 #   elif defined(_MSC_VER) && !defined(__INTEL_COMPILER)

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): swr: add archrast generated files to gitignore

2016-11-15 Thread Ilia Mirkin
Module: Mesa
Branch: master
Commit: 00efbbc38ccc1507b0963da4d60c601b9e0cb932
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=00efbbc38ccc1507b0963da4d60c601b9e0cb932

Author: Ilia Mirkin 
Date:   Wed Nov  9 18:04:46 2016 -0500

swr: add archrast generated files to gitignore

Signed-off-by: Ilia Mirkin 
Reviewed-by: Bruce Cherniak 

---

 src/gallium/drivers/swr/.gitignore | 4 
 1 file changed, 4 insertions(+)

diff --git a/src/gallium/drivers/swr/.gitignore 
b/src/gallium/drivers/swr/.gitignore
index 6b4de9e..172f3bf 100644
--- a/src/gallium/drivers/swr/.gitignore
+++ b/src/gallium/drivers/swr/.gitignore
@@ -1,4 +1,8 @@
 swr_context_llvm.h
+rasterizer/archrast/gen_ar_event.cpp
+rasterizer/archrast/gen_ar_event.h
+rasterizer/archrast/gen_ar_eventhandler.h
+rasterizer/archrast/gen_ar_eventhandlerfile.h
 rasterizer/jitter/builder_gen.cpp
 rasterizer/jitter/builder_gen.h
 rasterizer/jitter/builder_x86.cpp

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): swr: mark both frag and vert textures read, don' t forget about cbs

2016-11-15 Thread Ilia Mirkin
Module: Mesa
Branch: master
Commit: 96291478ea2ab91df571ef6ebe26782ef90bf0c1
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=96291478ea2ab91df571ef6ebe26782ef90bf0c1

Author: Ilia Mirkin 
Date:   Wed Nov  9 22:08:24 2016 -0500

swr: mark both frag and vert textures read, don't forget about cbs

Signed-off-by: Ilia Mirkin 
Reviewed-by: Bruce Cherniak 

---

 src/gallium/drivers/swr/swr_state.cpp | 20 +++-
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/src/gallium/drivers/swr/swr_state.cpp 
b/src/gallium/drivers/swr/swr_state.cpp
index 65327f3..526d7e7 100644
--- a/src/gallium/drivers/swr/swr_state.cpp
+++ b/src/gallium/drivers/swr/swr_state.cpp
@@ -674,11 +674,21 @@ swr_update_resource_status(struct pipe_context *pipe,
}
 
/* texture sampler views */
-   for (uint32_t i = 0; i < PIPE_MAX_SHADER_SAMPLER_VIEWS; i++) {
-  struct pipe_sampler_view *view =
- ctx->sampler_views[PIPE_SHADER_FRAGMENT][i];
-  if (view)
- swr_resource_read(view->texture);
+   for (uint32_t j : {PIPE_SHADER_VERTEX, PIPE_SHADER_FRAGMENT}) {
+  for (uint32_t i = 0; i < ctx->num_sampler_views[j]; i++) {
+ struct pipe_sampler_view *view = ctx->sampler_views[j][i];
+ if (view)
+swr_resource_read(view->texture);
+  }
+   }
+
+   /* constant buffers */
+   for (uint32_t j : {PIPE_SHADER_VERTEX, PIPE_SHADER_FRAGMENT}) {
+  for (uint32_t i = 0; i < PIPE_MAX_CONSTANT_BUFFERS; i++) {
+ struct pipe_constant_buffer *cb = &ctx->constants[j][i];
+ if (cb->buffer)
+swr_resource_read(cb->buffer);
+  }
}
 }
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): swr: fix texture layout for compressed formats

2016-11-15 Thread Ilia Mirkin
Module: Mesa
Branch: master
Commit: 8c0f76e961ae023bbe7c8deed1abd04496e9691b
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=8c0f76e961ae023bbe7c8deed1abd04496e9691b

Author: Ilia Mirkin 
Date:   Wed Nov  9 16:41:16 2016 -0500

swr: fix texture layout for compressed formats

Fixes the texsubimage piglit and lets the copyteximage one get further.

Signed-off-by: Ilia Mirkin 
Reviewed-by: Bruce Cherniak 

---

 src/gallium/drivers/swr/swr_context.cpp | 5 +++--
 src/gallium/drivers/swr/swr_screen.cpp  | 5 +++--
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/swr/swr_context.cpp 
b/src/gallium/drivers/swr/swr_context.cpp
index 6c0782a..a5ab236 100644
--- a/src/gallium/drivers/swr/swr_context.cpp
+++ b/src/gallium/drivers/swr/swr_context.cpp
@@ -157,8 +157,9 @@ swr_transfer_map(struct pipe_context *pipe,
   }
}
 
-   unsigned offset = box->z * pt->layer_stride + box->y * pt->stride
-  + box->x * util_format_get_blocksize(format);
+   unsigned offset = box->z * pt->layer_stride +
+  util_format_get_nblocksy(format, box->y) * pt->stride +
+  util_format_get_stride(format, box->x);
 
*transfer = pt;
 
diff --git a/src/gallium/drivers/swr/swr_screen.cpp 
b/src/gallium/drivers/swr/swr_screen.cpp
index fa16edd..16a8bcf 100644
--- a/src/gallium/drivers/swr/swr_screen.cpp
+++ b/src/gallium/drivers/swr/swr_screen.cpp
@@ -796,8 +796,9 @@ swr_texture_layout(struct swr_screen *screen,
  res->alignedHeight = alignedHeight;
   }
 
-  res->row_stride[level] = alignedWidth * finfo.Bpp;
-  res->img_stride[level] = res->row_stride[level] * alignedHeight;
+  res->row_stride[level] = util_format_get_stride(fmt, alignedWidth);
+  res->img_stride[level] =
+ res->row_stride[level] * util_format_get_nblocksy(fmt, alignedHeight);
   res->mip_offsets[level] = total_size;
 
   if (pt->target == PIPE_TEXTURE_3D)

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): swr: make sure that all rendering is finished on shader destroy

2016-11-15 Thread Ilia Mirkin
Module: Mesa
Branch: master
Commit: a2c1d58ddbd77692a1c07a3e7606f6472722a93c
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a2c1d58ddbd77692a1c07a3e7606f6472722a93c

Author: Ilia Mirkin 
Date:   Sat Nov 12 14:20:53 2016 -0500

swr: make sure that all rendering is finished on shader destroy

Rendering could still be ongoing (or have yet to start) when the shader
is deleted. There's no refcounting on the shader text, so insert a
pipeline stall unconditionally when this happens.

[Note, we should instead introduce a way to attach work to
fences, so that the freeing can be done in the current fence.]

Signed-off-by: Ilia Mirkin 
Reviewed-by: Bruce Cherniak 

---

 src/gallium/drivers/swr/swr_state.cpp | 8 
 1 file changed, 8 insertions(+)

diff --git a/src/gallium/drivers/swr/swr_state.cpp 
b/src/gallium/drivers/swr/swr_state.cpp
index 783afba..c1beeeb 100644
--- a/src/gallium/drivers/swr/swr_state.cpp
+++ b/src/gallium/drivers/swr/swr_state.cpp
@@ -371,6 +371,10 @@ swr_delete_vs_state(struct pipe_context *pipe, void *vs)
 {
struct swr_vertex_shader *swr_vs = (swr_vertex_shader *)vs;
FREE((void *)swr_vs->pipe.tokens);
+   struct swr_screen *screen = swr_screen(pipe->screen);
+   if (!swr_is_fence_pending(screen->flush_fence))
+  swr_fence_submit(swr_context(pipe), screen->flush_fence);
+   swr_fence_finish(pipe->screen, NULL, screen->flush_fence, 0);
delete swr_vs;
 }
 
@@ -407,6 +411,10 @@ swr_delete_fs_state(struct pipe_context *pipe, void *fs)
 {
struct swr_fragment_shader *swr_fs = (swr_fragment_shader *)fs;
FREE((void *)swr_fs->pipe.tokens);
+   struct swr_screen *screen = swr_screen(pipe->screen);
+   if (!swr_is_fence_pending(screen->flush_fence))
+  swr_fence_submit(swr_context(pipe), screen->flush_fence);
+   swr_fence_finish(pipe->screen, NULL, screen->flush_fence, 0);
delete swr_fs;
 }
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): swr: mark rgb9_e5 as unrenderable

2016-11-15 Thread Ilia Mirkin
Module: Mesa
Branch: master
Commit: 2f19a974a58b259889d2ac49801adea3477c6877
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2f19a974a58b259889d2ac49801adea3477c6877

Author: Ilia Mirkin 
Date:   Sat Nov 12 03:24:17 2016 -0500

swr: mark rgb9_e5 as unrenderable

The support in swr requires shaders to output the components as UINTs.
This is not how GL or Gallium work, and since this is not a
required-renderable format, just leave it out.

Signed-off-by: Ilia Mirkin 
Reviewed-by: Bruce Cherniak 

---

 src/gallium/drivers/swr/swr_screen.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/gallium/drivers/swr/swr_screen.cpp 
b/src/gallium/drivers/swr/swr_screen.cpp
index c694457..accd6a2 100644
--- a/src/gallium/drivers/swr/swr_screen.cpp
+++ b/src/gallium/drivers/swr/swr_screen.cpp
@@ -545,7 +545,7 @@ mesa_to_swr_format(enum pipe_format format)
   {PIPE_FORMAT_B5G5R5X1_UNORM, B5G5R5X1_UNORM},
   {PIPE_FORMAT_R10G10B10A2_USCALED,R10G10B10A2_USCALED},
   {PIPE_FORMAT_R11G11B10_FLOAT,R11G11B10_FLOAT},
-  {PIPE_FORMAT_R9G9B9E5_FLOAT, R9G9B9E5_SHAREDEXP},
+  {PIPE_FORMAT_R9G9B9E5_FLOAT, (SWR_FORMAT)-1},
   {PIPE_FORMAT_Z32_FLOAT_S8X24_UINT,   R32_FLOAT_X8X24_TYPELESS}, // z
   {PIPE_FORMAT_R1_UNORM,   (SWR_FORMAT)-1},
   {PIPE_FORMAT_R10G10B10X2_USCALED,R10G10B10X2_USCALED},

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): swr: mark color clamping as unsupported

2016-11-15 Thread Ilia Mirkin
Module: Mesa
Branch: master
Commit: dafffd2f11889fa1d04149cb1f797ccfb06e2f05
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=dafffd2f11889fa1d04149cb1f797ccfb06e2f05

Author: Ilia Mirkin 
Date:   Sun Nov 13 09:20:03 2016 -0500

swr: mark color clamping as unsupported

There is no functionality in swr to clamp either vertex or frag colors.
This could be added in swr_shader, at which point these could be
re-enabled.

Fixes arb_color_buffer_float-render

Signed-off-by: Ilia Mirkin 
Reviewed-by: Tim Rowley 

---

 src/gallium/drivers/swr/swr_screen.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/swr/swr_screen.cpp 
b/src/gallium/drivers/swr/swr_screen.cpp
index accd6a2..0c8f5db 100644
--- a/src/gallium/drivers/swr/swr_screen.cpp
+++ b/src/gallium/drivers/swr/swr_screen.cpp
@@ -233,8 +233,9 @@ swr_get_param(struct pipe_screen *screen, enum pipe_cap 
param)
case PIPE_CAP_TEXTURE_BARRIER:
   return 0;
case PIPE_CAP_FRAGMENT_COLOR_CLAMPED:
-   case PIPE_CAP_VERTEX_COLOR_UNCLAMPED: /* draw module */
-   case PIPE_CAP_VERTEX_COLOR_CLAMPED: /* draw module */
+   case PIPE_CAP_VERTEX_COLOR_CLAMPED:
+  return 0;
+   case PIPE_CAP_VERTEX_COLOR_UNCLAMPED:
   return 1;
case PIPE_CAP_MIXED_COLORBUFFER_FORMATS:
   return 1;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): swr: [rasterizer memory] fix store tile for 128-bit ymajor tiling

2016-11-15 Thread Ilia Mirkin
Module: Mesa
Branch: master
Commit: 5dd0b8d3c635b67d8274c64653d825b8855b8167
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5dd0b8d3c635b67d8274c64653d825b8855b8167

Author: Ilia Mirkin 
Date:   Sat Nov 12 03:30:38 2016 -0500

swr: [rasterizer memory] fix store tile for 128-bit ymajor tiling

Noticed by inspection.

Signed-off-by: Ilia Mirkin 
Reviewed-by: Bruce Cherniak 

---

 src/gallium/drivers/swr/rasterizer/memory/StoreTile.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/gallium/drivers/swr/rasterizer/memory/StoreTile.h 
b/src/gallium/drivers/swr/rasterizer/memory/StoreTile.h
index 69e8784..558f048 100644
--- a/src/gallium/drivers/swr/rasterizer/memory/StoreTile.h
+++ b/src/gallium/drivers/swr/rasterizer/memory/StoreTile.h
@@ -2175,7 +2175,7 @@ struct OptStoreRasterTile< 
TilingTraits, SrcFormat, Ds
 template
 struct OptStoreRasterTile< TilingTraits, SrcFormat, 
DstFormat>
 {
-typedef StoreRasterTile, SrcFormat, 
DstFormat> GenericStoreTile;
+typedef StoreRasterTile, 
SrcFormat, DstFormat> GenericStoreTile;
 #if USE_8x2_TILE_BACKEND
 static const size_t SRC_BYTES_PER_PIXEL = FormatTraits::bpp / 8;
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): swr: no support for shader stencil export

2016-11-15 Thread Ilia Mirkin
Module: Mesa
Branch: master
Commit: 6fd398f48e2ad49acdd82a06fe98b87c355e4b5d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6fd398f48e2ad49acdd82a06fe98b87c355e4b5d

Author: Ilia Mirkin 
Date:   Sat Nov 12 02:30:51 2016 -0500

swr: no support for shader stencil export

Signed-off-by: Ilia Mirkin 
Reviewed-by: Bruce Cherniak 

---

 src/gallium/drivers/swr/swr_screen.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/gallium/drivers/swr/swr_screen.cpp 
b/src/gallium/drivers/swr/swr_screen.cpp
index 16a8bcf..c694457 100644
--- a/src/gallium/drivers/swr/swr_screen.cpp
+++ b/src/gallium/drivers/swr/swr_screen.cpp
@@ -214,7 +214,7 @@ swr_get_param(struct pipe_screen *screen, enum pipe_cap 
param)
case PIPE_CAP_PRIMITIVE_RESTART:
   return 1;
case PIPE_CAP_SHADER_STENCIL_EXPORT:
-  return 1;
+  return 0;
case PIPE_CAP_TGSI_INSTANCEID:
case PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR:
case PIPE_CAP_START_INSTANCE:

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): swr: always enable adding start/base vertex to gl_VertexId

2016-11-15 Thread Ilia Mirkin
Module: Mesa
Branch: master
Commit: 2b6b15ab3fbf8aea268296269843344d111a1340
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=2b6b15ab3fbf8aea268296269843344d111a1340

Author: Ilia Mirkin 
Date:   Sat Nov 12 21:02:20 2016 -0500

swr: always enable adding start/base vertex to gl_VertexId

Fixes gl-3.2-basevertex-vertexid

Signed-off-by: Ilia Mirkin 
Reviewed-by: Tim Rowley 

---

 src/gallium/drivers/swr/swr_state.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/gallium/drivers/swr/swr_state.cpp 
b/src/gallium/drivers/swr/swr_state.cpp
index c1beeeb..d64211e 100644
--- a/src/gallium/drivers/swr/swr_state.cpp
+++ b/src/gallium/drivers/swr/swr_state.cpp
@@ -455,6 +455,7 @@ swr_create_vertex_elements_state(struct pipe_context *pipe,
assert(num_elements <= PIPE_MAX_ATTRIBS);
velems = CALLOC_STRUCT(swr_vertex_element_state);
if (velems) {
+  velems->fsState.bVertexIDOffsetEnable = true;
   velems->fsState.numAttribs = num_elements;
   for (unsigned i = 0; i < num_elements; i++) {
  // XXX: we should do this keyed on the VS usage info

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): swr: add support for upper-left fragcoord position

2016-11-15 Thread Ilia Mirkin
Module: Mesa
Branch: master
Commit: 6364491a0ba4d97270ddfee223b4c2f79cc691f1
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=6364491a0ba4d97270ddfee223b4c2f79cc691f1

Author: Ilia Mirkin 
Date:   Sat Nov 12 18:58:46 2016 -0500

swr: add support for upper-left fragcoord position

Fixes glsl-arb-fragment-coord-conventions.

Signed-off-by: Ilia Mirkin 
Reviewed-by: Tim Rowley 

---

 src/gallium/drivers/swr/swr_shader.cpp | 10 --
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/swr/swr_shader.cpp 
b/src/gallium/drivers/swr/swr_shader.cpp
index 38a916e..04637e5 100644
--- a/src/gallium/drivers/swr/swr_shader.cpp
+++ b/src/gallium/drivers/swr/swr_shader.cpp
@@ -480,8 +480,14 @@ BuilderSWR::CompileFS(struct swr_context *ctx, 
swr_jit_fs_key &key)
  inputs[attrib][3] = wrap(VIMMED1(1.0f));
  continue;
   } else if (semantic_name == TGSI_SEMANTIC_POSITION) { // gl_FragCoord
- inputs[attrib][0] = wrap(LOAD(pPS, {0, SWR_PS_CONTEXT_vX, 
PixelPositions_center}, "vX"));
- inputs[attrib][1] = wrap(LOAD(pPS, {0, SWR_PS_CONTEXT_vY, 
PixelPositions_center}, "vY"));
+ if (swr_fs->info.base.properties[TGSI_PROPERTY_FS_COORD_PIXEL_CENTER] 
==
+ TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER) {
+inputs[attrib][0] = wrap(LOAD(pPS, {0, SWR_PS_CONTEXT_vX, 
PixelPositions_center}, "vX"));
+inputs[attrib][1] = wrap(LOAD(pPS, {0, SWR_PS_CONTEXT_vY, 
PixelPositions_center}, "vY"));
+ } else {
+inputs[attrib][0] = wrap(LOAD(pPS, {0, SWR_PS_CONTEXT_vX, 
PixelPositions_UL}, "vX"));
+inputs[attrib][1] = wrap(LOAD(pPS, {0, SWR_PS_CONTEXT_vY, 
PixelPositions_UL}, "vY"));
+ }
  inputs[attrib][2] = wrap(LOAD(pPS, {0, SWR_PS_CONTEXT_vZ}, "vZ"));
  inputs[attrib][3] =
 wrap(LOAD(pPS, {0, SWR_PS_CONTEXT_vOneOverW, 
PixelPositions_center}, "vOneOverW"));

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): swr: [rasterizer memory] add support for R32_FLOAT_X8X24 formats

2016-11-15 Thread Ilia Mirkin
Module: Mesa
Branch: master
Commit: 45d9cd36fe9a3132e32f3efda0fbcbade2c71d21
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=45d9cd36fe9a3132e32f3efda0fbcbade2c71d21

Author: Ilia Mirkin 
Date:   Wed Nov  9 17:17:19 2016 -0500

swr: [rasterizer memory] add support for R32_FLOAT_X8X24 formats

This is the format used for the primary surface of a
PIPE_FORMAT_Z32_FLOAT_S8X24_UINT resource.

Signed-off-by: Ilia Mirkin 
Reviewed-by: Bruce Cherniak 

---

 src/gallium/drivers/swr/rasterizer/memory/LoadTile.h  | 1 +
 src/gallium/drivers/swr/rasterizer/memory/StoreTile.h | 1 +
 2 files changed, 2 insertions(+)

diff --git a/src/gallium/drivers/swr/rasterizer/memory/LoadTile.h 
b/src/gallium/drivers/swr/rasterizer/memory/LoadTile.h
index 858f162..d1cc3ed 100644
--- a/src/gallium/drivers/swr/rasterizer/memory/LoadTile.h
+++ b/src/gallium/drivers/swr/rasterizer/memory/LoadTile.h
@@ -347,6 +347,7 @@ static INLINE void 
InitLoadTileDepthTable(PFN_LOAD_TILES(&table)[NUM_SWR_FORMATS
 memset(table, 0, sizeof(table));
 
table[R32_FLOAT]   = 
LoadMacroTile, R32_FLOAT, R32_FLOAT>::Load;
+   table[R32_FLOAT_X8X24_TYPELESS]= 
LoadMacroTile, R32_FLOAT_X8X24_TYPELESS, 
R32_FLOAT>::Load;
table[R24_UNORM_X8_TYPELESS]   = 
LoadMacroTile, R24_UNORM_X8_TYPELESS, 
R32_FLOAT>::Load;
table[R16_UNORM]   = 
LoadMacroTile, R16_UNORM, R32_FLOAT>::Load;
 }
diff --git a/src/gallium/drivers/swr/rasterizer/memory/StoreTile.h 
b/src/gallium/drivers/swr/rasterizer/memory/StoreTile.h
index 0c0b962..69e8784 100644
--- a/src/gallium/drivers/swr/rasterizer/memory/StoreTile.h
+++ b/src/gallium/drivers/swr/rasterizer/memory/StoreTile.h
@@ -2563,6 +2563,7 @@ void InitStoreTilesTableDepth(
 PFN_STORE_TILES(&table)[NumTileModes][ArraySizeT])
 {
table[TTileMode][R32_FLOAT]  = 
StoreMacroTile, R32_FLOAT, R32_FLOAT>::Store;
+   table[TTileMode][R32_FLOAT_X8X24_TYPELESS]   = 
StoreMacroTile, R32_FLOAT, 
R32_FLOAT_X8X24_TYPELESS>::Store;
table[TTileMode][R24_UNORM_X8_TYPELESS]  = 
StoreMacroTile, R32_FLOAT, 
R24_UNORM_X8_TYPELESS>::Store;
table[TTileMode][R16_UNORM]  = 
StoreMacroTile, R32_FLOAT, R16_UNORM>::Store;
 }

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): swr: disable blending for integer formats

2016-11-15 Thread Ilia Mirkin
Module: Mesa
Branch: master
Commit: 7caed50ff4224b0966bae7628cf99f8163cac4dc
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7caed50ff4224b0966bae7628cf99f8163cac4dc

Author: Ilia Mirkin 
Date:   Sat Nov 12 13:27:28 2016 -0500

swr: disable blending for integer formats

The EXT_texture_integer test says that blending and alphatest should
all be disabled. st/mesa takes care of alphatest already.

Fixes the ext_texture_integer-fbo-blending piglit test.

Signed-off-by: Ilia Mirkin 
Reviewed-by: Bruce Cherniak 

---

 src/gallium/drivers/swr/swr_state.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/gallium/drivers/swr/swr_state.cpp 
b/src/gallium/drivers/swr/swr_state.cpp
index 526d7e7..783afba 100644
--- a/src/gallium/drivers/swr/swr_state.cpp
+++ b/src/gallium/drivers/swr/swr_state.cpp
@@ -1318,6 +1318,9 @@ swr_update_derived(struct pipe_context *pipe,
compileState.blendState.logicOpEnable = false;
 }
 
+if (info.type[0] == SWR_TYPE_SINT || info.type[0] == SWR_TYPE_UINT)
+   compileState.blendState.blendEnable = false;
+
 if (compileState.blendState.blendEnable == false &&
 compileState.blendState.logicOpEnable == false &&
 ctx->depth_stencil->alpha.enabled == 0) {

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): swr: [rasterizer jitter] don' t bother quantizing unused channels

2016-11-15 Thread Ilia Mirkin
Module: Mesa
Branch: master
Commit: b53a33feef2595fc71fadafa5857d5482514a724
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b53a33feef2595fc71fadafa5857d5482514a724

Author: Ilia Mirkin 
Date:   Sat Nov 12 13:17:27 2016 -0500

swr: [rasterizer jitter] don't bother quantizing unused channels

In a BGR10X2 or BGR5X1 situation, there's no need to try to quantize the
X channel - the default will have the proper quantization required.

Signed-off-by: Ilia Mirkin 
Reviewed-by: Bruce Cherniak 

---

 src/gallium/drivers/swr/rasterizer/jitter/blend_jit.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/gallium/drivers/swr/rasterizer/jitter/blend_jit.cpp 
b/src/gallium/drivers/swr/rasterizer/jitter/blend_jit.cpp
index b5b21c0..ad809c4 100644
--- a/src/gallium/drivers/swr/rasterizer/jitter/blend_jit.cpp
+++ b/src/gallium/drivers/swr/rasterizer/jitter/blend_jit.cpp
@@ -220,7 +220,7 @@ struct BlendJit : public Builder
 const SWR_FORMAT_INFO& info = GetFormatInfo(format);
 for (uint32_t c = 0; c < info.numComps; ++c)
 {
-if (info.bpc[c] <= QUANTIZE_THRESHOLD)
+if (info.bpc[c] <= QUANTIZE_THRESHOLD && info.type[c] != 
SWR_TYPE_UNUSED)
 {
 uint32_t swizComp = info.swizzle[c];
 float factor = (float)((1 << info.bpc[c]) - 1);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radv: don't crash on null swapchain destroy.

2016-11-15 Thread Dave Airlie
Module: Mesa
Branch: master
Commit: 38ab625c5f5ca06b78af2892422a966dc659f8cd
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=38ab625c5f5ca06b78af2892422a966dc659f8cd

Author: Dave Airlie 
Date:   Tue Nov 15 20:11:51 2016 +

radv: don't crash on null swapchain destroy.

Just return if the passed in swapchain is NULL.

Fixes: dEQP-VK.wsi.xlib.swapchain.destroy.null_handle

Cc: "13.0" 
Signed-off-by: Dave Airlie 

---

 src/amd/vulkan/radv_wsi.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/amd/vulkan/radv_wsi.c b/src/amd/vulkan/radv_wsi.c
index a946bd4..1f1ab1c 100644
--- a/src/amd/vulkan/radv_wsi.c
+++ b/src/amd/vulkan/radv_wsi.c
@@ -288,6 +288,9 @@ void radv_DestroySwapchainKHR(
RADV_FROM_HANDLE(wsi_swapchain, swapchain, _swapchain);
const VkAllocationCallbacks *alloc;
 
+   if (!_swapchain)
+   return;
+
if (pAllocator)
alloc = pAllocator;
else

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): ac/nir/llvm: fix channel in texture gather lowering code.

2016-11-15 Thread Dave Airlie
Module: Mesa
Branch: master
Commit: 713522fb8d4366d29be18edc3d5f33faba1cb7c4
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=713522fb8d4366d29be18edc3d5f33faba1cb7c4

Author: Dave Airlie 
Date:   Tue Nov 15 07:30:09 2016 +

ac/nir/llvm: fix channel in texture gather lowering code.

This fixes a number of CTS tests like:
dEQP-VK.glsl.texture_gather.basic.2d.rgba8ui.size_npot.clamp_to_edge_repeat

Cc: "13.0" 
Signed-off-by: Dave Airlie 

---

 src/amd/common/ac_nir_to_llvm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
index aa2d488..5de1491 100644
--- a/src/amd/common/ac_nir_to_llvm.c
+++ b/src/amd/common/ac_nir_to_llvm.c
@@ -1759,7 +1759,7 @@ static LLVMValueRef radv_lower_gather4_integer(struct 
nir_to_llvm_context *ctx,
 
for (c = 0; c < 2; c++) {
half_texel[c] = LLVMBuildExtractElement(ctx->builder, 
size,
-   ctx->i32zero, 
"");
+   
LLVMConstInt(ctx->i32, c, false), "");
half_texel[c] = LLVMBuildUIToFP(ctx->builder, 
half_texel[c], ctx->f32, "");
half_texel[c] = emit_fdiv(ctx, ctx->f32one, 
half_texel[c]);
half_texel[c] = LLVMBuildFMul(ctx->builder, 
half_texel[c],

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): wsi: fix VK_INCOMPLETE for vkGetSwapchainImagesKHR

2016-11-15 Thread Dave Airlie
Module: Mesa
Branch: master
Commit: 253fa25d09b77e18f736b97da07d57be0e6c4200
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=253fa25d09b77e18f736b97da07d57be0e6c4200

Author: Dave Airlie 
Date:   Tue Nov 15 21:18:50 2016 +

wsi: fix VK_INCOMPLETE for vkGetSwapchainImagesKHR

This fixes the x11 and wayland backends to not assert:
dEQP-VK.wsi.xcb.swapchain.get_images.incomplete

Reviewed-by: Jason Ekstrand 
Cc: "13.0" 
Signed-off-by: Dave Airlie 

---

 src/vulkan/wsi/wsi_common_wayland.c | 16 +++-
 src/vulkan/wsi/wsi_common_x11.c | 16 +++-
 2 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/src/vulkan/wsi/wsi_common_wayland.c 
b/src/vulkan/wsi/wsi_common_wayland.c
index 7691744..f6c218b 100644
--- a/src/vulkan/wsi/wsi_common_wayland.c
+++ b/src/vulkan/wsi/wsi_common_wayland.c
@@ -498,19 +498,25 @@ wsi_wl_swapchain_get_images(struct wsi_swapchain 
*wsi_chain,
 uint32_t *pCount, VkImage *pSwapchainImages)
 {
struct wsi_wl_swapchain *chain = (struct wsi_wl_swapchain *)wsi_chain;
+   uint32_t ret_count;
+   VkResult result;
 
if (pSwapchainImages == NULL) {
   *pCount = chain->image_count;
   return VK_SUCCESS;
}
 
-   assert(chain->image_count <= *pCount);
-   for (uint32_t i = 0; i < chain->image_count; i++)
-  pSwapchainImages[i] = chain->images[i].image;
+   result = VK_SUCCESS;
+   ret_count = chain->image_count;
+   if (chain->image_count > *pCount) {
+ ret_count = *pCount;
+ result = VK_INCOMPLETE;
+   }
 
-   *pCount = chain->image_count;
+   for (uint32_t i = 0; i < ret_count; i++)
+  pSwapchainImages[i] = chain->images[i].image;
 
-   return VK_SUCCESS;
+   return result;
 }
 
 static VkResult
diff --git a/src/vulkan/wsi/wsi_common_x11.c b/src/vulkan/wsi/wsi_common_x11.c
index 137bc7f..8e0043f 100644
--- a/src/vulkan/wsi/wsi_common_x11.c
+++ b/src/vulkan/wsi/wsi_common_x11.c
@@ -509,19 +509,25 @@ x11_get_images(struct wsi_swapchain *anv_chain,
uint32_t* pCount, VkImage *pSwapchainImages)
 {
struct x11_swapchain *chain = (struct x11_swapchain *)anv_chain;
+   uint32_t ret_count;
+   VkResult result;
 
if (pSwapchainImages == NULL) {
   *pCount = chain->image_count;
   return VK_SUCCESS;
}
 
-   assert(chain->image_count <= *pCount);
-   for (uint32_t i = 0; i < chain->image_count; i++)
-  pSwapchainImages[i] = chain->images[i].image;
+   result = VK_SUCCESS;
+   ret_count = chain->image_count;
+   if (chain->image_count > *pCount) {
+ ret_count = *pCount;
+ result = VK_INCOMPLETE;
+   }
 
-   *pCount = chain->image_count;
+   for (uint32_t i = 0; i < ret_count; i++)
+  pSwapchainImages[i] = chain->images[i].image;
 
-   return VK_SUCCESS;
+   return result;
 }
 
 static VkResult

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): isl: Fix height calculation in isl_msaa_interleaved_scale_px_to_sa

2016-11-15 Thread Jordan Justen
Module: Mesa
Branch: master
Commit: 0ac57afa6fbe59e9fd8eef38365cb3da8ec67f95
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0ac57afa6fbe59e9fd8eef38365cb3da8ec67f95

Author: Jordan Justen 
Date:   Tue Nov 15 02:18:25 2016 -0800

isl: Fix height calculation in isl_msaa_interleaved_scale_px_to_sa

No known fixed tests, but it looks like a typo from:

commit 8ac99eabb6570f0f3c5f7d7da1332a99ce636362

intel/isl: Add a helper for getting the size of an interleaved pixel

Cc: "13.0" 
Signed-off-by: Jordan Justen 
Reviewed-by: Jason Ekstrand 

---

 src/intel/isl/isl.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/intel/isl/isl.c b/src/intel/isl/isl.c
index 7831c5e..32463b1 100644
--- a/src/intel/isl/isl.c
+++ b/src/intel/isl/isl.c
@@ -339,7 +339,7 @@ isl_msaa_interleaved_scale_px_to_sa(uint32_t samples,
if (width)
   *width = isl_align(*width, 2) * px_size_sa.width;
if (height)
-  *height = isl_align(*height, 2) * px_size_sa.width;
+  *height = isl_align(*height, 2) * px_size_sa.height;
 }
 
 static enum isl_array_pitch_span

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): amd: flatten amd/common makefile structure

2016-11-15 Thread Emil Velikov
Module: Mesa
Branch: master
Commit: 95ed2d9d2cf161ce63fe6a8b1694288634b6b65e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=95ed2d9d2cf161ce63fe6a8b1694288634b6b65e

Author: Mauro Rossi 
Date:   Sat Nov 12 22:10:44 2016 +0100

amd: flatten amd/common makefile structure

This pulls amd/common build rules into upper level makefile,
along with amd/addlib which is already there.

v2: [Emil Velikov]
 - Move NEED_RADEON_LLVM conditional, drop amd/common from SUBDIRS
 - Drop AM_ from common_libamd_common_la*

Signed-off-by: Emil Velikov 

---

 configure.ac   |  1 -
 src/Makefile.am|  4 ---
 src/amd/Makefile.am|  1 +
 src/amd/{common/Makefile.am => Makefile.common.am} | 20 +-
 src/amd/common/Makefile.sources| 31 --
 5 files changed, 14 insertions(+), 43 deletions(-)

diff --git a/configure.ac b/configure.ac
index b89bf23..5f30ae8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2685,7 +2685,6 @@ dnl Substitute the config
 AC_CONFIG_FILES([Makefile
src/Makefile
src/amd/Makefile
-   src/amd/common/Makefile
src/amd/vulkan/Makefile
src/compiler/Makefile
src/egl/Makefile
diff --git a/src/Makefile.am b/src/Makefile.am
index 630409c..ad54356 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -78,10 +78,6 @@ if HAVE_AMD_DRIVERS
 SUBDIRS += amd
 endif
 
-if NEED_RADEON_LLVM
-SUBDIRS += amd/common
-endif
-
 if HAVE_INTEL_DRIVERS
 SUBDIRS += intel
 endif
diff --git a/src/amd/Makefile.am b/src/amd/Makefile.am
index d01d435..1402ca5 100644
--- a/src/amd/Makefile.am
+++ b/src/amd/Makefile.am
@@ -25,3 +25,4 @@ noinst_LTLIBRARIES =
 
 EXTRA_DIST = $(COMMON_HEADER_FILES)
 include Makefile.addrlib.am
+include Makefile.common.am
diff --git a/src/amd/common/Makefile.am b/src/amd/Makefile.common.am
similarity index 82%
rename from src/amd/common/Makefile.am
rename to src/amd/Makefile.common.am
index bc269ab..7cda4fa 100644
--- a/src/amd/common/Makefile.am
+++ b/src/amd/Makefile.common.am
@@ -19,15 +19,18 @@
 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 # IN THE SOFTWARE.
 
-include Makefile.sources
+if NEED_RADEON_LLVM
+
+COMMON_LIBS = common/libamd_common.la
 
 # TODO cleanup these
-AM_CPPFLAGS = \
+common_libamd_common_la_CPPFLAGS = \
$(VALGRIND_CFLAGS) \
$(DEFINES) \
-I$(top_srcdir)/include \
-I$(top_builddir)/src \
-I$(top_srcdir)/src \
+   -I$(top_srcdir)/src/amd/common \
-I$(top_builddir)/src/compiler \
-I$(top_builddir)/src/compiler/nir \
-I$(top_srcdir)/src/compiler \
@@ -37,21 +40,24 @@ AM_CPPFLAGS = \
-I$(top_srcdir)/src/gallium/auxiliary \
-I$(top_srcdir)/src/gallium/include
 
-AM_CFLAGS = $(VISIBILITY_CFLAGS) \
+common_libamd_common_la_CFLAGS = \
+   $(VISIBILITY_CFLAGS) \
$(PTHREAD_CFLAGS) \
$(LLVM_CFLAGS) \
$(LIBELF_CFLAGS)
 
-AM_CXXFLAGS = \
+common_libamd_common_la_CXXFLAGS = \
$(VISIBILITY_CXXFLAGS) \
$(LLVM_CXXFLAGS)
 
-noinst_LTLIBRARIES = libamd_common.la
+noinst_LTLIBRARIES += $(COMMON_LIBS)
 
-libamd_common_la_SOURCES = $(AMD_COMPILER_SOURCES)
+common_libamd_common_la_SOURCES = $(AMD_COMPILER_SOURCES)
 
 # nir_to_llvm requires LLVM 3.9, which is only required as a minimum when
 # radv is built.
 if HAVE_RADEON_VULKAN
-libamd_common_la_SOURCES += $(AMD_NIR_SOURCES)
+common_libamd_common_la_SOURCES += $(AMD_NIR_SOURCES)
+endif
+
 endif
diff --git a/src/amd/common/Makefile.sources b/src/amd/common/Makefile.sources
deleted file mode 100644
index 0aff73b..000
--- a/src/amd/common/Makefile.sources
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright © 2016 Bas Nieuwenhuizen
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-# IN THE SOFTWARE.
-
-AMD_COMPILER_SOURCES := \
-   ac_binar

Mesa (master): amd: automake: android: rename sources lists to foo_FILES

2016-11-15 Thread Emil Velikov
Module: Mesa
Branch: master
Commit: 75a39cca8d046749b216046ef5651dda5c451635
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=75a39cca8d046749b216046ef5651dda5c451635

Author: Emil Velikov 
Date:   Tue Nov 15 19:36:33 2016 +

amd: automake: android: rename sources lists to foo_FILES

Autotools goes smart on us warning that foo_SOURCES variable is present
yet a target with name foo is missing. Rename things (like we do
throughout the build) to silence the warnings.

Signed-off-by: Emil Velikov 

---

 src/amd/Android.common.mk  | 2 +-
 src/amd/Makefile.common.am | 4 ++--
 src/amd/Makefile.sources   | 4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/amd/Android.common.mk b/src/amd/Android.common.mk
index 49f8943..df65c24 100644
--- a/src/amd/Android.common.mk
+++ b/src/amd/Android.common.mk
@@ -28,7 +28,7 @@ include $(CLEAR_VARS)
 
 LOCAL_MODULE := libmesa_amd_common
 
-LOCAL_SRC_FILES := $(AMD_COMPILER_SOURCES)
+LOCAL_SRC_FILES := $(AMD_COMPILER_FILES)
 
 LOCAL_C_INCLUDES := \
$(MESA_TOP)/include \
diff --git a/src/amd/Makefile.common.am b/src/amd/Makefile.common.am
index 7cda4fa..1a36e48 100644
--- a/src/amd/Makefile.common.am
+++ b/src/amd/Makefile.common.am
@@ -52,12 +52,12 @@ common_libamd_common_la_CXXFLAGS = \
 
 noinst_LTLIBRARIES += $(COMMON_LIBS)
 
-common_libamd_common_la_SOURCES = $(AMD_COMPILER_SOURCES)
+common_libamd_common_la_SOURCES = $(AMD_COMPILER_FILES)
 
 # nir_to_llvm requires LLVM 3.9, which is only required as a minimum when
 # radv is built.
 if HAVE_RADEON_VULKAN
-common_libamd_common_la_SOURCES += $(AMD_NIR_SOURCES)
+common_libamd_common_la_SOURCES += $(AMD_NIR_FILES)
 endif
 
 endif
diff --git a/src/amd/Makefile.sources b/src/amd/Makefile.sources
index 5cbefa3..122ef71 100644
--- a/src/amd/Makefile.sources
+++ b/src/amd/Makefile.sources
@@ -26,13 +26,13 @@ ADDRLIB_FILES = \
addrlib/r800/siaddrlib.cpp \
addrlib/r800/siaddrlib.h
 
-AMD_COMPILER_SOURCES = \
+AMD_COMPILER_FILES = \
common/ac_binary.c \
common/ac_binary.h \
common/ac_llvm_helper.cpp \
common/ac_llvm_util.c \
common/ac_llvm_util.h
 
-AMD_NIR_SOURCES = \
+AMD_NIR_FILES = \
common/ac_nir_to_llvm.c \
common/ac_nir_to_llvm.h

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): glsl/lower_if: conditionally lower if-branches based on their size

2016-11-15 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: e33440070a54cd3e67953ee8410c0edb62643c47
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e33440070a54cd3e67953ee8410c0edb62643c47

Author: Marek Olšák 
Date:   Sun Jul  3 17:11:07 2016 +0200

glsl/lower_if: conditionally lower if-branches based on their size

Reviewed-by: Nicolai Hähnle 

---

 src/compiler/glsl/ir_optimization.h   |  2 +-
 src/compiler/glsl/lower_if_to_cond_assign.cpp | 55 ---
 2 files changed, 50 insertions(+), 7 deletions(-)

diff --git a/src/compiler/glsl/ir_optimization.h 
b/src/compiler/glsl/ir_optimization.h
index e6e8318..0d6c4e6 100644
--- a/src/compiler/glsl/ir_optimization.h
+++ b/src/compiler/glsl/ir_optimization.h
@@ -109,7 +109,7 @@ bool do_if_simplification(exec_list *instructions);
 bool opt_flatten_nested_if_blocks(exec_list *instructions);
 bool do_discard_simplification(exec_list *instructions);
 bool lower_if_to_cond_assign(gl_shader_stage stage, exec_list *instructions,
- unsigned max_depth = 0);
+ unsigned max_depth = 0, unsigned min_branch_cost 
= 0);
 bool do_mat_op_to_vec(exec_list *instructions);
 bool do_minmax_prune(exec_list *instructions);
 bool do_noop_swizzle(exec_list *instructions);
diff --git a/src/compiler/glsl/lower_if_to_cond_assign.cpp 
b/src/compiler/glsl/lower_if_to_cond_assign.cpp
index e8db7aa..ae048be 100644
--- a/src/compiler/glsl/lower_if_to_cond_assign.cpp
+++ b/src/compiler/glsl/lower_if_to_cond_assign.cpp
@@ -24,8 +24,14 @@
 /**
  * \file lower_if_to_cond_assign.cpp
  *
- * This attempts to flatten if-statements to conditional assignments for
- * GPUs with limited or no flow control support.
+ * This flattens if-statements to conditional assignments if:
+ *
+ * - the GPU has limited or no flow control support
+ *   (controlled by max_depth)
+ *
+ * - small conditional branches are more expensive than conditional assignments
+ *   (controlled by min_branch_cost, that's the cost for a branch to be
+ *preserved)
  *
  * It can't handle other control flow being inside of its block, such
  * as calls or loops.  Hopefully loop unrolling and inlining will take
@@ -49,17 +55,20 @@
 #include "ir.h"
 #include "util/set.h"
 #include "util/hash_table.h" /* Needed for the hashing functions */
+#include "main/macros.h" /* for MAX2 */
 
 namespace {
 
 class ir_if_to_cond_assign_visitor : public ir_hierarchical_visitor {
 public:
ir_if_to_cond_assign_visitor(gl_shader_stage stage,
-unsigned max_depth)
+unsigned max_depth,
+unsigned min_branch_cost)
{
   this->progress = false;
   this->stage = stage;
   this->max_depth = max_depth;
+  this->min_branch_cost = min_branch_cost;
   this->depth = 0;
 
   this->condition_variables =
@@ -76,8 +85,13 @@ public:
ir_visitor_status visit_leave(ir_if *);
 
bool found_unsupported_op;
+   bool found_expensive_op;
+   bool is_then;
bool progress;
gl_shader_stage stage;
+   unsigned then_cost;
+   unsigned else_cost;
+   unsigned min_branch_cost;
unsigned max_depth;
unsigned depth;
 
@@ -88,12 +102,12 @@ public:
 
 bool
 lower_if_to_cond_assign(gl_shader_stage stage, exec_list *instructions,
-unsigned max_depth)
+unsigned max_depth, unsigned min_branch_cost)
 {
if (max_depth == UINT_MAX)
   return false;
 
-   ir_if_to_cond_assign_visitor v(stage, max_depth);
+   ir_if_to_cond_assign_visitor v(stage, max_depth, min_branch_cost);
 
visit_list_elements(&v, instructions);
 
@@ -129,6 +143,20 @@ check_ir_node(ir_instruction *ir, void *data)
   break;
}
 
+   /* SSBO, images, atomic counters are handled by ir_type_call */
+   case ir_type_texture:
+  v->found_expensive_op = true;
+  break;
+
+   case ir_type_expression:
+   case ir_type_dereference_array:
+   case ir_type_dereference_record:
+  if (v->is_then)
+ v->then_cost++;
+  else
+ v->else_cost++;
+  break;
+
default:
   break;
}
@@ -193,24 +221,39 @@ ir_if_to_cond_assign_visitor::visit_enter(ir_if *ir)
 ir_visitor_status
 ir_if_to_cond_assign_visitor::visit_leave(ir_if *ir)
 {
+   bool must_lower = this->depth-- > this->max_depth;
+
/* Only flatten when beyond the GPU's maximum supported nesting depth. */
-   if (this->depth-- <= this->max_depth)
+   if (!must_lower && this->min_branch_cost == 0)
   return visit_continue;
 
this->found_unsupported_op = false;
+   this->found_expensive_op = false;
+   this->then_cost = 0;
+   this->else_cost = 0;
 
ir_assignment *assign;
 
/* Check that both blocks don't contain anything we can't support. */
+   this->is_then = true;
foreach_in_list(ir_instruction, then_ir, &ir->then_instructions) {
   visit_tree(then_ir, check_ir_node, this);
}
+
+   this->is_then = false;
foreach_in_list(ir_instruction

Mesa (master): glsl_to_tgsi: lower small branches based on the CAP

2016-11-15 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: 537b897f51690aa11089bec0d82e89ca712b1469
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=537b897f51690aa11089bec0d82e89ca712b1469

Author: Marek Olšák 
Date:   Fri Oct 28 22:37:33 2016 +0200

glsl_to_tgsi: lower small branches based on the CAP

Reviewed-by: Nicolai Hähnle 

---

 src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp 
b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
index 64a68e0..7f19839 100644
--- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
@@ -6783,6 +6783,8 @@ st_link_shader(struct gl_context *ctx, struct 
gl_shader_program *prog)

PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED);
   bool have_dfrexp = pscreen->get_shader_param(pscreen, ptarget,

PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED);
+  unsigned if_threshold = pscreen->get_shader_param(pscreen, ptarget,
+
PIPE_SHADER_CAP_LOWER_IF_THRESHOLD);
 
   /* If there are forms of indirect addressing that the driver
* cannot handle, perform the lowering pass.
@@ -6865,7 +6867,8 @@ st_link_shader(struct gl_context *ctx, struct 
gl_shader_program *prog)
|| progress;
 
  progress = lower_if_to_cond_assign((gl_shader_stage)i, ir,
-options->MaxIfDepth) || progress;
+options->MaxIfDepth, if_threshold) 
||
+progress;
 
   } while (progress);
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeonsi: set IF_THRESHOLD to 3

2016-11-15 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: 74e39de9324d2d2333cda6adca50ae2a3fc36de2
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=74e39de9324d2d2333cda6adca50ae2a3fc36de2

Author: Marek Olšák 
Date:   Fri Oct 28 23:08:50 2016 +0200

radeonsi: set IF_THRESHOLD to 3

Piglit regressions (radeonsi or LLVM bugs, they pass on softpipe):
- glsl-1.10/execution/variable-indexing/vs-output-array-vec3-index-wr
- glsl-1.10/execution/variable-indexing/vs-output-array-vec4-index-wr
- glsl-110/execution/variable-indexing/vs-temp-array-mat2-index-col-row-wr
- glsl-110/execution/variable-indexing/vs-temp-array-mat2-index-row-wr

Totals:
SGPRS: 1132185 -> 1168801 (3.23 %)
VGPRS: 907856 -> 906204 (-0.18 %)
Spilled SGPRs: 2011 -> 2425 (20.59 %)
Spilled VGPRs: 368 -> 96 (-73.91 %)
Scratch VGPRs: 1344 -> 1060 (-21.13 %) dwords per thread
Code Size: 35916164 -> 35705372 (-0.59 %) bytes
LDS: 767 -> 767 (0.00 %) blocks
Max Waves: 194010 -> 194921 (0.47 %)
Wait states: 0 -> 0 (0.00 %)

Before:
 VGPR SPILLING APPS   Shaders SpillVGPR ScratchVGPR
 alien_isolation 29383840
 bioshock-infinite   1769   245   732
 dirt-showdown5488572
 f1-2015  776 0   320
 ue4_lightroom_inter.. 74 0   180

After:
 VGPR SPILLING APPS   Shaders SpillVGPR ScratchVGPR
 alien_isolation 29383840
 bioshock-infinite   1769 0   480
 dirt-showdown5485840
 f1-2015  776 0   320
 ue4_lightroom_inter.. 74 0   180

Bioshock and DiRT benefit.

If I set IF_THRESHOLD=4, tesseract starts spilling VGPRs

Reviewed-by: Nicolai Hähnle 

---

 src/gallium/drivers/radeonsi/si_pipe.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/radeonsi/si_pipe.c 
b/src/gallium/drivers/radeonsi/si_pipe.c
index 146128d..6be676d 100644
--- a/src/gallium/drivers/radeonsi/si_pipe.c
+++ b/src/gallium/drivers/radeonsi/si_pipe.c
@@ -632,6 +632,8 @@ static int si_get_shader_param(struct pipe_screen* pscreen, 
unsigned shader, enu
return 32;
case PIPE_SHADER_CAP_PREFERRED_IR:
return PIPE_SHADER_IR_TGSI;
+   case PIPE_SHADER_CAP_LOWER_IF_THRESHOLD:
+   return 3;
 
/* Supported boolean features. */
case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
@@ -659,7 +661,6 @@ static int si_get_shader_param(struct pipe_screen* pscreen, 
unsigned shader, enu
case PIPE_SHADER_CAP_SUPPORTED_IRS:
case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED:
case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED:
-   case PIPE_SHADER_CAP_LOWER_IF_THRESHOLD:
return 0;
}
return 0;

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): glsl/lower_if: check more node types in check_control_flow -> check_ir_node

2016-11-15 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: 654e9466b5304b040374e72c9e9a524bd1268362
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=654e9466b5304b040374e72c9e9a524bd1268362

Author: Marek Olšák 
Date:   Sun Jul  3 15:03:54 2016 +0200

glsl/lower_if: check more node types in check_control_flow -> check_ir_node

Reviewed-by: Nicolai Hähnle 

---

 src/compiler/glsl/lower_if_to_cond_assign.cpp | 9 ++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/compiler/glsl/lower_if_to_cond_assign.cpp 
b/src/compiler/glsl/lower_if_to_cond_assign.cpp
index 2875e79..01a7335 100644
--- a/src/compiler/glsl/lower_if_to_cond_assign.cpp
+++ b/src/compiler/glsl/lower_if_to_cond_assign.cpp
@@ -97,7 +97,7 @@ lower_if_to_cond_assign(exec_list *instructions, unsigned 
max_depth)
 }
 
 void
-check_control_flow(ir_instruction *ir, void *data)
+check_ir_node(ir_instruction *ir, void *data)
 {
ir_if_to_cond_assign_visitor *v = (ir_if_to_cond_assign_visitor *)data;
 
@@ -107,6 +107,9 @@ check_control_flow(ir_instruction *ir, void *data)
case ir_type_loop:
case ir_type_loop_jump:
case ir_type_return:
+   case ir_type_emit_vertex:
+   case ir_type_end_primitive:
+   case ir_type_barrier:
   v->found_unsupported_op = true;
   break;
default:
@@ -183,10 +186,10 @@ ir_if_to_cond_assign_visitor::visit_leave(ir_if *ir)
 
/* Check that both blocks don't contain anything we can't support. */
foreach_in_list(ir_instruction, then_ir, &ir->then_instructions) {
-  visit_tree(then_ir, check_control_flow, this);
+  visit_tree(then_ir, check_ir_node, this);
}
foreach_in_list(ir_instruction, else_ir, &ir->else_instructions) {
-  visit_tree(else_ir, check_control_flow, this);
+  visit_tree(else_ir, check_ir_node, this);
}
if (this->found_unsupported_op)
   return visit_continue; /* can't handle inner unsupported opcodes */

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): glsl/lower_if: don' t lower branches touching tess control outputs

2016-11-15 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: 83d9b8a6f6365bc1569cdc847672478ac643670d
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=83d9b8a6f6365bc1569cdc847672478ac643670d

Author: Marek Olšák 
Date:   Sun Jul  3 17:01:09 2016 +0200

glsl/lower_if: don't lower branches touching tess control outputs

Reviewed-by: Nicolai Hähnle 

---

 src/compiler/glsl/ir_optimization.h   |  3 ++-
 src/compiler/glsl/lower_if_to_cond_assign.cpp | 23 ---
 src/compiler/glsl/test_optpass.cpp|  2 +-
 src/mesa/drivers/dri/i965/brw_link.cpp|  2 +-
 src/mesa/program/ir_to_mesa.cpp   |  3 ++-
 src/mesa/state_tracker/st_glsl_to_tgsi.cpp|  3 ++-
 6 files changed, 28 insertions(+), 8 deletions(-)

diff --git a/src/compiler/glsl/ir_optimization.h 
b/src/compiler/glsl/ir_optimization.h
index 8cee418..e6e8318 100644
--- a/src/compiler/glsl/ir_optimization.h
+++ b/src/compiler/glsl/ir_optimization.h
@@ -108,7 +108,8 @@ bool do_lower_texture_projection(exec_list *instructions);
 bool do_if_simplification(exec_list *instructions);
 bool opt_flatten_nested_if_blocks(exec_list *instructions);
 bool do_discard_simplification(exec_list *instructions);
-bool lower_if_to_cond_assign(exec_list *instructions, unsigned max_depth = 0);
+bool lower_if_to_cond_assign(gl_shader_stage stage, exec_list *instructions,
+ unsigned max_depth = 0);
 bool do_mat_op_to_vec(exec_list *instructions);
 bool do_minmax_prune(exec_list *instructions);
 bool do_noop_swizzle(exec_list *instructions);
diff --git a/src/compiler/glsl/lower_if_to_cond_assign.cpp 
b/src/compiler/glsl/lower_if_to_cond_assign.cpp
index 01a7335..e8db7aa 100644
--- a/src/compiler/glsl/lower_if_to_cond_assign.cpp
+++ b/src/compiler/glsl/lower_if_to_cond_assign.cpp
@@ -54,9 +54,11 @@ namespace {
 
 class ir_if_to_cond_assign_visitor : public ir_hierarchical_visitor {
 public:
-   ir_if_to_cond_assign_visitor(unsigned max_depth)
+   ir_if_to_cond_assign_visitor(gl_shader_stage stage,
+unsigned max_depth)
{
   this->progress = false;
+  this->stage = stage;
   this->max_depth = max_depth;
   this->depth = 0;
 
@@ -75,6 +77,7 @@ public:
 
bool found_unsupported_op;
bool progress;
+   gl_shader_stage stage;
unsigned max_depth;
unsigned depth;
 
@@ -84,12 +87,13 @@ public:
 } /* anonymous namespace */
 
 bool
-lower_if_to_cond_assign(exec_list *instructions, unsigned max_depth)
+lower_if_to_cond_assign(gl_shader_stage stage, exec_list *instructions,
+unsigned max_depth)
 {
if (max_depth == UINT_MAX)
   return false;
 
-   ir_if_to_cond_assign_visitor v(max_depth);
+   ir_if_to_cond_assign_visitor v(stage, max_depth);
 
visit_list_elements(&v, instructions);
 
@@ -112,6 +116,19 @@ check_ir_node(ir_instruction *ir, void *data)
case ir_type_barrier:
   v->found_unsupported_op = true;
   break;
+
+   case ir_type_dereference_variable: {
+  ir_variable *var = ir->as_dereference_variable()->variable_referenced();
+
+  /* Lowering branches with TCS output accesses breaks many piglit tests,
+   * so don't touch them for now.
+   */
+  if (v->stage == MESA_SHADER_TESS_CTRL &&
+  var->data.mode == ir_var_shader_out)
+ v->found_unsupported_op = true;
+  break;
+   }
+
default:
   break;
}
diff --git a/src/compiler/glsl/test_optpass.cpp 
b/src/compiler/glsl/test_optpass.cpp
index 852af19..4d0bcc2 100644
--- a/src/compiler/glsl/test_optpass.cpp
+++ b/src/compiler/glsl/test_optpass.cpp
@@ -99,7 +99,7 @@ do_optimization(struct exec_list *ir, const char 
*optimization,
   return do_if_simplification(ir);
} else if (sscanf(optimization, "lower_if_to_cond_assign ( %d ) ",
  &int_0) == 1) {
-  return lower_if_to_cond_assign(ir, int_0);
+  return lower_if_to_cond_assign(MESA_SHADER_VERTEX, ir, int_0);
} else if (strcmp(optimization, "do_mat_op_to_vec") == 0) {
   return do_mat_op_to_vec(ir);
} else if (strcmp(optimization, "do_noop_swizzle") == 0) {
diff --git a/src/mesa/drivers/dri/i965/brw_link.cpp 
b/src/mesa/drivers/dri/i965/brw_link.cpp
index 12db8d4..57baea3 100644
--- a/src/mesa/drivers/dri/i965/brw_link.cpp
+++ b/src/mesa/drivers/dri/i965/brw_link.cpp
@@ -125,7 +125,7 @@ process_glsl_ir(struct brw_context *brw,
 * if-statements need to be flattened.
 */
if (brw->gen < 6)
-  lower_if_to_cond_assign(shader->ir, 16);
+  lower_if_to_cond_assign(shader->Stage, shader->ir, 16);
 
do_lower_texture_projection(shader->ir);
brw_lower_texture_gradients(brw, shader->ir);
diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp
index 6a1a977..c22eb0a 100644
--- a/src/mesa/program/ir_to_mesa.cpp
+++ b/src/mesa/program/ir_to_mesa.cpp
@@ -2995,7 +2995,8 @@ _mesa_ir_link_shader(struct gl_context *ctx, struct 
gl_shader_program *prog)
 if (options->MaxIfDepth == 0)
   

Mesa (master): glsl/lower_if: move and rename found_control_flow

2016-11-15 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: 68f35005ed9b4ccda2179bff86a511f20cd34f1b
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=68f35005ed9b4ccda2179bff86a511f20cd34f1b

Author: Marek Olšák 
Date:   Sun Jul  3 14:57:20 2016 +0200

glsl/lower_if: move and rename found_control_flow

I'll want to update more variables in check_control_flow, so using
the visitor is convenient.

Reviewed-by: Nicolai Hähnle 

---

 src/compiler/glsl/lower_if_to_cond_assign.cpp | 17 ++---
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/compiler/glsl/lower_if_to_cond_assign.cpp 
b/src/compiler/glsl/lower_if_to_cond_assign.cpp
index a948466..2875e79 100644
--- a/src/compiler/glsl/lower_if_to_cond_assign.cpp
+++ b/src/compiler/glsl/lower_if_to_cond_assign.cpp
@@ -73,6 +73,7 @@ public:
ir_visitor_status visit_enter(ir_if *);
ir_visitor_status visit_leave(ir_if *);
 
+   bool found_unsupported_op;
bool progress;
unsigned max_depth;
unsigned depth;
@@ -98,14 +99,15 @@ lower_if_to_cond_assign(exec_list *instructions, unsigned 
max_depth)
 void
 check_control_flow(ir_instruction *ir, void *data)
 {
-   bool *found_control_flow = (bool *)data;
+   ir_if_to_cond_assign_visitor *v = (ir_if_to_cond_assign_visitor *)data;
+
switch (ir->ir_type) {
case ir_type_call:
case ir_type_discard:
case ir_type_loop:
case ir_type_loop_jump:
case ir_type_return:
-  *found_control_flow = true;
+  v->found_unsupported_op = true;
   break;
default:
   break;
@@ -175,18 +177,19 @@ ir_if_to_cond_assign_visitor::visit_leave(ir_if *ir)
if (this->depth-- <= this->max_depth)
   return visit_continue;
 
-   bool found_control_flow = false;
+   this->found_unsupported_op = false;
+
ir_assignment *assign;
 
/* Check that both blocks don't contain anything we can't support. */
foreach_in_list(ir_instruction, then_ir, &ir->then_instructions) {
-  visit_tree(then_ir, check_control_flow, &found_control_flow);
+  visit_tree(then_ir, check_control_flow, this);
}
foreach_in_list(ir_instruction, else_ir, &ir->else_instructions) {
-  visit_tree(else_ir, check_control_flow, &found_control_flow);
+  visit_tree(else_ir, check_control_flow, this);
}
-   if (found_control_flow)
-  return visit_continue;
+   if (this->found_unsupported_op)
+  return visit_continue; /* can't handle inner unsupported opcodes */
 
void *mem_ctx = ralloc_parent(ir);
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): gallium: add PIPE_SHADER_CAP_LOWER_IF_THRESHOLD

2016-11-15 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: 72217d433599041f28bc30bb8e184647e7679e39
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=72217d433599041f28bc30bb8e184647e7679e39

Author: Marek Olšák 
Date:   Fri Oct 28 22:34:20 2016 +0200

gallium: add PIPE_SHADER_CAP_LOWER_IF_THRESHOLD

Reviewed-by: Nicolai Hähnle 

---

 src/gallium/auxiliary/gallivm/lp_bld_limits.h| 1 +
 src/gallium/auxiliary/tgsi/tgsi_exec.h   | 1 +
 src/gallium/docs/source/screen.rst   | 4 
 src/gallium/drivers/freedreno/freedreno_screen.c | 1 +
 src/gallium/drivers/nouveau/nv30/nv30_screen.c   | 2 ++
 src/gallium/drivers/nouveau/nv50/nv50_screen.c   | 1 +
 src/gallium/drivers/nouveau/nvc0/nvc0_screen.c   | 1 +
 src/gallium/drivers/r300/r300_screen.c   | 2 ++
 src/gallium/drivers/r600/r600_pipe.c | 1 +
 src/gallium/drivers/radeonsi/si_pipe.c   | 1 +
 src/gallium/drivers/svga/svga_screen.c   | 3 +++
 src/gallium/drivers/vc4/vc4_screen.c | 1 +
 src/gallium/drivers/virgl/virgl_screen.c | 1 +
 src/gallium/include/pipe/p_defines.h | 1 +
 14 files changed, 21 insertions(+)

diff --git a/src/gallium/auxiliary/gallivm/lp_bld_limits.h 
b/src/gallium/auxiliary/gallivm/lp_bld_limits.h
index 32addec..d0a5afd 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_limits.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_limits.h
@@ -140,6 +140,7 @@ gallivm_get_shader_param(enum pipe_shader_cap param)
case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED:
case PIPE_SHADER_CAP_MAX_SHADER_BUFFERS:
case PIPE_SHADER_CAP_MAX_SHADER_IMAGES:
+   case PIPE_SHADER_CAP_LOWER_IF_THRESHOLD:
   return 0;
case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT:
   return 32;
diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.h 
b/src/gallium/auxiliary/tgsi/tgsi_exec.h
index 9343d78..489b725 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_exec.h
+++ b/src/gallium/auxiliary/tgsi/tgsi_exec.h
@@ -534,6 +534,7 @@ tgsi_exec_get_shader_param(enum pipe_shader_cap param)
   return 1;
case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED:
case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED:
+   case PIPE_SHADER_CAP_LOWER_IF_THRESHOLD:
   return 0;
case PIPE_SHADER_CAP_MAX_SHADER_BUFFERS:
   return PIPE_MAX_SHADER_BUFFERS;
diff --git a/src/gallium/docs/source/screen.rst 
b/src/gallium/docs/source/screen.rst
index 6ad2bec..33f233a 100644
--- a/src/gallium/docs/source/screen.rst
+++ b/src/gallium/docs/source/screen.rst
@@ -463,6 +463,10 @@ to be 0.
 * ``PIPE_SHADER_CAP_SUPPORTED_IRS``: Supported representations of the
   program.  It should be a mask of ``pipe_shader_ir`` bits.
 * ``PIPE_SHADER_CAP_MAX_SHADER_IMAGES``: Maximum number of image units.
+* ``PIPE_SHADER_CAP_LOWER_IF_THRESHOLD``: IF and ELSE branches with a lower
+  cost than this value should be lowered by the state tracker for better
+  performance. This is a tunable for the GLSL compiler and the behavior is
+  specific to the compiler.
 
 
 .. _pipe_compute_cap:
diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c 
b/src/gallium/drivers/freedreno/freedreno_screen.c
index 97da0d7..4fe9a36 100644
--- a/src/gallium/drivers/freedreno/freedreno_screen.c
+++ b/src/gallium/drivers/freedreno/freedreno_screen.c
@@ -499,6 +499,7 @@ fd_screen_get_shader_param(struct pipe_screen *pscreen, 
unsigned shader,
return 32;
case PIPE_SHADER_CAP_MAX_SHADER_BUFFERS:
case PIPE_SHADER_CAP_MAX_SHADER_IMAGES:
+   case PIPE_SHADER_CAP_LOWER_IF_THRESHOLD:
return 0;
}
debug_printf("unknown shader param %d\n", param);
diff --git a/src/gallium/drivers/nouveau/nv30/nv30_screen.c 
b/src/gallium/drivers/nouveau/nv30/nv30_screen.c
index 96708c0..126c207 100644
--- a/src/gallium/drivers/nouveau/nv30/nv30_screen.c
+++ b/src/gallium/drivers/nouveau/nv30/nv30_screen.c
@@ -300,6 +300,7 @@ nv30_screen_get_shader_param(struct pipe_screen *pscreen, 
unsigned shader,
   case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE:
   case PIPE_SHADER_CAP_MAX_SHADER_BUFFERS:
   case PIPE_SHADER_CAP_MAX_SHADER_IMAGES:
+  case PIPE_SHADER_CAP_LOWER_IF_THRESHOLD:
  return 0;
   default:
  debug_printf("unknown vertex shader param %d\n", param);
@@ -348,6 +349,7 @@ nv30_screen_get_shader_param(struct pipe_screen *pscreen, 
unsigned shader,
   case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE:
   case PIPE_SHADER_CAP_MAX_SHADER_BUFFERS:
   case PIPE_SHADER_CAP_MAX_SHADER_IMAGES:
+  case PIPE_SHADER_CAP_LOWER_IF_THRESHOLD:
  return 0;
   default:
  debug_printf("unknown fragment shader param %d\n", param);
diff --git a/src/gallium/drivers/nouveau/nv50/nv50_screen.c 
b/src/gallium/drivers/nouveau/nv50/nv50_screen.c
index 50cdeda..4cf4d2a 100644
--- a/src/gallium/drivers/nouveau/nv50/nv50_screen.c
+++ b/src/gallium/drivers/nouveau/nv50/nv50_screen.c
@@ -345,6 +345,7 @@ nv50_screen_get_shader_param(struct pipe_screen *pscreen, 
unsigned shader,
cas

Mesa (master): util/disk_cache: use unambiguous naming

2016-11-15 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: a6ff2a3378636f4a261ea32c3dc870b0aeae3c03
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=a6ff2a3378636f4a261ea32c3dc870b0aeae3c03

Author: Marek Olšák 
Date:   Sun Nov 13 16:54:38 2016 +0100

util/disk_cache: use unambiguous naming

Reviewed-by: Emil Velikov 

---

 src/compiler/glsl/tests/cache_test.c | 140 +--
 src/util/disk_cache.c|  30 
 src/util/disk_cache.h|  56 +++---
 3 files changed, 114 insertions(+), 112 deletions(-)

diff --git a/src/compiler/glsl/tests/cache_test.c 
b/src/compiler/glsl/tests/cache_test.c
index 94a3c1d..ca22605 100644
--- a/src/compiler/glsl/tests/cache_test.c
+++ b/src/compiler/glsl/tests/cache_test.c
@@ -115,65 +115,65 @@ rmrf_local(const char *path)
 #define CACHE_TEST_TMP "./cache-test-tmp"
 
 static void
-test_cache_create(void)
+test_disk_cache_create(void)
 {
-   struct program_cache *cache;
+   struct disk_cache *cache;
int err;
 
/* Before doing anything else, ensure that with
-* MESA_GLSL_CACHE_DISABLE set, that cache_create returns NULL.
+* MESA_GLSL_CACHE_DISABLE set, that disk_cache_create returns NULL.
 */
setenv("MESA_GLSL_CACHE_DISABLE", "1", 1);
-   cache = cache_create();
-   expect_null(cache, "cache_create with MESA_GLSL_CACHE_DISABLE set");
+   cache = disk_cache_create();
+   expect_null(cache, "disk_cache_create with MESA_GLSL_CACHE_DISABLE set");
 
unsetenv("MESA_GLSL_CACHE_DISABLE");
 
-   /* For the first real cache_create() clear these environment
+   /* For the first real disk_cache_create() clear these environment
 * variables to test creation of cache in home directory.
 */
unsetenv("MESA_GLSL_CACHE_DIR");
unsetenv("XDG_CACHE_HOME");
 
-   cache = cache_create();
-   expect_non_null(cache, "cache_create with no environment variables");
+   cache = disk_cache_create();
+   expect_non_null(cache, "disk_cache_create with no environment variables");
 
-   cache_destroy(cache);
+   disk_cache_destroy(cache);
 
/* Test with XDG_CACHE_HOME set */
setenv("XDG_CACHE_HOME", CACHE_TEST_TMP "/xdg-cache-home", 1);
-   cache = cache_create();
-   expect_null(cache, "cache_create with XDG_CACHE_HOME set with"
+   cache = disk_cache_create();
+   expect_null(cache, "disk_cache_create with XDG_CACHE_HOME set with"
"a non-existing parent directory");
 
mkdir(CACHE_TEST_TMP, 0755);
-   cache = cache_create();
-   expect_non_null(cache, "cache_create with XDG_CACHE_HOME set");
+   cache = disk_cache_create();
+   expect_non_null(cache, "disk_cache_create with XDG_CACHE_HOME set");
 
-   cache_destroy(cache);
+   disk_cache_destroy(cache);
 
/* Test with MESA_GLSL_CACHE_DIR set */
err = rmrf_local(CACHE_TEST_TMP);
expect_equal(err, 0, "Removing " CACHE_TEST_TMP);
 
setenv("MESA_GLSL_CACHE_DIR", CACHE_TEST_TMP "/mesa-glsl-cache-dir", 1);
-   cache = cache_create();
-   expect_null(cache, "cache_create with MESA_GLSL_CACHE_DIR set with"
+   cache = disk_cache_create();
+   expect_null(cache, "disk_cache_create with MESA_GLSL_CACHE_DIR set with"
"a non-existing parent directory");
 
mkdir(CACHE_TEST_TMP, 0755);
-   cache = cache_create();
-   expect_non_null(cache, "cache_create with MESA_GLSL_CACHE_DIR set");
+   cache = disk_cache_create();
+   expect_non_null(cache, "disk_cache_create with MESA_GLSL_CACHE_DIR set");
 
-   cache_destroy(cache);
+   disk_cache_destroy(cache);
 }
 
 static bool
-does_cache_contain(struct program_cache *cache, cache_key key)
+does_cache_contain(struct disk_cache *cache, cache_key key)
 {
void *result;
 
-   result = cache_get(cache, key, NULL);
+   result = disk_cache_get(cache, key, NULL);
 
if (result) {
   free(result);
@@ -186,7 +186,7 @@ does_cache_contain(struct program_cache *cache, cache_key 
key)
 static void
 test_put_and_get(void)
 {
-   struct program_cache *cache;
+   struct disk_cache *cache;
/* If the text of this blob is changed, then blob_key_byte_zero
 * also needs to be updated.
 */
@@ -201,39 +201,39 @@ test_put_and_get(void)
uint8_t one_KB_key[20], one_MB_key[20];
int count;
 
-   cache = cache_create();
+   cache = disk_cache_create();
 
_mesa_sha1_compute(blob, sizeof(blob), blob_key);
 
-   /* Ensure that cache_get returns nothing before anything is added. */
-   result = cache_get(cache, blob_key, &size);
-   expect_null(result, "cache_get with non-existent item (pointer)");
-   expect_equal(size, 0, "cache_get with non-existent item (size)");
+   /* Ensure that disk_cache_get returns nothing before anything is added. */
+   result = disk_cache_get(cache, blob_key, &size);
+   expect_null(result, "disk_cache_get with non-existent item (pointer)");
+   expect_equal(size, 0, "disk_cache_get with non-existent item (size)");
 
/* Simple test of put and get. */
-   cache_put(cache, blob_key, blob, sizeof(blob));
+   disk_cache_put(cache, blob_key, blo

Mesa (master): util: import cache.c/h from glsl

2016-11-15 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: 31727300e177b11c2b2b267838b59b090cb605d0
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=31727300e177b11c2b2b267838b59b090cb605d0

Author: Marek Olšák 
Date:   Sun Nov 13 16:38:01 2016 +0100

util: import cache.c/h from glsl

It's not dependent on GLSL and it can be useful for shader caches that don't
deal with GLSL.

v2: address review comments
v3: keep the other 3 lines in configure.ac

Reviewed-by: Emil Velikov 

---

 configure.ac |  1 -
 src/compiler/Makefile.glsl.am|  4 
 src/compiler/Makefile.sources|  4 
 src/compiler/glsl/tests/cache_test.c | 22 +-
 src/util/Makefile.sources|  2 ++
 src/{compiler/glsl/cache.c => util/disk_cache.c} | 16 +---
 src/{compiler/glsl/cache.h => util/disk_cache.h} | 11 +--
 7 files changed, 17 insertions(+), 43 deletions(-)

diff --git a/configure.ac b/configure.ac
index 9d62b90..b89bf23 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1361,7 +1361,6 @@ if test "x$with_sha1" = "x"; then
 AC_MSG_ERROR([Cannot enable shader cache (no SHA-1 implementation 
found)])
 fi
 fi
-AM_CONDITIONAL([ENABLE_SHADER_CACHE], [test x$enable_shader_cache = xyes])
 if test "x$enable_shader_cache" = "xyes"; then
AC_DEFINE([ENABLE_SHADER_CACHE], [1], [Enable shader cache])
 fi
diff --git a/src/compiler/Makefile.glsl.am b/src/compiler/Makefile.glsl.am
index 3eac677..5b1d74e 100644
--- a/src/compiler/Makefile.glsl.am
+++ b/src/compiler/Makefile.glsl.am
@@ -131,10 +131,6 @@ glsl_libglsl_la_SOURCES =  \
$(LIBGLSL_GENERATED_FILES)  \
$(LIBGLSL_FILES)
 
-if ENABLE_SHADER_CACHE
-glsl_libglsl_la_SOURCES += $(LIBGLSL_SHADER_CACHE_FILES)
-endif
-
 glsl_libstandalone_la_SOURCES = \
$(GLSL_COMPILER_CXX_FILES)
 
diff --git a/src/compiler/Makefile.sources b/src/compiler/Makefile.sources
index 08d93e0..d05bcac 100644
--- a/src/compiler/Makefile.sources
+++ b/src/compiler/Makefile.sources
@@ -136,10 +136,6 @@ LIBGLSL_FILES = \
glsl/s_expression.cpp \
glsl/s_expression.h
 
-LIBGLSL_SHADER_CACHE_FILES = \
-   glsl/cache.c \
-   glsl/cache.h
-
 # glsl_compiler
 
 GLSL_COMPILER_CXX_FILES = \
diff --git a/src/compiler/glsl/tests/cache_test.c 
b/src/compiler/glsl/tests/cache_test.c
index 724dfcd..94a3c1d 100644
--- a/src/compiler/glsl/tests/cache_test.c
+++ b/src/compiler/glsl/tests/cache_test.c
@@ -32,31 +32,11 @@
 #include 
 
 #include "util/mesa-sha1.h"
-#include "cache.h"
+#include "util/disk_cache.h"
 
 bool error = false;
 
 #ifdef ENABLE_SHADER_CACHE
-void
-_mesa_warning(void *ctx, const char *fmt, ...);
-
-void
-_mesa_warning(void *ctx, const char *fmt, ...)
-{
-va_list vargs;
-(void) ctx;
-
-va_start(vargs, fmt);
-
-/* This output is not thread-safe, but that's good enough for the
- * standalone compiler.
- */
-fprintf(stderr, "Mesa warning: ");
-vfprintf(stderr, fmt, vargs);
-fprintf(stderr, "\n");
-
-va_end(vargs);
-}
 
 static void
 expect_equal(uint64_t actual, uint64_t expected, const char *test)
diff --git a/src/util/Makefile.sources b/src/util/Makefile.sources
index c5531c8..b7ca347 100644
--- a/src/util/Makefile.sources
+++ b/src/util/Makefile.sources
@@ -4,6 +4,8 @@ MESA_UTIL_FILES :=  \
bitset.h \
debug.c \
debug.h \
+   disk_cache.c \
+   disk_cache.h \
format_r11g11b10f.h \
format_rgb9e5.h \
format_srgb.h \
diff --git a/src/compiler/glsl/cache.c b/src/util/disk_cache.c
similarity index 98%
rename from src/compiler/glsl/cache.c
rename to src/util/disk_cache.c
index e74c27d..79242aa 100644
--- a/src/compiler/glsl/cache.c
+++ b/src/util/disk_cache.c
@@ -21,6 +21,8 @@
  * IN THE SOFTWARE.
  */
 
+#ifdef ENABLE_SHADER_CACHE
+
 #include 
 #include 
 #include 
@@ -40,7 +42,7 @@
 #include "util/ralloc.h"
 #include "main/errors.h"
 
-#include "cache.h"
+#include "disk_cache.h"
 
 /* Number of bits to mask off from a cache key to get an index. */
 #define CACHE_INDEX_KEY_BITS 16
@@ -86,9 +88,8 @@ mkdir_if_needed(char *path)
   if (S_ISDIR(sb.st_mode)) {
  return 0;
   } else {
- _mesa_warning(NULL,
-   "Cannot use %s for shader cache (not a directory)"
-   "---disabling.\n", path);
+ fprintf(stderr, "Cannot use %s for shader cache (not a directory)"
+ "---disabling.\n", path);
  return -1;
   }
}
@@ -97,9 +98,8 @@ mkdir_if_needed(char *path)
if (ret == 0 || (ret == -1 && errno == EEXIST))
  return 0;
 
-   _mesa_warning(NULL,
- "Failed to create %s for shader cache (%s)---disabling.\n",
- path, strerror(errno));
+   fprintf(stderr, "Failed to create %s for shader cache (%s)---disabling.\n",
+   path, strerror(errno));
 
return -1;
 }
@@ 

Mesa (master): gallivm: limit use of setFastMathFlags to LLVM 3.8 and later

2016-11-15 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: 5b8876609ec526cd407e86b50bf8587ddb5bbacd
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5b8876609ec526cd407e86b50bf8587ddb5bbacd

Author: Marek Olšák 
Date:   Tue Nov 15 19:56:03 2016 +0100

gallivm: limit use of setFastMathFlags to LLVM 3.8 and later

Reviewed-by: Brian Paul 

---

 src/gallium/auxiliary/gallivm/lp_bld_misc.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp 
b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
index da3cbdd..a68428d 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
+++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
@@ -739,11 +739,13 @@ lp_create_builder(LLVMContextRef ctx, bool unsafe_fpmath)
 {
LLVMBuilderRef builder = LLVMCreateBuilderInContext(ctx);
 
+#if HAVE_LLVM >= 0x0308
if (unsafe_fpmath) {
   llvm::FastMathFlags flags;
   flags.setUnsafeAlgebra();
   llvm::unwrap(builder)->setFastMathFlags(flags);
}
+#endif
 
return builder;
 }

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): intel: Set min_ds_entries on Broxton.

2016-11-15 Thread Kenneth Graunke
Module: Mesa
Branch: master
Commit: 341fc0073a3c05fd43e9c7a33613bcb881f25f33
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=341fc0073a3c05fd43e9c7a33613bcb881f25f33

Author: Kenneth Graunke 
Date:   Tue Nov 15 00:15:02 2016 -0800

intel: Set min_ds_entries on Broxton.

This was missing.

Cc: mesa-sta...@lists.freedesktop.org
Signed-off-by: Kenneth Graunke 
Reviewed-by: Ben Widawsky 

---

 src/intel/common/gen_device_info.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/intel/common/gen_device_info.c 
b/src/intel/common/gen_device_info.c
index 1dc1769..c7b8e56 100644
--- a/src/intel/common/gen_device_info.c
+++ b/src/intel/common/gen_device_info.c
@@ -391,6 +391,7 @@ static const struct gen_device_info gen_device_info_bxt = {
.urb = {
   .size = 192,
   .min_vs_entries = 34,
+  .min_ds_entries = 34,
   .max_vs_entries = 704,
   .max_tcs_entries = 256,
   .max_tes_entries = 416,
@@ -413,6 +414,7 @@ static const struct gen_device_info gen_device_info_bxt_2x6 
= {
.urb = {
   .size = 128,
   .min_vs_entries = 34,
+  .min_ds_entries = 34,
   .max_vs_entries = 352,
   .max_tcs_entries = 128,
   .max_tes_entries = 208,

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): Revert "dri: make use of dri_get_extensions_name(..) helper "

2016-11-15 Thread Emil Velikov
Module: Mesa
Branch: master
Commit: fb10c8987745cbe69c5f36e9c1c6f2c70b44b761
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=fb10c8987745cbe69c5f36e9c1c6f2c70b44b761

Author: Emil Velikov 
Date:   Tue Nov 15 18:01:20 2016 +

Revert "dri: make use of dri_get_extensions_name(..) helper"

This reverts commit 1a21d21580965eff751414d140b3c1762eb3.

Pushed the wrong version of the patch.

---

 src/egl/drivers/dri2/egl_dri2.c | 5 ++---
 src/gbm/backends/dri/gbm_dri.c  | 5 ++---
 src/glx/dri_common.c| 5 +++--
 3 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
index 593dd01..d9e2ad7 100644
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -514,9 +514,8 @@ dri2_open_driver(_EGLDisplay *disp)
 
_eglLog(_EGL_DEBUG, "DRI2: dlopen(%s)", path);
 
-   get_extensions_name = dri_get_extensions_name(dri2_dpy->driver_name);
-
-   if (get_extensions_name) {
+   if (asprintf(&get_extensions_name, "%s_%s",
+__DRI_DRIVER_GET_EXTENSIONS, dri2_dpy->driver_name) != -1) {
   get_extensions = dlsym(dri2_dpy->driver, get_extensions_name);
   if (get_extensions) {
  extensions = get_extensions();
diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c
index 4cb7f27..5cd7318 100644
--- a/src/gbm/backends/dri/gbm_dri.c
+++ b/src/gbm/backends/dri/gbm_dri.c
@@ -363,9 +363,8 @@ dri_open_driver(struct gbm_dri_device *dri)
   return NULL;
}
 
-   get_extensions_name = dri_get_extensions_name(dri->base.driver_name);
-
-   if (get_extensions_name) {
+   if (asprintf(&get_extensions_name, "%s_%s",
+__DRI_DRIVER_GET_EXTENSIONS, dri->base.driver_name) != -1) {
   const __DRIextension **(*get_extensions)(void);
 
   get_extensions = dlsym(dri->driver, get_extensions_name);
diff --git a/src/glx/dri_common.c b/src/glx/dri_common.c
index 67cf3c8..6728d38 100644
--- a/src/glx/dri_common.c
+++ b/src/glx/dri_common.c
@@ -161,9 +161,10 @@ driGetDriverExtensions(void *handle, const char 
*driver_name)
 {
const __DRIextension **extensions = NULL;
const __DRIextension **(*get_extensions)(void);
-   char *get_extensions_name = dri_get_extensions_name(driver_name);
+   char *get_extensions_name;
 
-   if (get_extensions_name) {
+   if (asprintf(&get_extensions_name, "%s_%s",
+__DRI_DRIVER_GET_EXTENSIONS, driver_name) != -1) {
   get_extensions = dlsym(handle, get_extensions_name);
   if (get_extensions) {
  free(get_extensions_name);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): dri: make use of loader_get_extensions_name(..) helper

2016-11-15 Thread Emil Velikov
Module: Mesa
Branch: master
Commit: 0c73a3b7d0cceb4ba06274b7bd3cf50fb73d48f1
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0c73a3b7d0cceb4ba06274b7bd3cf50fb73d48f1

Author: Christian Gmeiner 
Date:   Wed Nov  9 15:50:06 2016 +0100

dri: make use of loader_get_extensions_name(..) helper

Changes since v1:
 - removed not needed includes
 - use the loader version of the helper

v2 [Emil Velikov]
 - Keep the includes - they are required.

Signed-off-by: Christian Gmeiner 
Signed-off-by: Emil Velikov 

---

 src/egl/drivers/dri2/egl_dri2.c | 5 +++--
 src/gbm/backends/dri/gbm_dri.c  | 4 ++--
 src/glx/dri_common.c| 5 ++---
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
index d9e2ad7..f18e9fb 100644
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -56,6 +56,7 @@
 #endif
 
 #include "egl_dri2.h"
+#include "loader/loader.h"
 #include "util/u_atomic.h"
 
 /* The kernel header drm_fourcc.h defines the DRM formats below.  We duplicate
@@ -514,8 +515,8 @@ dri2_open_driver(_EGLDisplay *disp)
 
_eglLog(_EGL_DEBUG, "DRI2: dlopen(%s)", path);
 
-   if (asprintf(&get_extensions_name, "%s_%s",
-__DRI_DRIVER_GET_EXTENSIONS, dri2_dpy->driver_name) != -1) {
+   get_extensions_name = loader_get_extensions_name(dri2_dpy->driver_name);
+   if (get_extensions_name) {
   get_extensions = dlsym(dri2_dpy->driver, get_extensions_name);
   if (get_extensions) {
  extensions = get_extensions();
diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c
index 5cd7318..96a1f87 100644
--- a/src/gbm/backends/dri/gbm_dri.c
+++ b/src/gbm/backends/dri/gbm_dri.c
@@ -363,8 +363,8 @@ dri_open_driver(struct gbm_dri_device *dri)
   return NULL;
}
 
-   if (asprintf(&get_extensions_name, "%s_%s",
-__DRI_DRIVER_GET_EXTENSIONS, dri->base.driver_name) != -1) {
+   get_extensions_name = loader_get_extensions_name(dri->base.driver_name);
+   if (get_extensions_name) {
   const __DRIextension **(*get_extensions)(void);
 
   get_extensions = dlsym(dri->driver, get_extensions_name);
diff --git a/src/glx/dri_common.c b/src/glx/dri_common.c
index 6728d38..854733a 100644
--- a/src/glx/dri_common.c
+++ b/src/glx/dri_common.c
@@ -161,10 +161,9 @@ driGetDriverExtensions(void *handle, const char 
*driver_name)
 {
const __DRIextension **extensions = NULL;
const __DRIextension **(*get_extensions)(void);
-   char *get_extensions_name;
+   char *get_extensions_name = loader_get_extensions_name(driver_name);
 
-   if (asprintf(&get_extensions_name, "%s_%s",
-__DRI_DRIVER_GET_EXTENSIONS, driver_name) != -1) {
+   if (get_extensions_name) {
   get_extensions = dlsym(handle, get_extensions_name);
   if (get_extensions) {
  free(get_extensions_name);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): radeonsi: fold some shader context initialization to si_llvm_context_init

2016-11-15 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: 171e349782ab6b688c397f6bb76f105ac18a752a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=171e349782ab6b688c397f6bb76f105ac18a752a

Author: Marek Olšák 
Date:   Sat Nov 12 22:51:41 2016 +0100

radeonsi: fold some shader context initialization to si_llvm_context_init

Reviewed-by: Nicolai Hähnle 

---

 src/gallium/drivers/radeonsi/si_shader.c   | 25 +-
 src/gallium/drivers/radeonsi/si_shader_internal.h  |  4 ++-
 .../drivers/radeonsi/si_shader_tgsi_setup.c| 30 +++---
 3 files changed, 30 insertions(+), 29 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader.c 
b/src/gallium/drivers/radeonsi/si_shader.c
index 0410a32..917e148 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -6285,32 +6285,9 @@ static void si_init_shader_ctx(struct si_shader_context 
*ctx,
struct lp_build_tgsi_context *bld_base;
struct lp_build_tgsi_action tmpl = {};
 
-   memset(ctx, 0, sizeof(*ctx));
-   si_llvm_context_init(
-   ctx, "amdgcn--",
+   si_llvm_context_init(ctx, sscreen, shader, tm,
(shader && shader->selector) ? &shader->selector->info : NULL,
(shader && shader->selector) ? shader->selector->tokens : NULL);
-   si_shader_context_init_alu(&ctx->soa.bld_base);
-   ctx->tm = tm;
-   ctx->screen = sscreen;
-   if (shader && shader->selector)
-   ctx->type = shader->selector->info.processor;
-   else
-   ctx->type = -1;
-   ctx->shader = shader;
-
-   ctx->voidt = LLVMVoidTypeInContext(ctx->gallivm.context);
-   ctx->i1 = LLVMInt1TypeInContext(ctx->gallivm.context);
-   ctx->i8 = LLVMInt8TypeInContext(ctx->gallivm.context);
-   ctx->i32 = LLVMInt32TypeInContext(ctx->gallivm.context);
-   ctx->i64 = LLVMInt64TypeInContext(ctx->gallivm.context);
-   ctx->i128 = LLVMIntTypeInContext(ctx->gallivm.context, 128);
-   ctx->f32 = LLVMFloatTypeInContext(ctx->gallivm.context);
-   ctx->v16i8 = LLVMVectorType(ctx->i8, 16);
-   ctx->v2i32 = LLVMVectorType(ctx->i32, 2);
-   ctx->v4i32 = LLVMVectorType(ctx->i32, 4);
-   ctx->v4f32 = LLVMVectorType(ctx->f32, 4);
-   ctx->v8i32 = LLVMVectorType(ctx->i32, 8);
 
bld_base = &ctx->soa.bld_base;
bld_base->emit_fetch_funcs[TGSI_FILE_CONSTANT] = fetch_constant;
diff --git a/src/gallium/drivers/radeonsi/si_shader_internal.h 
b/src/gallium/drivers/radeonsi/si_shader_internal.h
index 55b70e6..8d6a40b 100644
--- a/src/gallium/drivers/radeonsi/si_shader_internal.h
+++ b/src/gallium/drivers/radeonsi/si_shader_internal.h
@@ -178,7 +178,9 @@ LLVMValueRef si_llvm_bound_index(struct si_shader_context 
*ctx,
 unsigned num);
 
 void si_llvm_context_init(struct si_shader_context *ctx,
- const char *triple,
+ struct si_screen *sscreen,
+ struct si_shader *shader,
+ LLVMTargetMachineRef tm,
  const struct tgsi_shader_info *info,
  const struct tgsi_token *tokens);
 
diff --git a/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c 
b/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c
index b37f7e6..624a167 100644
--- a/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c
+++ b/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c
@@ -1222,7 +1222,10 @@ static void emit_immediate(struct lp_build_tgsi_context 
*bld_base,
ctx->soa.num_immediates++;
 }
 
-void si_llvm_context_init(struct si_shader_context *ctx, const char *triple,
+void si_llvm_context_init(struct si_shader_context *ctx,
+ struct si_screen *sscreen,
+ struct si_shader *shader,
+ LLVMTargetMachineRef tm,
  const struct tgsi_shader_info *info,
  const struct tgsi_token *tokens)
 {
@@ -1233,12 +1236,16 @@ void si_llvm_context_init(struct si_shader_context 
*ctx, const char *triple,
 * This should be enough for us to be able to pass our gallivm struct 
to the
 * helper functions in the gallivm module.
 */
-   memset(&ctx->gallivm, 0, sizeof (ctx->gallivm));
-   memset(&ctx->soa, 0, sizeof(ctx->soa));
+   memset(ctx, 0, sizeof(*ctx));
+   ctx->shader = shader;
+   ctx->screen = sscreen;
+   ctx->tm = tm;
+   ctx->type = info ? info->processor : -1;
+
ctx->gallivm.context = LLVMContextCreate();
ctx->gallivm.module = LLVMModuleCreateWithNameInContext("tgsi",
ctx->gallivm.context);
-   LLVMSetTarget(ctx->gallivm.module, triple);
+   LLVMSetTarget(ctx->gallivm.module, "amdgcn--");
ctx->gallivm.builder = LLVMCreateBuilderInContext(ctx->gallivm.context);
 
struct lp_build_tgsi_context *bld_base

Mesa (master): radeonsi: set unsafe fpmath on FP instructions when allowed by R600_DEBUG

2016-11-15 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: 358079da2d6705cf4966b8de802e99362c39c38a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=358079da2d6705cf4966b8de802e99362c39c38a

Author: Marek Olšák 
Date:   Sat Nov 12 23:10:23 2016 +0100

radeonsi: set unsafe fpmath on FP instructions when allowed by R600_DEBUG

Reviewed-by: Nicolai Hähnle 

---

 src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c 
b/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c
index 624a167..2f38949 100644
--- a/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c
+++ b/src/gallium/drivers/radeonsi/si_shader_tgsi_setup.c
@@ -22,6 +22,7 @@
  */
 
 #include "si_shader_internal.h"
+#include "si_pipe.h"
 #include "radeon/radeon_elf_util.h"
 
 #include "gallivm/lp_bld_const.h"
@@ -1246,7 +1247,10 @@ void si_llvm_context_init(struct si_shader_context *ctx,
ctx->gallivm.module = LLVMModuleCreateWithNameInContext("tgsi",
ctx->gallivm.context);
LLVMSetTarget(ctx->gallivm.module, "amdgcn--");
-   ctx->gallivm.builder = LLVMCreateBuilderInContext(ctx->gallivm.context);
+
+   bool unsafe_fpmath = (sscreen->b.debug_flags & DBG_UNSAFE_MATH) != 0;
+   ctx->gallivm.builder = lp_create_builder(ctx->gallivm.context,
+unsafe_fpmath);
 
struct lp_build_tgsi_context *bld_base = &ctx->soa.bld_base;
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): gallivm: add lp_create_builder with an unsafe_fpmath option

2016-11-15 Thread Marek Olšák
Module: Mesa
Branch: master
Commit: 41d20d492087477fd1f0f03e12598970d95e6e1f
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=41d20d492087477fd1f0f03e12598970d95e6e1f

Author: Marek Olšák 
Date:   Sat Nov 12 23:08:51 2016 +0100

gallivm: add lp_create_builder with an unsafe_fpmath option

Reviewed-by: Nicolai Hähnle 

---

 src/gallium/auxiliary/gallivm/lp_bld_misc.cpp | 14 ++
 src/gallium/auxiliary/gallivm/lp_bld_misc.h   |  3 +++
 2 files changed, 17 insertions(+)

diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp 
b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
index bd4d4d3..da3cbdd 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
+++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
@@ -733,3 +733,17 @@ lp_is_function(LLVMValueRef v)
return llvm::isa(llvm::unwrap(v));
 #endif
 }
+
+extern "C" LLVMBuilderRef
+lp_create_builder(LLVMContextRef ctx, bool unsafe_fpmath)
+{
+   LLVMBuilderRef builder = LLVMCreateBuilderInContext(ctx);
+
+   if (unsafe_fpmath) {
+  llvm::FastMathFlags flags;
+  flags.setUnsafeAlgebra();
+  llvm::unwrap(builder)->setFastMathFlags(flags);
+   }
+
+   return builder;
+}
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.h 
b/src/gallium/auxiliary/gallivm/lp_bld_misc.h
index a55c6bd..c499a6f 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_misc.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.h
@@ -82,6 +82,9 @@ lp_get_called_value(LLVMValueRef call);
 extern bool
 lp_is_function(LLVMValueRef v);
 
+extern LLVMBuilderRef
+lp_create_builder(LLVMContextRef ctx, bool unsafe_fpmath);
+
 #ifdef __cplusplus
 }
 #endif

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): configure.ac: Don't look for pthreads in Android platform

2016-11-15 Thread Emil Velikov
Module: Mesa
Branch: master
Commit: e23608db1cad3d3b86b5350255db4d47a0081d2e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e23608db1cad3d3b86b5350255db4d47a0081d2e

Author: Gurchetan Singh 
Date:   Thu Oct 27 09:06:42 2016 -0700

configure.ac: Don't look for pthreads in Android platform

In Android, the pthreads libs are in bionic.  When building
Mesa for Android with the autotools workflow, we shouldn't
set -lpthread or -pthread.

[Emil Velikov]
Other platforms could use a similar fix, although that is left as
separate exercise.

Reviewed-by: Emil Velikov 

---

 configure.ac | 7 +--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index 4761c59..3f21cd5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -823,8 +823,11 @@ if test "x$ax_pthread_ok" = xno; then
 fi
 dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS
 dnl to -pthread, which causes problems if we need -lpthread to appear in
-dnl pkgconfig files.
-test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
+dnl pkgconfig files.  Since Android doesn't have a pthread lib, this check
+dnl is not valid for that platform.
+if test "x$android" = xno; then
+test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
+fi
 
 dnl pthread-stubs is mandatory on targets where it exists
 case "$host_os" in

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): dri: make use of dri_get_extensions_name(..) helper

2016-11-15 Thread Emil Velikov
Module: Mesa
Branch: master
Commit: 1a21d21580965eff751414d140b3c1762eb3
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1a21d21580965eff751414d140b3c1762eb3

Author: Christian Gmeiner 
Date:   Thu Nov  3 15:25:21 2016 +0100

dri: make use of dri_get_extensions_name(..) helper

Signed-off-by: Christian Gmeiner 
Reviewed-by: Emil Velikov 

---

 src/egl/drivers/dri2/egl_dri2.c | 5 +++--
 src/gbm/backends/dri/gbm_dri.c  | 5 +++--
 src/glx/dri_common.c| 5 ++---
 3 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
index d9e2ad7..593dd01 100644
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -514,8 +514,9 @@ dri2_open_driver(_EGLDisplay *disp)
 
_eglLog(_EGL_DEBUG, "DRI2: dlopen(%s)", path);
 
-   if (asprintf(&get_extensions_name, "%s_%s",
-__DRI_DRIVER_GET_EXTENSIONS, dri2_dpy->driver_name) != -1) {
+   get_extensions_name = dri_get_extensions_name(dri2_dpy->driver_name);
+
+   if (get_extensions_name) {
   get_extensions = dlsym(dri2_dpy->driver, get_extensions_name);
   if (get_extensions) {
  extensions = get_extensions();
diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c
index 5cd7318..4cb7f27 100644
--- a/src/gbm/backends/dri/gbm_dri.c
+++ b/src/gbm/backends/dri/gbm_dri.c
@@ -363,8 +363,9 @@ dri_open_driver(struct gbm_dri_device *dri)
   return NULL;
}
 
-   if (asprintf(&get_extensions_name, "%s_%s",
-__DRI_DRIVER_GET_EXTENSIONS, dri->base.driver_name) != -1) {
+   get_extensions_name = dri_get_extensions_name(dri->base.driver_name);
+
+   if (get_extensions_name) {
   const __DRIextension **(*get_extensions)(void);
 
   get_extensions = dlsym(dri->driver, get_extensions_name);
diff --git a/src/glx/dri_common.c b/src/glx/dri_common.c
index 6728d38..67cf3c8 100644
--- a/src/glx/dri_common.c
+++ b/src/glx/dri_common.c
@@ -161,10 +161,9 @@ driGetDriverExtensions(void *handle, const char 
*driver_name)
 {
const __DRIextension **extensions = NULL;
const __DRIextension **(*get_extensions)(void);
-   char *get_extensions_name;
+   char *get_extensions_name = dri_get_extensions_name(driver_name);
 
-   if (asprintf(&get_extensions_name, "%s_%s",
-__DRI_DRIVER_GET_EXTENSIONS, driver_name) != -1) {
+   if (get_extensions_name) {
   get_extensions = dlsym(handle, get_extensions_name);
   if (get_extensions) {
  free(get_extensions_name);

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): loader: fixup driver names if needed

2016-11-15 Thread Emil Velikov
Module: Mesa
Branch: master
Commit: e4b01c97c490bba712b05a20d088842384833275
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e4b01c97c490bba712b05a20d088842384833275

Author: Christian Gmeiner 
Date:   Wed Nov  9 15:50:07 2016 +0100

loader: fixup driver names if needed

This makes it possible to 'use' the imx-drm driver. Remeber that it
is not possible to have sysmbol names in C/C++ with a '-' in it.

Changes since v1:
 - move the fix to loader.c

Signed-off-by: Christian Gmeiner 
Reviewed-by: Eric Engestrom  (v1)
Reviewed-by: Emil Velikov 

---

 src/loader/loader.c | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/src/loader/loader.c b/src/loader/loader.c
index fd05f08..449ff54 100644
--- a/src/loader/loader.c
+++ b/src/loader/loader.c
@@ -413,5 +413,11 @@ loader_get_extensions_name(const char *driver_name)
if (asprintf(&name, "%s_%s", __DRI_DRIVER_GET_EXTENSIONS, driver_name) < 0)
   return NULL;
 
+   const size_t len = strlen(name);
+   for (size_t i = 0; i < len; i++) {
+  if (name[i] == '-')
+  name[i] = '_';
+   }
+
return name;
 }

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): egl: Use pkg-config for Android NDK build

2016-11-15 Thread Emil Velikov
Module: Mesa
Branch: master
Commit: 0639e253a5fe796e0815ada86086f6e64d1a701a
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0639e253a5fe796e0815ada86086f6e64d1a701a

Author: Gurchetan Singh 
Date:   Thu Nov 10 12:14:47 2016 -0800

egl: Use pkg-config for Android NDK build

It's possible to build Mesa for Android using the traditional
autotools workflow [1]. ChromiumOS fetches Android prebuilts and
puts them in a sysroot. We now want to use pkg-config to specify
the location of system headers and libraries [2].

To enable this, let's add the required pkg-config checks and link
against them.

[1] https://developer.android.com/ndk/guides/standalone_toolchain.html
[2] https://chromium-review.googlesource.com/#/c/403237/

v2: Bundle pkg-config checks together (Emil)
v3: Provide further context on standalone NDK Mesa build (Emil)
Reviewed-by: Emil Velikov 

---

 configure.ac| 1 +
 src/egl/Makefile.am | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/configure.ac b/configure.ac
index 3f21cd5..9d62b90 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2059,6 +2059,7 @@ for plat in $egl_platforms; do
;;
 
android)
+   PKG_CHECK_MODULES([ANDROID], [cutils hardware sync])
;;
 
*)
diff --git a/src/egl/Makefile.am b/src/egl/Makefile.am
index 304b0d3..7c5abd2 100644
--- a/src/egl/Makefile.am
+++ b/src/egl/Makefile.am
@@ -86,6 +86,8 @@ endif
 
 if HAVE_EGL_PLATFORM_ANDROID
 AM_CFLAGS += -DHAVE_ANDROID_PLATFORM
+AM_CFLAGS += $(ANDROID_CFLAGS)
+libEGL_la_LIBADD += $(ANDROID_LIBS)
 dri2_backend_FILES += drivers/dri2/platform_android.c
 endif
 

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): loader: add loader_get_extensions_name(..) helper

2016-11-15 Thread Emil Velikov
Module: Mesa
Branch: master
Commit: 0890aa6f7fdbe33721b8ef2039608390c5aa886e
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0890aa6f7fdbe33721b8ef2039608390c5aa886e

Author: Christian Gmeiner 
Date:   Wed Nov  9 15:50:05 2016 +0100

loader: add loader_get_extensions_name(..) helper

Changes since v1:
 - renamed function to loader_get_extensions_name
 - moved function into loader

Signed-off-by: Christian Gmeiner 

V2: [Emil Velikov]
 - Use local define.

Signed-off-by: Emil Velikov 

---

 src/loader/loader.c | 19 +++
 src/loader/loader.h |  2 ++
 2 files changed, 21 insertions(+)

diff --git a/src/loader/loader.c b/src/loader/loader.c
index fe90307..fd05f08 100644
--- a/src/loader/loader.c
+++ b/src/loader/loader.c
@@ -396,3 +396,22 @@ loader_set_logger(void (*logger)(int level, const char 
*fmt, ...))
 {
log_ = logger;
 }
+
+/* XXX: Local definition to avoid pulling the heavyweight GL/gl.h and
+ * GL/internal/dri_interface.h
+ */
+
+#ifndef __DRI_DRIVER_GET_EXTENSIONS
+#define __DRI_DRIVER_GET_EXTENSIONS "__driDriverGetExtensions"
+#endif
+
+char *
+loader_get_extensions_name(const char *driver_name)
+{
+   char *name = NULL;
+
+   if (asprintf(&name, "%s_%s", __DRI_DRIVER_GET_EXTENSIONS, driver_name) < 0)
+  return NULL;
+
+   return name;
+}
diff --git a/src/loader/loader.h b/src/loader/loader.h
index d404f5b..84314a4 100644
--- a/src/loader/loader.h
+++ b/src/loader/loader.h
@@ -65,6 +65,8 @@ loader_get_user_preferred_fd(int default_fd, int 
*different_device);
 void
 loader_set_logger(void (*logger)(int level, const char *fmt, ...));
 
+char *
+loader_get_extensions_name(const char *driver_name);
 
 #ifdef __cplusplus
 }

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit


Mesa (master): meta/GetTexSubImage: Account for GL_PACK_SKIP_IMAGES on compressed textures

2016-11-15 Thread Eduardo Lima Mitev
Module: Mesa
Branch: master
Commit: e73513f3c85f45a05a23dbdcda7901812fc4d4fa
URL:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=e73513f3c85f45a05a23dbdcda7901812fc4d4fa

Author: Eduardo Lima Mitev 
Date:   Mon Nov 14 15:25:14 2016 -0800

meta/GetTexSubImage: Account for GL_PACK_SKIP_IMAGES on compressed textures

This option was being ignored when packing compressed 3D and cube textures.

Fixes CTS test (on gen8+):
* GL45-CTS.gtf32.GL3Tests.packed_pixels.packed_pixels_pixelstore

v2: Drop API checks.
v3 (Ken): Just apply the existing code in more cases.

Reviewed-by: Kenneth Graunke 

---

 src/mesa/drivers/common/meta.c | 20 +---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c
index 5ab1e6c..99c85cf 100644
--- a/src/mesa/drivers/common/meta.c
+++ b/src/mesa/drivers/common/meta.c
@@ -3243,8 +3243,20 @@ _mesa_meta_GetTexSubImage(struct gl_context *ctx,
 
   for (slice = 0; slice < depth; slice++) {
  void *dst;
- if (texImage->TexObject->Target == GL_TEXTURE_2D_ARRAY
- || texImage->TexObject->Target == GL_TEXTURE_CUBE_MAP_ARRAY) {
+ /* Section 8.11.4 (Texture Image Queries) of the GL 4.5 spec says:
+  *
+  *"For three-dimensional, two-dimensional array, cube map array,
+  * and cube map textures pixel storage operations are applied as
+  * if the image were two-dimensional, except that the additional
+  * pixel storage state values PACK_IMAGE_HEIGHT and
+  * PACK_SKIP_IMAGES are applied. The correspondence of texels to
+  * memory locations is as defined for TexImage3D in section 8.5."
+  */
+ switch (texImage->TexObject->Target) {
+ case GL_TEXTURE_3D:
+ case GL_TEXTURE_2D_ARRAY:
+ case GL_TEXTURE_CUBE_MAP:
+ case GL_TEXTURE_CUBE_MAP_ARRAY: {
 /* Setup pixel packing.  SkipPixels and SkipRows will be applied
  * in the decompress_texture_image() function's call to
  * glReadPixels but we need to compute the dest slice's address
@@ -3255,9 +3267,11 @@ _mesa_meta_GetTexSubImage(struct gl_context *ctx,
 packing.SkipRows = 0;
 dst = _mesa_image_address3d(&packing, pixels, width, height,
 format, type, slice, 0, 0);
+break;
  }
- else {
+ default:
 dst = pixels;
+break;
  }
  result = decompress_texture_image(ctx, texImage, slice,
xoffset, yoffset, width, height,

___
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit