I looked at the appveyor log for that specific build https://ci.appveyor.com/project/mesa3d/mesa/build/3186
It seems to only complain about disk_cache.c src\util\disk_cache.c(28) : fatal error C1083: Cannot open include file: 'sys/file.h': No such file or directory scons: *** [build\windows-x86-debug\util\disk_cache.obj] Error 2 scons: building terminated because of errors. Found this on https://stackoverflow.com/questions/2537960/windows-sys-file-h-equivalent For the benefit of posterity, <sys/file.h> is the BSD version of low-level file I/O routines. Depending upon your compiler installation and build environment, you'll probably want <fcntl.h> instead. Most of the usual I/O routines are in <stdio.h>, even setvbuf() which is pretty low-level control. You'll want <windows.h> or <conio.h> if you want I/O routines/settings that don't normally exist under Linux (or the other *NICES). Am 17.05.2018 um 12:28 schrieb Tapani Pälli: > > > On 05/17/2018 11:38 AM, Benedikt Schemmer wrote: >> Thanks for reviewing! >> >> Am 17.05.2018 um 08:42 schrieb Tapani Pälli: >>> >>> >>> On 05/10/2018 12:05 PM, Benedikt Schemmer wrote: >>>> Move shader-cache code from back to front and make generate_sha1() usable >>>> unconditionally to avoid code duplication in the following patch >>>> >>>> --- >>>> src/mesa/main/shaderapi.c | 228 >>>> +++++++++++++++++++++++----------------------- >>>> 1 file changed, 116 insertions(+), 112 deletions(-) >>>> >>>> diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c >>>> index 44b18af492..e8acca4490 100644 >>>> --- a/src/mesa/main/shaderapi.c >>>> +++ b/src/mesa/main/shaderapi.c >>>> @@ -64,6 +64,122 @@ >>>> #include "util/mesa-sha1.h" >>>> #include "util/crc32.h" >>>> >>>> + >>>> +/** >>>> + * Generate a SHA-1 hash value string for given source string. >>>> + */ >>>> +static void >>>> +generate_sha1(const char *source, char sha_str[64]) >>>> +{ >>>> + unsigned char sha[20]; >>>> + _mesa_sha1_compute(source, strlen(source), sha); >>>> + _mesa_sha1_format(sha_str, sha); >>>> +} >>> >>> There is one potential problem here. The 'ENABLE_SHADER_CACHE' guard for >>> generate_sha1 and others was placed there because the imported sha1 code >>> broke windows build, I'm wondering if this is still >>> the case? If so, then generate_sha1 should be inside ENABLE_SHADER_CACHE >>> guard. >>> >> >> I did a quick >> gedit $(grep -Rlsi "_mesa_sha1_compute" | grep -E "\.c|\.h") >> >> and it seems radv and anv use _mesa_sha1_compute (and _mesa_sha1_format) >> without a guard >> best example from Intel seems to be brw_disk_cache.c which uses it alot >> outside of the ENABLE_SHADER_CACHE guard >> >> so probably safe? > > AFAIK none of those things are compiled on windows. IIUC windows builds are > about Mesa core and gallium side. > >>>> + >>>> + >>>> +#ifdef ENABLE_SHADER_CACHE >>>> +/** >>>> + * Construct a full path for shader replacement functionality using >>>> + * following format: >>>> + * >>>> + * <path>/<stage prefix>_<CHECKSUM>.glsl >>>> + */ >>>> +static char * >>>> +construct_name(const gl_shader_stage stage, const char *source, >>>> + const char *path) >>>> +{ >>>> + char sha[64]; >>>> + static const char *types[] = { >>>> + "VS", "TC", "TE", "GS", "FS", "CS", >>>> + }; >>>> + >>>> + generate_sha1(source, sha); >>>> + return ralloc_asprintf(NULL, "%s/%s_%s.glsl", path, types[stage], sha); >>>> +} >>>> + >>>> +/** >>>> + * Write given shader source to a file in MESA_SHADER_DUMP_PATH. >>>> + */ >>>> +static void >>>> +dump_shader(const gl_shader_stage stage, const char *source) >>>> +{ >>>> + static bool path_exists = true; >>>> + char *dump_path; >>>> + FILE *f; >>>> + >>>> + if (!path_exists) >>>> + return; >>>> + >>>> + dump_path = getenv("MESA_SHADER_DUMP_PATH"); >>>> + if (!dump_path) { >>>> + path_exists = false; >>>> + return; >>>> + } >>>> + >>>> + char *name = construct_name(stage, source, dump_path); >>>> + >>>> + f = fopen(name, "w"); >>>> + if (f) { >>>> + fputs(source, f); >>>> + fclose(f); >>>> + } else { >>>> + GET_CURRENT_CONTEXT(ctx); >>>> + _mesa_warning(ctx, "could not open %s for dumping shader (%s)", >>>> name, >>>> + strerror(errno)); >>>> + } >>>> + ralloc_free(name); >>>> +} >>>> + >>>> +/** >>>> + * Read shader source code from a file. >>>> + * Useful for debugging to override an app's shader. >>>> + */ >>>> +static GLcharARB * >>>> +read_shader(const gl_shader_stage stage, const char *source) >>>> +{ >>>> + char *read_path; >>>> + static bool path_exists = true; >>>> + int len, shader_size = 0; >>>> + GLcharARB *buffer; >>>> + FILE *f; >>>> + >>>> + if (!path_exists) >>>> + return NULL; >>>> + >>>> + read_path = getenv("MESA_SHADER_READ_PATH"); >>>> + if (!read_path) { >>>> + path_exists = false; >>>> + return NULL; >>>> + } >>>> + >>>> + char *name = construct_name(stage, source, read_path); >>>> + f = fopen(name, "r"); >>>> + ralloc_free(name); >>>> + if (!f) >>>> + return NULL; >>>> + >>>> + /* allocate enough room for the entire shader */ >>>> + fseek(f, 0, SEEK_END); >>>> + shader_size = ftell(f); >>>> + rewind(f); >>>> + assert(shader_size); >>>> + >>>> + /* add one for terminating zero */ >>>> + shader_size++; >>>> + >>>> + buffer = malloc(shader_size); >>>> + assert(buffer); >>>> + >>>> + len = fread(buffer, 1, shader_size, f); >>>> + buffer[len] = 0; >>>> + >>>> + fclose(f); >>>> + >>>> + return buffer; >>>> +} >>>> + >>>> +#endif /* ENABLE_SHADER_CACHE */ >>>> + >>>> /** >>>> * Return mask of GLSL_x flags by examining the MESA_GLSL env var. >>>> */ >>>> @@ -1775,119 +1891,7 @@ _mesa_LinkProgram(GLuint programObj) >>>> link_program_error(ctx, shProg); >>>> } >>>> >>>> -#ifdef ENABLE_SHADER_CACHE >>>> -/** >>>> - * Generate a SHA-1 hash value string for given source string. >>>> - */ >>>> -static void >>>> -generate_sha1(const char *source, char sha_str[64]) >>>> -{ >>>> - unsigned char sha[20]; >>>> - _mesa_sha1_compute(source, strlen(source), sha); >>>> - _mesa_sha1_format(sha_str, sha); >>>> -} >>>> - >>>> -/** >>>> - * Construct a full path for shader replacement functionality using >>>> - * following format: >>>> - * >>>> - * <path>/<stage prefix>_<CHECKSUM>.glsl >>>> - */ >>>> -static char * >>>> -construct_name(const gl_shader_stage stage, const char *source, >>>> - const char *path) >>>> -{ >>>> - char sha[64]; >>>> - static const char *types[] = { >>>> - "VS", "TC", "TE", "GS", "FS", "CS", >>>> - }; >>>> - >>>> - generate_sha1(source, sha); >>>> - return ralloc_asprintf(NULL, "%s/%s_%s.glsl", path, types[stage], sha); >>>> -} >>>> - >>>> -/** >>>> - * Write given shader source to a file in MESA_SHADER_DUMP_PATH. >>>> - */ >>>> -static void >>>> -dump_shader(const gl_shader_stage stage, const char *source) >>>> -{ >>>> - static bool path_exists = true; >>>> - char *dump_path; >>>> - FILE *f; >>>> - >>>> - if (!path_exists) >>>> - return; >>>> - >>>> - dump_path = getenv("MESA_SHADER_DUMP_PATH"); >>>> - if (!dump_path) { >>>> - path_exists = false; >>>> - return; >>>> - } >>>> - >>>> - char *name = construct_name(stage, source, dump_path); >>>> - >>>> - f = fopen(name, "w"); >>>> - if (f) { >>>> - fputs(source, f); >>>> - fclose(f); >>>> - } else { >>>> - GET_CURRENT_CONTEXT(ctx); >>>> - _mesa_warning(ctx, "could not open %s for dumping shader (%s)", >>>> name, >>>> - strerror(errno)); >>>> - } >>>> - ralloc_free(name); >>>> -} >>>> - >>>> -/** >>>> - * Read shader source code from a file. >>>> - * Useful for debugging to override an app's shader. >>>> - */ >>>> -static GLcharARB * >>>> -read_shader(const gl_shader_stage stage, const char *source) >>>> -{ >>>> - char *read_path; >>>> - static bool path_exists = true; >>>> - int len, shader_size = 0; >>>> - GLcharARB *buffer; >>>> - FILE *f; >>>> - >>>> - if (!path_exists) >>>> - return NULL; >>>> >>>> - read_path = getenv("MESA_SHADER_READ_PATH"); >>>> - if (!read_path) { >>>> - path_exists = false; >>>> - return NULL; >>>> - } >>>> - >>>> - char *name = construct_name(stage, source, read_path); >>>> - f = fopen(name, "r"); >>>> - ralloc_free(name); >>>> - if (!f) >>>> - return NULL; >>>> - >>>> - /* allocate enough room for the entire shader */ >>>> - fseek(f, 0, SEEK_END); >>>> - shader_size = ftell(f); >>>> - rewind(f); >>>> - assert(shader_size); >>>> - >>>> - /* add one for terminating zero */ >>>> - shader_size++; >>>> - >>>> - buffer = malloc(shader_size); >>>> - assert(buffer); >>>> - >>>> - len = fread(buffer, 1, shader_size, f); >>>> - buffer[len] = 0; >>>> - >>>> - fclose(f); >>>> - >>>> - return buffer; >>>> -} >>>> - >>>> -#endif /* ENABLE_SHADER_CACHE */ >>>> >>>> /** >>>> * Called via glShaderSource() and glShaderSourceARB() API functions. >>>> _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev