treeform / pixie

Full-featured 2d graphics library for Nim.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Windows GCC error: Pixie doesn't work

exitcas opened this issue · comments

commented

Hi,

I've been having this weird problem.

I've been testing a lightly modified version of the 'Text spans' example. It works fine on GNU/Linux systems, but on Windows is seems to be a problem at the compiling level that I couldn't find out. I've tested with other examples and I got a similar result. This only seems to affect Nim scripts that use the Pixie library for some reason.

I don't know if this is some kind of bug, or some king of configuration from my part, I'll leave below the script I used originally and the compiler logs I got.

Thank you,

@exitcas.

Script:

import pixie

let image = newImage(400, 300)
image.fill(rgba(255, 255, 255, 255))

let typeface = readTypeface("archivo.ttf")

proc newFont(typeface: Typeface, size: float32, color: Color): Font =
  result = newFont(typeface)
  result.size = size
  result.paint.color = color

let spans = @[
  newSpan("[Text]", newFont(typeface, 15, color(0, 0, 0, 1)))
]

image.fillText(typeset(spans, vec2(400, 280)), translate(vec2(10, 10)))
image.writeFile("text_spans.png")

Logs:

E:\[directory where the script is located]>nim c generateCard.nim
Hint: used config file 'E:\Program Files\nim\config\nim.cfg' [Conf]
Hint: used config file 'E:\Program Files\nim\config\config.nims' [Conf]
.............................................................................................................................................................................
CC: stdlib_digitsutils.nim
CC: stdlib_assertions.nim
CC: stdlib_dollars.nim
CC: stdlib_widestrs.nim
CC: stdlib_io.nim
CC: stdlib_system.nim
CC: stdlib_math.nim
CC: stdlib_parseutils.nim
CC: stdlib_unicode.nim
CC: stdlib_strutils.nim
CC: C:/Users/[User]/.nimble/pkgs/vmath-1.2.0/vmath.nim
CC: C:/Users/[User]/.nimble/pkgs/bumpy-1.1.1/bumpy.nim
CC: C:/Users/[User]/.nimble/pkgs/chroma-0.2.7/chroma/colortypes.nim
CC: C:/Users/[User]/.nimble/pkgs/chroma-0.2.7/chroma/blends.nim
CC: stdlib_hashes.nim
CC: C:/Users/[User]/.nimble/pkgs/chroma-0.2.7/chroma/transformations.nim
CC: C:/Users/[User]/.nimble/pkgs/chroma-0.2.7/chroma.nim
CC: stdlib_dynlib.nim
CC: stdlib_winlean.nim
CC: stdlib_times.nim
CC: stdlib_win_setenv.nim
CC: stdlib_os.nim
CC: C:/Users/[User]/.nimble/pkgs/pixie-5.0.6/pixie/common.nim
CC: C:/Users/[User]/.nimble/pkgs/flatty-0.3.4/flatty/encode.nim
CC: C:/Users/[User]/.nimble/pkgs/pixie-5.0.6/pixie/blends.nim
CC: C:/Users/[User]/.nimble/pkgs/pixie-5.0.6/pixie/simd/sse2.nim
CC: C:/Users/[User]/.nimble/pkgs/nimsimd-1.2.4/nimsimd/runtimecheck.nim
CC: C:/Users/[User]/.nimble/pkgs/pixie-5.0.6/pixie/simd/avx2.nim
CC: C:/Users/[User]/.nimble/pkgs/pixie-5.0.6/pixie/simd.nim
CC: C:/Users/[User]/.nimble/pkgs/pixie-5.0.6/pixie/internal.nim
CC: C:/Users/[User]/.nimble/pkgs/pixie-5.0.6/pixie/images.nim
CC: C:/Users/[User]/.nimble/pkgs/pixie-5.0.6/pixie/paints.nim
CC: C:/Users/[User]/.nimble/pkgs/pixie-5.0.6/pixie/paths.nim
CC: C:/Users/[User]/.nimble/pkgs/pixie-5.0.6/pixie/fontformats/opentype.nim
CC: stdlib_streams.nim
CC: stdlib_lexbase.nim
CC: stdlib_parsexml.nim
CC: stdlib_strtabs.nim
CC: stdlib_xmltree.nim
CC: stdlib_xmlparser.nim
CC: C:/Users/[User]/.nimble/pkgs/pixie-5.0.6/pixie/fontformats/svgfont.nim
CC: C:/Users/[User]/.nimble/pkgs/pixie-5.0.6/pixie/fonts.nim
CC: C:/Users/[User]/.nimble/pkgs/pixie-5.0.6/pixie/fileformats/bmp.nim
CC: C:/Users/[User]/.nimble/pkgs/zippy-0.10.7/zippy/common.nim
CC: C:/Users/[User]/.nimble/pkgs/zippy-0.10.7/zippy/internal.nim
CC: C:/Users/[User]/.nimble/pkgs/zippy-0.10.7/zippy/bitstreams.nim
CC: C:/Users/[User]/.nimble/pkgs/zippy-0.10.7/zippy/adler32_simd.nim
CC: C:/Users/[User]/.nimble/pkgs/zippy-0.10.7/zippy/adler32.nim
CC: C:/Users/[User]/.nimble/pkgs/zippy-0.10.7/zippy/crc32_simd.nim
CC: C:/Users/[User]/.nimble/pkgs/zippy-0.10.7/zippy/crc.nim
CC: C:/Users/[User]/.nimble/pkgs/zippy-0.10.7/zippy/lz77.nim
CC: C:/Users/[User]/.nimble/pkgs/zippy-0.10.7/zippy/snappy.nim
CC: C:/Users/[User]/.nimble/pkgs/zippy-0.10.7/zippy/deflate.nim
CC: C:/Users/[User]/.nimble/pkgs/zippy-0.10.7/zippy.nim
CC: C:/Users/[User]/.nimble/pkgs/crunchy-0.1.8/crunchy/crc32_simd.nim
CC: C:/Users/[User]/.nimble/pkgs/crunchy-0.1.8/crunchy/crc32.nim
CC: C:/Users/[User]/.nimble/pkgs/crunchy-0.1.8/crunchy/sha256.nim
CC: C:/Users/[User]/.nimble/pkgs/pixie-5.0.6/pixie/fileformats/png.nim
CC: C:/Users/[User]/.nimble/pkgs/pixie-5.0.6/pixie/fileformats/ppm.nim
CC: C:/Users/[User]/.nimble/pkgs/pixie-5.0.6/pixie/fileformats/qoi.nim
CC: C:/Users/[User]/.nimble/pkgs/pixie-5.0.6/pixie.nim
CC: generateCard.nim
In file included from e:\program files\nim\dist\mingw64\lib\gcc\x86_64-w64-mingw32\11.1.0\include\immintrin.h:43,
                 from C:\Users\[User]\nimcache\generateCard_d\@mgenerateCard.nim.c:9:
C:\Users\[User]\nimcache\generateCard_d\@mgenerateCard.nim.c: In function 'fillUnsafeAvx_generate67ard_16':
e:\program files\nim\dist\mingw64\lib\gcc\x86_64-w64-mingw32\11.1.0\include\avxintrin.h:1326:1: error: inlining failed in call to 'always_inline' '_mm256_set1_epi32': target specific option mismatch
 1326 | _mm256_set1_epi32 (int __A)
      | ^~~~~~~~~~~~~~~~~
C:\Users\[User]\nimcache\generateCard_d\@mgenerateCard.nim.c:598:20: note: called from here
  598 |         colorVec = _mm256_set1_epi32(LOC5.dest);
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from e:\program files\nim\dist\mingw64\lib\gcc\x86_64-w64-mingw32\11.1.0\include\immintrin.h:43,
                 from C:\Users\[User]\nimcache\generateCard_d\@mgenerateCard.nim.c:9:
e:\program files\nim\dist\mingw64\lib\gcc\x86_64-w64-mingw32\11.1.0\include\avxintrin.h:921:1: error: inlining failed in call to 'always_inline' '_mm256_store_si256': target specific option mismatch
  921 | _mm256_store_si256 (__m256i *__P, __m256i __A)
      | ^~~~~~~~~~~~~~~~~~
C:\Users\[User]\nimcache\generateCard_d\@mgenerateCard.nim.c:618:33: note: called from here
  618 |                                 _mm256_store_si256(((void*) (p)), colorVec);
      |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error: execution of an external compiler program '"E:\Program Files\Nim\dist\mingw64\bin\gcc.exe" -c  -w -fmax-errors=3 -mno-ms-bitfields -DWIN32_LEAN_AND_MEAN   -I"E:\Program Files\nim\lib" -IE:\[directory where the script is located] -o C:\Users\[User]\nimcache\generateCard_d\@mgenerateCard.nim.c.o C:\Users\[User]\nimcache\generateCard_d\@mgenerateCard.nim.c' failed with exit code: 1



E:\[directory where the script is located]>nim c generateCard.nim
Hint: used config file 'E:\Program Files\nim\config\nim.cfg' [Conf]
Hint: used config file 'E:\Program Files\nim\config\config.nims' [Conf]
.............................................................................................................................................................................
CC: stdlib_system.nim
CC: C:/Users/[User]/.nimble/pkgs/pixie-5.0.6/pixie/fonts.nim
CC: generateCard.nim
In file included from e:\program files\nim\dist\mingw64\lib\gcc\x86_64-w64-mingw32\11.1.0\include\immintrin.h:43,
                 from C:\Users\[User]\nimcache\generateCard_d\@mgenerateCard.nim.c:9:
C:\Users\[User]\nimcache\generateCard_d\@mgenerateCard.nim.c: In function 'fillUnsafeAvx_generate67ard_16':
e:\program files\nim\dist\mingw64\lib\gcc\x86_64-w64-mingw32\11.1.0\include\avxintrin.h:1326:1: error: inlining failed in call to 'always_inline' '_mm256_set1_epi32': target specific option mismatch
 1326 | _mm256_set1_epi32 (int __A)
      | ^~~~~~~~~~~~~~~~~
C:\Users\[User]\nimcache\generateCard_d\@mgenerateCard.nim.c:599:20: note: called from here
  599 |         colorVec = _mm256_set1_epi32(LOC5.dest);
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from e:\program files\nim\dist\mingw64\lib\gcc\x86_64-w64-mingw32\11.1.0\include\immintrin.h:43,
                 from C:\Users\[User]\nimcache\generateCard_d\@mgenerateCard.nim.c:9:
e:\program files\nim\dist\mingw64\lib\gcc\x86_64-w64-mingw32\11.1.0\include\avxintrin.h:921:1: error: inlining failed in call to 'always_inline' '_mm256_store_si256': target specific option mismatch
  921 | _mm256_store_si256 (__m256i *__P, __m256i __A)
      | ^~~~~~~~~~~~~~~~~~
C:\Users\[User]\nimcache\generateCard_d\@mgenerateCard.nim.c:619:33: note: called from here
  619 |                                 _mm256_store_si256(((void*) (p)), colorVec);
      |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error: execution of an external compiler program '"E:\Program Files\Nim\dist\mingw64\bin\gcc.exe" -c  -w -fmax-errors=3 -mno-ms-bitfields -DWIN32_LEAN_AND_MEAN   -I"E:\Program Files\nim\lib" -IE:\[directory where the script is located] -o C:\Users\[User]\nimcache\generateCard_d\@mgenerateCard.nim.c.o C:\Users\[User]\nimcache\generateCard_d\@mgenerateCard.nim.c' failed with exit code: 1

That is very strange we test on Windows with GCC on every commit.

inlining failed in call to 'always_inline' '_mm256_set1_epi32': target specific option mismatch

I would try compiling without --d:pixieNoSimd ? Maybe your computer does not support AVX simd or your gcc is very old?