Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RFC] Fix Parallel-RDP on Intel Xe #388

Closed
wants to merge 1 commit into from

Conversation

stuken
Copy link

@stuken stuken commented Oct 10, 2021

As noted in #383 ParaLLel-RDP crashes on current Intel Xe drivers. On newer drivers vkGetPhysicalDeviceMemoryProperties calls incorrectly populates the VkPhysicalDeviceMemoryProperties struct values meaning that all contained memoryTypes->propertyFlags fields return 1 instead of the or'd flag values.
This means that the find_memory_type method's lookups will never match based on the expected flags, the rdram buffer is not initialized and it crashes out.

This will force set the memoryTypes index to the appropriate value bypassing the lookup method if the driver vendor is Intel and the version is at least the current most one, 30.0.100.9862.

@loganmc10
Copy link

This should be submitted to: https://github.com/Themaister/parallel-rdp

That is the upstream/source repo

loganmc10 added a commit to simple64/parallel-rdp-standalone that referenced this pull request Oct 10, 2021
@m4xw m4xw changed the title Fix Parallel-RDP on Intel Xe [RFC] Fix Parallel-RDP on Intel Xe Oct 11, 2021
@stuken
Copy link
Author

stuken commented Oct 11, 2021

Turns out my root cause analysis was totally wrong. vkGetPhysicalDeviceMemoryProperties is returning correctly and it's a whole host of other values not lining up to stop things.

  1. reqs.memoryTypeBits on the offending driver is 7
  2. host_pointer_props.memoryTypeBits is 1

Those values are &'d and used as the mask value in find_memory_types but the resultant 1 means thanks to the (1u << i) & mask check only the first entry in the memoryTypes array is ever looked at.

Secondly, if we were to pass that check none of the CachedCoherentHostPreferCached case prio entries will fully match the flags as it contains a 4th flag, MEMORY_PROPERTY_DEVICE_LOCAL_BIT.

@m4xw
Copy link
Collaborator

m4xw commented Oct 11, 2021

deprecated

@m4xw m4xw closed this Oct 11, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants