Bug 49894 - [IVB ILK]Oglc drawbuffer(basic.allCases) regressed
Summary: [IVB ILK]Oglc drawbuffer(basic.allCases) regressed
Status: CLOSED WONTFIX
Alias: None
Product: Mesa
Classification: Unclassified
Component: Drivers/DRI/i965 (show other bugs)
Version: git
Hardware: All Linux (All)
: medium normal
Assignee: Ian Romanick
QA Contact: Intel 3D Bugs Mailing List
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-05-14 02:03 UTC by lu hua
Modified: 2015-06-16 02:39 UTC (History)
3 users (show)

See Also:
i915 platform:
i915 features:


Attachments

Description lu hua 2012-05-14 02:03:14 UTC
System Environment:
--------------------------
Arch:           x86_64
Platform:       Ivybridge
Libdrm:		(master)2.4.33-20-gd72a44c7c4f5eea9c1e5bb0c36cb9e0224b9ca22
Mesa:		(master)729d9148244551c6bcae00a760f39a6902c925ef
Xserver:	(master)xorg-server-1.12.0-136-ge501c34d4937d5e6f19abd29f1ec7f95faa3bb55
Xf86_video_intel:(master)2.19.0-36-ga3d37fb29f8dffb0e370ad95783994aaa7eccfaf
Libva:		(vaapi-ext)f12f80371fb534e6bbf248586b3c17c298a31f4e
Libva_intel_driver:(vaapi-ext)82fa52510a37ab645daaa3bb7091ff5096a20d0b
Kernel:	(drm-intel-next-queued) 38e490fea7d2885d79fcd1ca37edb64e489d470d

Bug detailed description:
------------------------- 
It failed on Ivybridge and Ironlake with mesa master branch. It doesn't happen on mesa 8.0 branch.
The last known good commit:c19672f90a653a8bd6adcc35e294b7150b34f9e7
The last known bad commit: 729d9148244551c6bcae00a760f39a6902c925ef

Reproduce steps:
----------------
1. start X
2. ./oglconform -z -suite all -v 2 -D 123 -test drawbuffer basic.allCases
Comment 1 Eric Anholt 2012-06-01 13:15:55 UTC
Note that this failure is visual-dependent.  I reproduce failure with 123 or 143 on both the good and bad commits cited on my ivb system, but not 139, for example.  Can you reproduce the problem with 123 on the bad commit currently?

Also, I note that you're not passing -s to your test arguments.  If you're missing that in your test harness, it means you're repeating a set of tests for every test invocation.

You also probably want to use -minFmt instead of a specific -D argument, which should be more resilient to changes in the list of visuals.
Comment 2 Shuang He 2012-06-04 00:56:19 UTC
(In reply to comment #1)
> Note that this failure is visual-dependent.  I reproduce failure with 123 or
> 143 on both the good and bad commits cited on my ivb system, but not 139, for
> example.  Can you reproduce the problem with 123 on the bad commit currently?

Is it better to list the visual property like following, which may have more accurate description
"24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow"

> 
> Also, I note that you're not passing -s to your test arguments.  If you're
> missing that in your test harness, it means you're repeating a set of tests for
> every test invocation.

Just FYI, latest Oglconform has its '-s' meaning reverted

> 
> You also probably want to use -minFmt instead of a specific -D argument, which
> should be more resilient to changes in the list of visuals.

We're now using different method to work around this, actually we're always trying to find a visual has property like "24 tc  0  32  0 r  y .   8  8  8  8 .  .  0 24  8 16 16 16 16  0 0 Slow", since visual numbers seem changing by some condition. By doing this, it will be easier for us to compare results across different platforms, and different versions.
Comment 3 Kenneth Graunke 2012-08-05 08:05:00 UTC
It appears that the 8 passing FBConfigs are single-buffered, while the 24 failing FBConfigs are double-buffered.
Comment 4 Kenneth Graunke 2012-08-05 08:21:48 UTC
Basically, it looks like we're not flushing out changes to the front buffer at the necessary time.

Running this test in Valgrind produces some interesting data:

==9385== Invalid read of size 8
==9385==    at 0x73F4F4E: dri2FlushFrontBuffer (dri2_glx.c:608)
==9385==    by 0x86BEB9C: intel_flush_front (intel_context.c:222)
==9385==    by 0x86BF166: intel_glFlush (intel_context.c:466)
==9385==    by 0x8A3D401: _mesa_flush (context.c:1671)
==9385==    by 0x8A3CE35: _mesa_make_current (context.c:1448)
==9385==    by 0x86BFE9A: intelUnbindContext (intel_context.c:756)
==9385==    by 0x8762939: driUnbindContext (dri_util.c:393)
==9385==    by 0x73F4340: dri2_unbind_context (dri2_glx.c:177)
==9385==    by 0x73BD924: MakeContextCurrent (glxcurrent.c:255)
==9385==    by 0x157FED6: Context::make_current(Drawable_ const&) const (windowing.cpp:1378)
==9385==    by 0x15B667E: (anonymous namespace)::run_schedule(Display_ const&, boost::shared_ptr<FbConfig>, std::vector<std::pair<std::string, std::string>, std::allocator<std::pair<std::string, std::string> > > const&, std::vector<driverRec*, std::allocator<driverRec*> > const&, std::vector<boost::shared_ptr<PrePostAction>, std::allocator<boost::shared_ptr<PrePostAction> > > const&, std::vector<boost::shared_ptr<PrePostTestAction>, std::allocator<boost::shared_ptr<PrePostTestAction> > > const&, std::vector<boost::shared_ptr<PrePostTestcaseAction>, std::allocator<boost::shared_ptr<PrePostTestcaseAction> > > const&) (executer.cpp:186)
==9385==    by 0x15B5FC6: ExecutionManager::execute_schedules() (executer.cpp:57)
==9385==  Address 0x727fcd8 is 24 bytes inside a block of size 208 free'd
==9385==    at 0x4C29BBE: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==9385==    by 0x73F47AD: dri2DestroyDrawable (dri2_glx.c:343)
==9385==    by 0x73ED567: DestroyDRIDrawable (glx_pbuffer.c:230)
==9385==    by 0x73EDC7F: DestroyDrawable (glx_pbuffer.c:468)
==9385==    by 0x73EE58B: glXDestroyWindow (glx_pbuffer.c:938)
==9385==    by 0x157F1AA: Drawable_::~Drawable_() (windowing.cpp:1229)
==9385==    by 0x15B7F88: void boost::checked_delete<Drawable_>(Drawable_*) (checked_delete.hpp:34)
==9385==    by 0x15B83E1: boost::detail::sp_counted_impl_p<Drawable_>::dispose() (sp_counted_impl.hpp:78)
==9385==    by 0x52D1FD: boost::detail::sp_counted_base::release() (sp_counted_base_gcc_x86.hpp:145)
==9385==    by 0x52D276: boost::detail::shared_count::~shared_count() (shared_count.hpp:305)
==9385==    by 0x7EA0E3: boost::shared_ptr<Drawable_>::~shared_ptr() (shared_ptr.hpp:164)
==9385==    by 0x15B688B: (anonymous namespace)::run_schedule(Display_ const&, boost::shared_ptr<FbConfig>, std::vector<std::pair<std::string, std::string>, std::allocator<std::pair<std::string, std::string> > > const&, std::vector<driverRec*, std::allocator<driverRec*> > const&, std::vector<boost::shared_ptr<PrePostAction>, std::allocator<boost::shared_ptr<PrePostAction> > > const&, std::vector<boost::shared_ptr<PrePostTestAction>, std::allocator<boost::shared_ptr<PrePostTestAction> > > const&, std::vector<boost::shared_ptr<PrePostTestcaseAction>, std::allocator<boost::shared_ptr<PrePostTestcaseAction> > > const&) (executer.cpp:248)

In other words, it looks like we're trying to flush after we delete the buffer.  That would be worth fixing.  However, since this is not an actual regression, a conformance test, and only seems to fail with front buffer rendering (seriously! who uses that?), I'm demoting this bug.
Comment 5 Gordon Jin 2015-06-16 02:39:34 UTC
closing as won't fix.


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.