Mesa (master): intel/blorp: Use designated initializers in surf_convert_to_single_slice
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()
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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 "
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
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
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
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
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
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
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
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
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
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
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