Re: [Mesa-dev] [PATCH] u_thread: Use pthread_setname_np on linux only
Jose Fonseca, on lun. 22 janv. 2018 21:12:54 +, wrote: > Pushed. Thanks. Thanks! Samuel ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] u_thread: Use pthread_setname_np on linux only
Hello, Jose Fonseca, on lun. 15 janv. 2018 12:29:39 +, wrote: > On 13/01/18 11:33, Samuel Thibault wrote: > > pthread_setname_np was added in glibc 2.12 for the Linux port only, other > > ports do not necessarily have it. > > --- > > src/util/u_thread.h | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/src/util/u_thread.h b/src/util/u_thread.h > > index 26cc0b093..8c6e0bdc5 100644 > > --- a/src/util/u_thread.h > > +++ b/src/util/u_thread.h > > @@ -62,7 +62,8 @@ static inline void u_thread_setname( const char *name ) > > { > > #if defined(HAVE_PTHREAD) > > # if defined(__GNU_LIBRARY__) && defined(__GLIBC__) && > > defined(__GLIBC_MINOR__) && \ > > - (__GLIBC__ >= 3 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 12)) > > + (__GLIBC__ >= 3 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 12)) && \ > > + defined(__linux__) > > pthread_setname_np(pthread_self(), name); > > # endif > > #endif > > > > Looks good to me. > > Reviewed-by: Jose Fonseca <jfons...@vmware.com> Could somebody commit this? Thanks, Samuel ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] glx: fix non-dri build
Nicolai Hähnle, on lun. 15 janv. 2018 15:07:03 +0100, wrote: > On 13.01.2018 12:36, Samuel Thibault wrote: > > glXGetDriverConfig parameters do not provide a context to dynamically > > check for the presence of the function, so the dispatcher directly calls > > glXGetDriverConfig, but in non-dri builds dri_glx.c didn't provide > > glXGetDriverConfig. > > > > This change makes it provide a NULL-returning stub in non-dri builds. > > > > Fixes: 84f764a7591 "glxglvnddispatch: Add missing dispatch for > > GetDriverConfig" > > Would it be possible to instead modify dispatch_GetDriverConfig with an: > > #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) >... > #else >return NULL; > #endif Sure! There is just one thing: src/glx/g_glxglvnddispatchfuncs.c reads * THIS FILE IS AUTOMATICALLY GENERATED BY gen_scrn_dispatch.pl * DO NOT EDIT!! I didn't find that script... Samuel ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [PATCHv2] glx: fix non-dri build
glXGetDriverConfig parameters do not provide a context to dynamically check for the presence of the function, so the dispatcher directly calls glXGetDriverConfig, but in non-dri builds dri_glx.c didn't provide glXGetDriverConfig. This change make it just return NULL in that case. Fixes: 84f764a7591 "glxglvnddispatch: Add missing dispatch for GetDriverConfig --- Difference between v1 and v2: just modify the call in dispatch_GetDriverConfig rather than adding glXGetDriverConfig and always adding dri_glx to build system. --- src/glx/g_glxglvnddispatchfuncs.c | 4 1 file changed, 4 insertions(+) diff --git a/src/glx/g_glxglvnddispatchfuncs.c b/src/glx/g_glxglvnddispatchfuncs.c index 56d894eda..5b65afc86 100644 --- a/src/glx/g_glxglvnddispatchfuncs.c +++ b/src/glx/g_glxglvnddispatchfuncs.c @@ -338,11 +338,15 @@ static Display *dispatch_GetCurrentDisplayEXT(void) static const char *dispatch_GetDriverConfig(const char *driverName) { +#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) /* * The options are constant for a given driverName, so we do not need * a context (and apps expect to be able to call this without one). */ return glXGetDriverConfig(driverName); +#else +return NULL; +#endif } -- 2.15.1 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] glx: fix non-dri build
Dylan Baker, on dim. 14 janv. 2018 09:37:49 -0800, wrote: > I don't know enough about glx to know if this is correct, but you'll need to > add the c files to the meson.build as well Oh, mesa now also uses meson. Ok, now commited that to my tree. Samuel ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [PATCH] u_thread: Use pthread_setname_np on linux only
pthread_setname_np was added in glibc 2.12 for the Linux port only, other ports do not necessarily have it. --- src/util/u_thread.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/util/u_thread.h b/src/util/u_thread.h index 26cc0b093..8c6e0bdc5 100644 --- a/src/util/u_thread.h +++ b/src/util/u_thread.h @@ -62,7 +62,8 @@ static inline void u_thread_setname( const char *name ) { #if defined(HAVE_PTHREAD) # if defined(__GNU_LIBRARY__) && defined(__GLIBC__) && defined(__GLIBC_MINOR__) && \ - (__GLIBC__ >= 3 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 12)) + (__GLIBC__ >= 3 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 12)) && \ + defined(__linux__) pthread_setname_np(pthread_self(), name); # endif #endif -- 2.15.1 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [PATCH] glx: fix non-dri build
glXGetDriverConfig parameters do not provide a context to dynamically check for the presence of the function, so the dispatcher directly calls glXGetDriverConfig, but in non-dri builds dri_glx.c didn't provide glXGetDriverConfig. This change makes it provide a NULL-returning stub in non-dri builds. Fixes: 84f764a7591 "glxglvnddispatch: Add missing dispatch for GetDriverConfig" --- Compiling dri_glx.c in non-dri builds might be frowned upon. I'll be happy to move the glXGetDriverConfig to another file if somebody tells me which file would be the proper place. --- src/glx/Makefile.am | 2 +- src/glx/dri_glx.c | 11 ++- src/glx/glxclient.h | 4 ++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/glx/Makefile.am b/src/glx/Makefile.am index 5448a0907..0ae403403 100644 --- a/src/glx/Makefile.am +++ b/src/glx/Makefile.am @@ -59,6 +59,7 @@ libglx_la_SOURCES = \ clientinfo.c \ compsize.c \ create_context.c \ + dri_glx.c \ eval.c \ glxclient.h \ glxcmds.c \ @@ -123,7 +124,6 @@ libglx_la_SOURCES += \ dri2_glx.c \ dri2.h \ dri2_priv.h \ - dri_glx.c \ dri_sarea.h \ XF86dri.c \ xf86dri.h \ diff --git a/src/glx/dri_glx.c b/src/glx/dri_glx.c index 5c4346cec..893cb4acd 100644 --- a/src/glx/dri_glx.c +++ b/src/glx/dri_glx.c @@ -32,12 +32,13 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * */ +#include "glxclient.h" + #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) #include #include #include -#include "glxclient.h" #include "xf86dri.h" #include "dri2.h" #include "dri_sarea.h" @@ -1020,4 +1021,12 @@ driCreateDisplay(Display * dpy) return >base; } +#else /* GLX_DIRECT_RENDERING */ + +_GLX_PUBLIC const char * +glXGetDriverConfig(const char *driverName) +{ + return NULL; +} + #endif /* GLX_DIRECT_RENDERING */ diff --git a/src/glx/glxclient.h b/src/glx/glxclient.h index f3a36cf10..a1925a5fe 100644 --- a/src/glx/glxclient.h +++ b/src/glx/glxclient.h @@ -169,10 +169,10 @@ extern unsigned dri2GetSwapEventType(Display *dpy, XID drawable); */ extern const char *glXGetScreenDriver(Display * dpy, int scrNum); -extern const char *glXGetDriverConfig(const char *driverName); - #endif +extern const char *glXGetDriverConfig(const char *driverName); + // #define __GL_CLIENT_ATTRIB_STACK_DEPTH 16 -- 2.15.1 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] hurd: Fix build
Hello, These two mails are two proposals to fix https://bugs.freedesktop.org/show_bug.cgi?id=98632 Either properly fix the code, or just define PATH_MAX and be "done" with it. Samuel ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [PATCH] hurd: Fix build
GNU/Hurd does not define PATH_MAX since it doesn't have such arbitrary limitation. This drops the use of PATH_MAX by just allocating the proper buffer size, and disables the path length check in _mesa_get_shader_capture_path. Signed-off-by: Samuel Thibault <samuel.thiba...@ens-lyon.org> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98632 --- src/mesa/main/arbprogram.c | 7 +-- src/mesa/main/shaderapi.c | 30 ++ 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/mesa/main/arbprogram.c b/src/mesa/main/arbprogram.c index 9c7622a..de5deed 100644 --- a/src/mesa/main/arbprogram.c +++ b/src/mesa/main/arbprogram.c @@ -382,11 +382,13 @@ _mesa_ProgramStringARB(GLenum target, GLenum format, GLsizei len, const char *capture_path = _mesa_get_shader_capture_path(); if (capture_path != NULL) { FILE *file; - char filename[PATH_MAX]; + char *filename; const char *shader_type = target == GL_FRAGMENT_PROGRAM_ARB ? "fragment" : "vertex"; + size_t len = strlen(capture_path) + 1 + 1 + 2 + 10 + 12 + 1; + filename = malloc(len); - _mesa_snprintf(filename, sizeof(filename), "%s/%cp-%u.shader_test", + _mesa_snprintf(filename, len, "%s/%cp-%u.shader_test", capture_path, shader_type[0], prog->Id); file = fopen(filename, "w"); if (file) { @@ -397,6 +399,7 @@ _mesa_ProgramStringARB(GLenum target, GLenum format, GLsizei len, } else { _mesa_warning(ctx, "Failed to open %s", filename); } + free(filename); } } diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c index be3c203..0bf0267 100644 --- a/src/mesa/main/shaderapi.c +++ b/src/mesa/main/shaderapi.c @@ -112,6 +112,7 @@ _mesa_get_shader_capture_path(void) if (!read_env_var) { path = getenv("MESA_SHADER_CAPTURE_PATH"); read_env_var = true; +#ifdef PATH_MAX if (path && strlen(path) > PATH_MAX - strlen("/fp-4294967295.shader_test")) { GET_CURRENT_CONTEXT(ctx); @@ -119,6 +120,7 @@ _mesa_get_shader_capture_path(void) "request to capture shaders"); path = NULL; } +#endif } return path; @@ -1101,9 +1103,11 @@ _mesa_link_program(struct gl_context *ctx, struct gl_shader_program *shProg) const char *capture_path = _mesa_get_shader_capture_path(); if (shProg->Name != 0 && shProg->Name != ~0 && capture_path != NULL) { FILE *file; - char filename[PATH_MAX]; + char *filename; + size_t len = strlen(capture_path) + 1 + 10 + 12 + 1; - _mesa_snprintf(filename, sizeof(filename), "%s/%u.shader_test", + filename = malloc(len); + _mesa_snprintf(filename, len, "%s/%u.shader_test", capture_path, shProg->Name); file = fopen(filename, "w"); @@ -1124,6 +1128,7 @@ _mesa_link_program(struct gl_context *ctx, struct gl_shader_program *shProg) } else { _mesa_warning(ctx, "Failed to open %s", filename); } + free(filename); } if (shProg->LinkStatus == GL_FALSE && @@ -1618,18 +1623,25 @@ generate_sha1(const char *source, char sha_str[64]) * * /_.glsl */ -static void +static char * construct_name(const gl_shader_stage stage, const char *source, - const char *path, char *name, unsigned length) + const char *path) { char sha[64]; static const char *types[] = { "VS", "TC", "TE", "GS", "FS", "CS", }; + char *name; + size_t length; generate_sha1(source, sha); + + length = strlen(path) + 1 + 2 + 1 + strlen(sha) + 5 + 1; + name = malloc(length); + _mesa_snprintf(name, length, "%s/%s_%s.glsl", path, types[stage], sha); + return name; } /** @@ -1638,7 +1650,7 @@ construct_name(const gl_shader_stage stage, const char *source, static void dump_shader(const gl_shader_stage stage, const char *source) { - char name[PATH_MAX]; + char *name; static bool path_exists = true; char *dump_path; FILE *f; @@ -1652,7 +1664,7 @@ dump_shader(const gl_shader_stage stage, const char *source) return; } - construct_name(stage, source, dump_path, name, PATH_MAX); + name = construct_name(stage, source, dump_path); f = fopen(name, "w"); if (f) { @@ -1663,6 +1675,7 @@ dump_shader(const gl_shader_stage stage, const char *source) _mesa_warning(ctx, "could not open %s for dumping shader (%s)", name, strerror(errno)); } + free(name); } /** @@ -1672,7 +1685,7 @@ dump_shader(const gl_shader_stage stage, const char *source) static GLcharARB * read_shader(const g
[Mesa-dev] [PATCH] hurd: Fix build
GNU/Hurd does not define PATH_MAX since it doesn't have such arbitrary limitation. This works around it in arbprogram.c and shaderapi.c by defining PATH_MAX to an arbitrary value (4096, as on Linux). Signed-off-by: Samuel Thibault <samuel.thiba...@ens-lyon.org> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=98632 --- src/mesa/main/arbprogram.c | 4 src/mesa/main/shaderapi.c | 4 2 files changed, 8 insertions(+) diff --git a/src/mesa/main/arbprogram.c b/src/mesa/main/arbprogram.c index 9c7622a..175035d 100644 --- a/src/mesa/main/arbprogram.c +++ b/src/mesa/main/arbprogram.c @@ -46,6 +46,10 @@ #define PATH_MAX _MAX_PATH #endif +#ifndef PATH_MAX +#define PATH_MAX 4096 +#endif + /** * Bind a program (make it current) * \note Called from the GL API dispatcher by both glBindProgramNV diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c index be3c203..273fc9b 100644 --- a/src/mesa/main/shaderapi.c +++ b/src/mesa/main/shaderapi.c @@ -65,6 +65,10 @@ #define PATH_MAX _MAX_PATH #endif +#ifndef PATH_MAX +#define PATH_MAX 4096 +#endif + /** * Return mask of GLSL_x flags by examining the MESA_GLSL env var. */ -- 2.10.2 ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] egl: Soften several HAVE_DRM_PLATFORM to HAVE_LIBDRM
Emil Velikov, le Mon 02 Feb 2015 18:24:29 +, a écrit : Did you had the change to try the patch - does it cause issues on your setup (build and/or runtime-wise) ? My setup has neither HAVE_LIBDRM nor HAVE_DRM_PLATFORM so it can't break it :) Samuel ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
Re: [Mesa-dev] [PATCH] egl: Soften several HAVE_DRM_PLATFORM to HAVE_LIBDRM
Emil Velikov, le Thu 22 Jan 2015 16:52:06 +, a écrit : On 14/01/15 19:36, Axel Davy wrote: To fix build when libdrm is not found, commit a594cec7e3ef275c386054127a357110a19dd823 did put several parts of egl code under #ifdef HAVE_DRM_PLATFORM. HAVE_DRM_PLATFORM means the egl drm platform is being built. What should have been used instead is HAVE_LIBDRM. Ah, possibly, indeed. Samuel, Maarten What's your take on the topic ? It seems to make sense indeed. Samuel ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev
[Mesa-dev] [PATCH] EGL: fix build without libdrm
This fixes building EGL without libdrm support. Signed-off-by: Samuel Thibault samuel.thiba...@ens-lyon.org diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index a64f4e8..e703f28 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -33,8 +33,10 @@ #include fcntl.h #include errno.h #include unistd.h +#ifdef HAVE_DRM_PLATFORM #include xf86drm.h #include drm_fourcc.h +#endif #include GL/gl.h #include GL/internal/dri_interface.h #include sys/types.h @@ -520,10 +522,12 @@ dri2_setup_screen(_EGLDisplay *disp) disp-Extensions.KHR_gl_texture_2D_image = EGL_TRUE; disp-Extensions.KHR_gl_texture_cubemap_image = EGL_TRUE; } +#ifdef HAVE_DRM_PLATFORM if (dri2_dpy-image-base.version = 8 dri2_dpy-image-createImageFromDmaBufs) { disp-Extensions.EXT_image_dma_buf_import = EGL_TRUE; } +#endif } } @@ -1158,6 +1162,7 @@ dri2_create_image_khr_renderbuffer(_EGLDisplay *disp, _EGLContext *ctx, return dri2_create_image(disp, dri_image); } +#ifdef HAVE_DRM_PLATFORM static _EGLImage * dri2_create_image_mesa_drm_buffer(_EGLDisplay *disp, _EGLContext *ctx, EGLClientBuffer buffer, const EGLint *attr_list) @@ -1202,6 +1207,7 @@ dri2_create_image_mesa_drm_buffer(_EGLDisplay *disp, _EGLContext *ctx, return dri2_create_image(disp, dri_image); } +#endif #ifdef HAVE_WAYLAND_PLATFORM @@ -1375,6 +1381,7 @@ dri2_create_image_khr_texture(_EGLDisplay *disp, _EGLContext *ctx, return dri2_img-base; } +#ifdef HAVE_DRM_PLATFORM static EGLBoolean dri2_check_dma_buf_attribs(const _EGLImageAttribs *attrs) { @@ -1629,6 +1636,7 @@ dri2_create_image_dma_buf(_EGLDisplay *disp, _EGLContext *ctx, return res; } +#endif _EGLImage * dri2_create_image_khr(_EGLDriver *drv, _EGLDisplay *disp, @@ -1648,14 +1656,18 @@ dri2_create_image_khr(_EGLDriver *drv, _EGLDisplay *disp, return dri2_create_image_khr_texture(disp, ctx, target, buffer, attr_list); case EGL_GL_RENDERBUFFER_KHR: return dri2_create_image_khr_renderbuffer(disp, ctx, buffer, attr_list); +#ifdef HAVE_DRM_PLATFORM case EGL_DRM_BUFFER_MESA: return dri2_create_image_mesa_drm_buffer(disp, ctx, buffer, attr_list); +#endif #ifdef HAVE_WAYLAND_PLATFORM case EGL_WAYLAND_BUFFER_WL: return dri2_create_image_wayland_wl_buffer(disp, ctx, buffer, attr_list); #endif +#ifdef HAVE_DRM_PLATFORM case EGL_LINUX_DMA_BUF_EXT: return dri2_create_image_dma_buf(disp, ctx, buffer, attr_list); +#endif default: _eglError(EGL_BAD_PARAMETER, dri2_create_image_khr); return EGL_NO_IMAGE_KHR; @@ -1676,6 +1688,7 @@ dri2_destroy_image_khr(_EGLDriver *drv, _EGLDisplay *disp, _EGLImage *image) return EGL_TRUE; } +#ifdef HAVE_DRM_PLATFORM static _EGLImage * dri2_create_drm_image_mesa(_EGLDriver *drv, _EGLDisplay *disp, const EGLint *attr_list) @@ -1786,6 +1799,7 @@ dri2_export_drm_image_mesa(_EGLDriver *drv, _EGLDisplay *disp, _EGLImage *img, return EGL_TRUE; } +#endif #ifdef HAVE_WAYLAND_PLATFORM @@ -2020,8 +2034,10 @@ _eglBuiltInDriverDRI2(const char *args) dri2_drv-base.API.ReleaseTexImage = dri2_release_tex_image; dri2_drv-base.API.CreateImageKHR = dri2_create_image_khr; dri2_drv-base.API.DestroyImageKHR = dri2_destroy_image_khr; +#ifdef HAVE_DRM_PLATFORM dri2_drv-base.API.CreateDRMImageMESA = dri2_create_drm_image_mesa; dri2_drv-base.API.ExportDRMImageMESA = dri2_export_drm_image_mesa; +#endif #ifdef HAVE_WAYLAND_PLATFORM dri2_drv-base.API.BindWaylandDisplayWL = dri2_bind_wayland_display_wl; dri2_drv-base.API.UnbindWaylandDisplayWL = dri2_unbind_wayland_display_wl; diff --git a/src/egl/drivers/dri2/platform_x11.c b/src/egl/drivers/dri2/platform_x11.c index a518db1..c56a413 100644 --- a/src/egl/drivers/dri2/platform_x11.c +++ b/src/egl/drivers/dri2/platform_x11.c @@ -33,7 +33,9 @@ #include fcntl.h #include errno.h #include unistd.h +#ifdef HAVE_DRM_PLATFORM #include xf86drm.h +#endif #include sys/types.h #include sys/stat.h @@ -606,6 +608,7 @@ dri2_x11_authenticate(_EGLDisplay *disp, uint32_t id) static EGLBoolean dri2_authenticate(_EGLDisplay *disp) { +#ifdef HAVE_DRM_PLATFORM struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp); drm_magic_t magic; @@ -620,6 +623,9 @@ dri2_authenticate(_EGLDisplay *disp) } return EGL_TRUE; +#else + return EGL_FALSE; +#endif } static EGLBoolean ___ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev