Hi everyone,

Thanks a lot for all your inputs!

This was indeed a GPU related memory error, which was resolved once I 
realized OpenGL was configured to use the onboard Intel chipset instead of 
the NVIDIA card. Just for reference: the NVIDIA graphics card can be 
selected through NVIDIA settings > Manage 3D Settings > Program Settings, 
where I added Python as a new program and selected "High-performance NVIDIA 
processor" as the preferred graphics processor.

Hence, I consider this issue closed.

Best regards
Manuel

Am Montag, 27. Februar 2017 06:12:03 UTC+1 schrieb Benjamin Moran:
>
> Hi guys, 
>
> To follow up with what Richard said, this is very likely a GPU related 
> memory error. Unfortunately It's hard to say where the issue lies because a 
> lot is abstracted with OpenGL drivers, and they tend to fudge a lot of 
> things behind the scenes (especially with mobile chipsets). 
>
> Just for fun, here's an example of trying to make a texture that my GPU 
> says it can handle, but doesn't actually have the ability to create. 
> (Notice the two different exceptions): 
> >>> pyglet.image.Texture.create(16384, 16384)
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File 
> "/home/ben/Documents/PycharmProjects/pyglet/pyglet/image/__init__.py", 
> line 1519, in create
>     blank)
>   File "/home/ben/Documents/PycharmProjects/pyglet/pyglet/gl/lib.py", 
> line 105, in errcheck
>     raise GLException(msg)
> pyglet.gl.lib.GLException: b'out of memory'
> >>> 
> >>> 
> >>> pyglet.image.Texture.create(16384, 16384)
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File 
> "/home/ben/Documents/PycharmProjects/pyglet/pyglet/image/__init__.py", 
> line 1513, in create
>     blank = (GLubyte * (texture_width * texture_height * 4))()
> MemoryError
> >>> 
>
>
>
>
>
> On Monday, February 27, 2017 at 6:54:27 AM UTC+9, Manuel Kaufmann wrote:
>>
>> By mere chance I found out about the python -m pyglet.info command, 
>> which revealed that the program was actually using my onboard Intel 
>> Chipset, instead of the also available NVIDIA GeForce GT 650M. I changed 
>> that in the NVIDIA Settings and now the program runs through without a 
>> problem ... This is weird though, as I thought the memory problems I 
>> described happened on the host, not on the device?
>>
>> Am Sonntag, 26. Februar 2017 22:26:06 UTC+1 schrieb Manuel Kaufmann:
>>>
>>> @Richard Jones: I'm running on Windows 10 with 8 GB RAM. Taskmanager is 
>>> telling me that 3.9 GB are available, details of that showing that 3.1 GB 
>>> is on standby and 0.8 GB is actually free. So, it is possible that I'm 
>>> running into memory issues, especially if the allocated memory chunk must 
>>> be contiguous, but it would surprise me a bit, though (?). I just restarted 
>>> the computer, ran only the program in question and still got the same 
>>> error. Also, if I can open three meshes of similar sizes using Meshlab must 
>>> mean that somehow the needed resources are available (of course Meshalb is 
>>> probably much more optimized than my code, but still ...)
>>>
>>> Am Sonntag, 26. Februar 2017 22:04:30 UTC+1 schrieb Richard Jones:
>>>>
>>>> That MemoryError looks like a ctypes-level error since the line in 
>>>> question is just trying to allocate a GLubyte array in ctypes. I guess 
>>>> something is getting cranky at you trying to allocate a 256MB memory 
>>>> chunk. Are you perhaps actually running into memory exhaustion on your 
>>>> system? Assuming that texture_width and texture_height are what you're 
>>>> expecting, that is. 
>>>>
>>>> On 27 February 2017 at 07:56, Manuel Kaufmann <[email protected]> 
>>>> wrote: 
>>>> > Thanks for your answer @claudio canepa. I'm not sure if this patch 
>>>> would fix 
>>>> > my problem. I tried it ad hoc and the memory error was not thrown in 
>>>> > _ensure_string_data anymore, but later in the _convert method when 
>>>> calling 
>>>> > data = asbytes('').join(rows) on line 1068. 
>>>> > 
>>>> > I tried out some more stuff and called e.g. get_data() before calling 
>>>> > get_texture() just to see what happens: 
>>>> > 
>>>> > data = self._image.get_data('BGR', self._image.width*3) 
>>>> > self._texture = self._image.get_texture() 
>>>> > 
>>>> > The call to get_data() forces a conversion, because the original 
>>>> pitch after 
>>>> > loading the image is negative. This conversion runs through 
>>>> successfully it 
>>>> > seems but the subsequent call to get_texture() now breaks at another 
>>>> point: 
>>>> > 
>>>> >     self._texture = self._image.get_texture() 
>>>> >   File "D:\Python27\lib\site-packages\pyglet\image\__init__.py", line 
>>>> 818, 
>>>> > in get_texture 
>>>> >     force_rectangle) 
>>>> >   File "D:\Python27\lib\site-packages\pyglet\image\__init__.py", line 
>>>> 803, 
>>>> > in create_texture 
>>>> >     rectangle, force_rectangle) 
>>>> >   File "D:\Python27\lib\site-packages\pyglet\image\__init__.py", line 
>>>> 1508, 
>>>> > in create 
>>>> >     blank = (GLubyte * (texture_width * texture_height * 4))() 
>>>> > MemoryError 
>>>> > 
>>>> > I.e., it throws an error when it tries to allocate a blank data 
>>>> buffer of 
>>>> > the required texture size ... What is this MemoryError anyway? Does 
>>>> it come 
>>>> > from Pyglet, from OpenGL, from the ctypes module? 
>>>> > 
>>>> > Am Sonntag, 26. Februar 2017 19:06:40 UTC+1 schrieb claudio canepa: 
>>>> >> 
>>>> >> As a long shot you may try with the  patch in 
>>>> >> https://code.google.com/archive/p/pyglet/issues/752 
>>>> >> It probably not address directly your problem, but as it eliminates 
>>>> a 
>>>> >> buffer copy... 
>>>> >> 
>>>> >> On Sun, Feb 26, 2017 at 10:36 AM, Manuel Kaufmann <
>>>> [email protected]> 
>>>> >> wrote: 
>>>> >>> 
>>>> >>> Hi, 
>>>> >>> 
>>>> >>> I am using Pyglet 1.2.4 to render a texturized 3D Mesh composed of 
>>>> >>> triangles and stored as an OBJ file. The mesh is not small, but 
>>>> also not 
>>>> >>> extremely huge: It takes up about 52 MB on the harddisk and 
>>>> consists of 
>>>> >>> roughly 800'000 faces (~ 366'500 vertices). The texture is 
>>>> available as a 
>>>> >>> .jpeg, takes up about 6.5 MB on the harddisk and its resolution is 
>>>> >>> 8192x8192. 
>>>> >>> 
>>>> >>> In order to upload the texture to the GPU, I do the following: 
>>>> >>> 
>>>> >>> self._image = pyglet.image.load(image_path) 
>>>> >>> 
>>>> >>> ... 
>>>> >>> self._texture = self._image.get_texture() 
>>>> >>> 
>>>> >>> which sometimes throws the following error: 
>>>> >>> 
>>>> >>> ... 
>>>> >>>     self._texture = self._image.get_texture() 
>>>> >>>   File "D:\Python27\lib\site-packages\pyglet\image\__init__.py", 
>>>> line 
>>>> >>> 818, in get_texture 
>>>> >>>     force_rectangle) 
>>>> >>>   File "D:\Python27\lib\site-packages\pyglet\image\__init__.py", 
>>>> line 
>>>> >>> 809, in create_texture 
>>>> >>>     self.anchor_x, self.anchor_y, 0, None) 
>>>> >>>   File "D:\Python27\lib\site-packages\pyglet\image\__init__.py", 
>>>> line 
>>>> >>> 953, in blit_to_texture 
>>>> >>>     data = self._convert(data_format, data_pitch) 
>>>> >>>   File "D:\Python27\lib\site-packages\pyglet\image\__init__.py", 
>>>> line 
>>>> >>> 1008, in _convert 
>>>> >>>     self._ensure_string_data() 
>>>> >>>   File "D:\Python27\lib\site-packages\pyglet\image\__init__.py", 
>>>> line 
>>>> >>> 1076, in _ensure_string_data 
>>>> >>>     self._current_data = buf.raw 
>>>> >>> MemoryError 
>>>> >>> 
>>>> >>> I tried to find out why this happens, but to no avail. I know that 
>>>> the 
>>>> >>> computer I am using is powerful enough to handle mesh sizes like 
>>>> that, both 
>>>> >>> because the error only happens sometimes and because I can 
>>>> visualize it 
>>>> >>> without problems using programs like e.g. Meshlab. Any help/hints 
>>>> how I can 
>>>> >>> resolve or further debug this are greatly appreciated! 
>>>> >>> 
>>>> >>> Thanks a lot and best regards 
>>>> >>> Manuel 
>>>> >>> 
>>>> >>> -- 
>>>> >>> You received this message because you are subscribed to the Google 
>>>> Groups 
>>>> >>> "pyglet-users" group. 
>>>> >>> To unsubscribe from this group and stop receiving emails from it, 
>>>> send an 
>>>> >>> email to [email protected]. 
>>>> >>> To post to this group, send email to [email protected]. 
>>>> >>> Visit this group at https://groups.google.com/group/pyglet-users. 
>>>> >>> For more options, visit https://groups.google.com/d/optout. 
>>>> >> 
>>>> >> 
>>>> > -- 
>>>> > You received this message because you are subscribed to the Google 
>>>> Groups 
>>>> > "pyglet-users" group. 
>>>> > To unsubscribe from this group and stop receiving emails from it, 
>>>> send an 
>>>> > email to [email protected]. 
>>>> > To post to this group, send email to [email protected]. 
>>>> > Visit this group at https://groups.google.com/group/pyglet-users. 
>>>> > For more options, visit https://groups.google.com/d/optout. 
>>>>
>>>

-- 
You received this message because you are subscribed to the Google Groups 
"pyglet-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/pyglet-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to