Bug 105721

Summary: [g33] piglit intermittent failure on spec.apple_object_purgeable.object_purgeable-api-vbo
Product: Mesa Reporter: Clayton Craft <clayton.a.craft>
Component: Drivers/DRI/i965Assignee: Intel 3D Bugs Mailing List <intel-3d-bugs>
Status: RESOLVED MOVED QA Contact: Intel 3D Bugs Mailing List <intel-3d-bugs>
Severity: normal    
Priority: medium    
Version: git   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Clayton Craft 2018-03-23 18:49:55 UTC
stdout from failing test:

Mesa: User error: GL_INVALID_VALUE in glObjectPurgeable(name = 0x0)
Mesa: User error: GL_INVALID_VALUE in glObjectUnpurgeable(name = 0x0)
Mesa: User error: GL_INVALID_VALUE in glGetObjectParameteriv(name = 0x0)
Mesa: User error: GL_INVALID_OPERATION in glObjectPurgeable(name = 0x1) is already purgeable
Mesa: User error: GL_INVALID_OPERATION in glObjectUnpurgeable(name = 0x1) object is  already "unpurged"
Mesa: User error: GL_INVALID_OPERATION in glObjectPurgeable(name = 0x1) is already purgeable
glObjectUnpurgeableAPPLE:GL_UNDEFINED_APPLE: expected 0x8a1c (GL_UNDEFINED_APPLE), got 0x8a1b (GL_RETAINED_APPLE).Mesa: User error: GL_INVALID_OPERATION in glObjectUnpurgeable(name = 0x1) object is  already "unpurged"
Comment 1 Chris Wilson 2018-03-26 13:00:12 UTC
Fwiw, pull the fixes from i965:

commit ed442ee39b4e2a2e25ea4ccd880e4bded9d29a51
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Tue Jan 10 21:23:24 2017 +0000

    i965: Do not use purged bo after calling glObjectUnpurgeable
    
    If the buffer has been freed by the kernel under memory pressure, it is
    invalid to try and access the backing storage for that buffer in the
    future - the backing storage is not recreated automatically. As such we
    need to mark the GL object as being freed for unretained buffers and so
    recreate the object on next use.
    
    Futhermore from the GL_APPLE_object_purgeable:
    
        "In contrast, by calling ObjectUnpurgeableAPPLE with an <option> of
        UNDEFINED_APPLE, the application is indicating that it intends to
        recreate the contents of the storage from scratch.  Further, the
        application is is stating that it would like the GL to do only the
        minimal amount of work set PURGEABLE_APPLE to FALSE.   If
        ObjectUnpurgeableAPPLE is called with the <option> set to
        UNDEFINED_APPLE, then ObjectUnpurgeableAPPLE will return the value
        UNDEFINED_APPLE."
    
    we must always report GL_UNDEFINED_APPLE when called with
    glObjectUnpurgeable(GL_UNDEFINED_APPLE).
    
    Testcase: piglit/object_purgeable-api-*
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Comment 2 GitLab Migration User 2019-09-25 19:10:18 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/mesa/mesa/issues/1708.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.