microsoft / angle

ANGLE: OpenGL ES to DirectX translation
Other
615 stars 166 forks source link

ANGLE does not support negative values for glViewport in level_9_3 for Window Phone #18

Closed stammen closed 10 years ago

stammen commented 10 years ago

From cocos2d-x issue https://github.com/MSOpenTech/cocos2d-x/issues/38

I think that the problem is in glViewport in kResolutionNoBorder it will recieve negative x or y and then this values will be redirected to RSSetViewports which in some configurations can not process negative numbers (it is stated in the docs http://msdn.microsoft.com/en-us/library/windows/desktop/ff476260%28v=vs.85%29.aspx ). I have such issue when was porting cocos2d-x for WinRT. On emulator this worked OK as DirectX on pc supports negative numbers while the real device had bugs as it do not support negative numbers.

Is there some way for ANGLE to handle negative values in glViewPort?

austinkinross commented 10 years ago

It's currently not supported on all Feature Level 9_3 devices. We'll have to investigate emulating it via shader tricks. I believe that the D3D9 renderer in ANGLE does this so it should be possible.

Do you need a fix for this soon? We plan to investigate this in the future, but it's currently not scheduled for the near future.

If it helps, this problem will only affect certain Windows Phone devices (mostly those that shipped with Windows Phone 8.0, and have been updated to 8.1). The issue shouldn't repro on an Lumia 630, for example.

stammen commented 10 years ago

If you can provide us with the algorithm or idea we could update the WP8 version of ANGLE with the fix. The bug affects cocos2d-x cropping a game to full screen resolution which results in negative viewport coords.

austinkinross commented 10 years ago

This is fixed in the 'future-dev' branch.

Commit: https://github.com/MSOpenTech/angle/commit/90a2a16241895a2023b450b69c70809b687f4540