{"action":"created","comment":{"url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/pulls/comments/146576236","pull_request_review_id":71537455,"id":146576236,"diff_hunk":"@@ -552,58 +552,70 @@ There must: be at least one memory type with the\n ename:VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT bit set in its\n pname:propertyFlags.\n \n-The memory types are sorted according to a preorder which serves to aid in\n-easily selecting an appropriate memory type.\n-Given two memory types X and Y, the preorder defines [eq]#X {leq} Y# if:\n-\n-  * the memory property bits set for X are a strict subset of the memory\n-    property bits set for Y.\n-    Or,\n-  * the memory property bits set for X are the same as the memory property\n-    bits set for Y, and X uses a memory heap with greater or equal\n-    performance (as determined in an implementation-specific manner).\n-\n-Memory types are ordered in the list such that X is assigned a lesser\n-pname:memoryTypeIndex than Y if [eq]#(X {leq} Y) {land} {lnot} (Y {leq} X)#\n-according to the preorder.\n-Note that the list of all allowed memory property flag combinations above\n-satisfies this preorder, but other orders would as well.\n-The goal of this ordering is to enable applications to use a simple search\n-loop in selecting the proper memory type, along the lines of:\n+For each pair of elements *X* and *Y* returned in pname:memoryTypes, *X*\n+must: be placed at a lower index position than *Y* if:\n+\n+  * either the set of bit flags returned in the pname:propertyFlags member\n+    of *X* is a strict subset of the set of bit flags returned in the\n+    pname:propertyFlags member of *Y*.\n+  * or the pname:propertyFlags members of *X* and *Y* are equal, and *X*\n+    belongs to a memory heap with greater performance (as determined in an\n+    implementation-specific manner).\n+\n+[NOTE]\n+.Note\n+====\n+The ordering rules above could allow more than one possible way to order the\n+same set of memory types.","path":"doc/specs/vulkan/chapters/memory.txt","position":null,"original_position":116,"commit_id":"16bb81c846abd89c8b2dd3a8c7f17115bf696054","original_commit_id":"c9402e089ec47fee454b33f5b20410cfb4233803","user":{"login":"krOoze","id":3791331,"avatar_url":"https://avatars1.githubusercontent.com/u/3791331?v=4","gravatar_id":"","url":"https://api.github.com/users/krOoze","html_url":"https://github.com/krOoze","followers_url":"https://api.github.com/users/krOoze/followers","following_url":"https://api.github.com/users/krOoze/following{/other_user}","gists_url":"https://api.github.com/users/krOoze/gists{/gist_id}","starred_url":"https://api.github.com/users/krOoze/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/krOoze/subscriptions","organizations_url":"https://api.github.com/users/krOoze/orgs","repos_url":"https://api.github.com/users/krOoze/repos","events_url":"https://api.github.com/users/krOoze/events{/privacy}","received_events_url":"https://api.github.com/users/krOoze/received_events","type":"User","site_admin":false},"body":"Alright, I tried something along these lines.","created_at":"2017-10-24T14:22:45Z","updated_at":"2017-10-24T14:22:45Z","html_url":"https://github.com/KhronosGroup/Vulkan-Docs/pull/194#discussion_r146576236","pull_request_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/pulls/194","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/pulls/comments/146576236"},"html":{"href":"https://github.com/KhronosGroup/Vulkan-Docs/pull/194#discussion_r146576236"},"pull_request":{"href":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/pulls/194"}},"in_reply_to_id":146491016},"pull_request":{"url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/pulls/194","id":67716455,"html_url":"https://github.com/KhronosGroup/Vulkan-Docs/pull/194","diff_url":"https://github.com/KhronosGroup/Vulkan-Docs/pull/194.diff","patch_url":"https://github.com/KhronosGroup/Vulkan-Docs/pull/194.patch","issue_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/issues/194","number":194,"state":"open","locked":false,"title":"Suggestions for ch10.2.0 Device Memory","user":{"login":"krOoze","id":3791331,"avatar_url":"https://avatars1.githubusercontent.com/u/3791331?v=4","gravatar_id":"","url":"https://api.github.com/users/krOoze","html_url":"https://github.com/krOoze","followers_url":"https://api.github.com/users/krOoze/followers","following_url":"https://api.github.com/users/krOoze/following{/other_user}","gists_url":"https://api.github.com/users/krOoze/gists{/gist_id}","starred_url":"https://api.github.com/users/krOoze/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/krOoze/subscriptions","organizations_url":"https://api.github.com/users/krOoze/orgs","repos_url":"https://api.github.com/users/krOoze/repos","events_url":"https://api.github.com/users/krOoze/events{/privacy}","received_events_url":"https://api.github.com/users/krOoze/received_events","type":"User","site_admin":false},"body":"I suggest some text changes/rewrite to the ch. 10.2.0 Device Memory (as a PR):\r\n\r\nNon-semantic changes:\r\n\r\n1) Random grammar and formatting\r\n\r\n2) Make example in first paragraph more straightforward with elementary Vulkan primitives (the original also seemed factually wrong in places; e.g. does UBO really have to be in \"on-device\" memory?)\r\n\r\n3) Removed unnecessary brandishing of obscure math describing the memory type list order. Tried something equally formal, but more readable.\r\n\r\n4) Made a note into a Note\r\n\r\n5) Updated example. Function names seem to be lower-case in the spec. Hopefully made it bit\r\nmore readable. Turned the acompanying note into the example content and inline comments.\r\n\r\n6) Removed redundant `VkDeviceMemory` intro\r\n\r\n7) Break out specifying language out of  a Note\r\n\r\n8) More straightforward description of `memoryTypeIndex`\r\n\r\n9) Fix pdf formatting of the memory types property list\r\n\r\n<hr/>\r\n\r\nSemantic changes:\r\n\r\n1) Make explicit there is a <=> relationship between `DEVICE_LOCAL` heap and `DEVICE_LOCAL`  memory type\r\n\r\n2) Make >4GB runtime error report mandatory. Otherwise it basically says \"do not pass >= 4GB, because possible undefined behavior\".\r\n\r\n3) Removed `VUID-vkAllocateMemory-device-00636`. Behavior is deterministic returning `VK_ERROR_TOO_MANY_OBJECTS`\r\n\r\n4) Moved `allocationSize` VU (depends on non-local state).\r\n\r\n5) Changed `allocationSize`. Not sure what the original means, so improvized a new one saying alloc size must be <=  the whole size of the heap. Should potentially be removed altogether (looks more like something better covered by `VK_ERROR_OUT_OF_DEVICE_MEMORY`)?\r\n\r\n6) Added VU restricting `memoryTypeIndex` to only the memory types of the device.","created_at":"2016-04-25T13:08:43Z","updated_at":"2017-10-24T14:22:45Z","closed_at":null,"merged_at":null,"merge_commit_sha":"bd5a29a92f2df91a3ad322e8928757ce90504b7a","assignee":{"login":"TomOlson","id":17166411,"avatar_url":"https://avatars1.githubusercontent.com/u/17166411?v=4","gravatar_id":"","url":"https://api.github.com/users/TomOlson","html_url":"https://github.com/TomOlson","followers_url":"https://api.github.com/users/TomOlson/followers","following_url":"https://api.github.com/users/TomOlson/following{/other_user}","gists_url":"https://api.github.com/users/TomOlson/gists{/gist_id}","starred_url":"https://api.github.com/users/TomOlson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TomOlson/subscriptions","organizations_url":"https://api.github.com/users/TomOlson/orgs","repos_url":"https://api.github.com/users/TomOlson/repos","events_url":"https://api.github.com/users/TomOlson/events{/privacy}","received_events_url":"https://api.github.com/users/TomOlson/received_events","type":"User","site_admin":false},"assignees":[{"login":"TomOlson","id":17166411,"avatar_url":"https://avatars1.githubusercontent.com/u/17166411?v=4","gravatar_id":"","url":"https://api.github.com/users/TomOlson","html_url":"https://github.com/TomOlson","followers_url":"https://api.github.com/users/TomOlson/followers","following_url":"https://api.github.com/users/TomOlson/following{/other_user}","gists_url":"https://api.github.com/users/TomOlson/gists{/gist_id}","starred_url":"https://api.github.com/users/TomOlson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/TomOlson/subscriptions","organizations_url":"https://api.github.com/users/TomOlson/orgs","repos_url":"https://api.github.com/users/TomOlson/repos","events_url":"https://api.github.com/users/TomOlson/events{/privacy}","received_events_url":"https://api.github.com/users/TomOlson/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/pulls/194/commits","review_comments_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/pulls/194/comments","review_comment_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/pulls/comments{/number}","comments_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/issues/194/comments","statuses_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/statuses/16bb81c846abd89c8b2dd3a8c7f17115bf696054","head":{"label":"krOoze:improve-ch10.2.0","ref":"improve-ch10.2.0","sha":"16bb81c846abd89c8b2dd3a8c7f17115bf696054","user":{"login":"krOoze","id":3791331,"avatar_url":"https://avatars1.githubusercontent.com/u/3791331?v=4","gravatar_id":"","url":"https://api.github.com/users/krOoze","html_url":"https://github.com/krOoze","followers_url":"https://api.github.com/users/krOoze/followers","following_url":"https://api.github.com/users/krOoze/following{/other_user}","gists_url":"https://api.github.com/users/krOoze/gists{/gist_id}","starred_url":"https://api.github.com/users/krOoze/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/krOoze/subscriptions","organizations_url":"https://api.github.com/users/krOoze/orgs","repos_url":"https://api.github.com/users/krOoze/repos","events_url":"https://api.github.com/users/krOoze/events{/privacy}","received_events_url":"https://api.github.com/users/krOoze/received_events","type":"User","site_admin":false},"repo":{"id":57004080,"name":"Vulkan-Docs","full_name":"krOoze/Vulkan-Docs","owner":{"login":"krOoze","id":3791331,"avatar_url":"https://avatars1.githubusercontent.com/u/3791331?v=4","gravatar_id":"","url":"https://api.github.com/users/krOoze","html_url":"https://github.com/krOoze","followers_url":"https://api.github.com/users/krOoze/followers","following_url":"https://api.github.com/users/krOoze/following{/other_user}","gists_url":"https://api.github.com/users/krOoze/gists{/gist_id}","starred_url":"https://api.github.com/users/krOoze/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/krOoze/subscriptions","organizations_url":"https://api.github.com/users/krOoze/orgs","repos_url":"https://api.github.com/users/krOoze/repos","events_url":"https://api.github.com/users/krOoze/events{/privacy}","received_events_url":"https://api.github.com/users/krOoze/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/krOoze/Vulkan-Docs","description":"The Vulkan API Specification and related tools","fork":true,"url":"https://api.github.com/repos/krOoze/Vulkan-Docs","forks_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/forks","keys_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/teams","hooks_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/hooks","issue_events_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/issues/events{/number}","events_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/events","assignees_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/assignees{/user}","branches_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/branches{/branch}","tags_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/tags","blobs_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/statuses/{sha}","languages_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/languages","stargazers_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/stargazers","contributors_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/contributors","subscribers_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/subscribers","subscription_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/subscription","commits_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/contents/{+path}","compare_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/merges","archive_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/downloads","issues_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/issues{/number}","pulls_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/pulls{/number}","milestones_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/milestones{/number}","notifications_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/labels{/name}","releases_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/releases{/id}","deployments_url":"https://api.github.com/repos/krOoze/Vulkan-Docs/deployments","created_at":"2016-04-25T01:49:46Z","updated_at":"2016-04-25T01:49:47Z","pushed_at":"2017-10-24T14:20:48Z","git_url":"git://github.com/krOoze/Vulkan-Docs.git","ssh_url":"git@github.com:krOoze/Vulkan-Docs.git","clone_url":"https://github.com/krOoze/Vulkan-Docs.git","svn_url":"https://github.com/krOoze/Vulkan-Docs","homepage":null,"size":11743,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"1.0"}},"base":{"label":"KhronosGroup:1.0","ref":"1.0","sha":"5436521608c40f324b397693f5bb758d666e3f55","user":{"login":"KhronosGroup","id":1608701,"avatar_url":"https://avatars3.githubusercontent.com/u/1608701?v=4","gravatar_id":"","url":"https://api.github.com/users/KhronosGroup","html_url":"https://github.com/KhronosGroup","followers_url":"https://api.github.com/users/KhronosGroup/followers","following_url":"https://api.github.com/users/KhronosGroup/following{/other_user}","gists_url":"https://api.github.com/users/KhronosGroup/gists{/gist_id}","starred_url":"https://api.github.com/users/KhronosGroup/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KhronosGroup/subscriptions","organizations_url":"https://api.github.com/users/KhronosGroup/orgs","repos_url":"https://api.github.com/users/KhronosGroup/repos","events_url":"https://api.github.com/users/KhronosGroup/events{/privacy}","received_events_url":"https://api.github.com/users/KhronosGroup/received_events","type":"Organization","site_admin":false},"repo":{"id":51506618,"name":"Vulkan-Docs","full_name":"KhronosGroup/Vulkan-Docs","owner":{"login":"KhronosGroup","id":1608701,"avatar_url":"https://avatars3.githubusercontent.com/u/1608701?v=4","gravatar_id":"","url":"https://api.github.com/users/KhronosGroup","html_url":"https://github.com/KhronosGroup","followers_url":"https://api.github.com/users/KhronosGroup/followers","following_url":"https://api.github.com/users/KhronosGroup/following{/other_user}","gists_url":"https://api.github.com/users/KhronosGroup/gists{/gist_id}","starred_url":"https://api.github.com/users/KhronosGroup/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/KhronosGroup/subscriptions","organizations_url":"https://api.github.com/users/KhronosGroup/orgs","repos_url":"https://api.github.com/users/KhronosGroup/repos","events_url":"https://api.github.com/users/KhronosGroup/events{/privacy}","received_events_url":"https://api.github.com/users/KhronosGroup/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/KhronosGroup/Vulkan-Docs","description":"The Vulkan API Specification and related tools","fork":false,"url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs","forks_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/forks","keys_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/keys{/key_id}","collaborators_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/teams","hooks_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/hooks","issue_events_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/issues/events{/number}","events_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/events","assignees_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/assignees{/user}","branches_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/branches{/branch}","tags_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/tags","blobs_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/git/refs{/sha}","trees_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/git/trees{/sha}","statuses_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/statuses/{sha}","languages_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/languages","stargazers_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/stargazers","contributors_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/contributors","subscribers_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/subscribers","subscription_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/subscription","commits_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/commits{/sha}","git_commits_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/git/commits{/sha}","comments_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/comments{/number}","issue_comment_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/issues/comments{/number}","contents_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/contents/{+path}","compare_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/compare/{base}...{head}","merges_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/merges","archive_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/downloads","issues_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/issues{/number}","pulls_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/pulls{/number}","milestones_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/milestones{/number}","notifications_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/labels{/name}","releases_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/releases{/id}","deployments_url":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/deployments","created_at":"2016-02-11T10:03:55Z","updated_at":"2017-10-22T09:11:44Z","pushed_at":"2017-10-24T14:20:50Z","git_url":"git://github.com/KhronosGroup/Vulkan-Docs.git","ssh_url":"git@github.com:KhronosGroup/Vulkan-Docs.git","clone_url":"https://github.com/KhronosGroup/Vulkan-Docs.git","svn_url":"https://github.com/KhronosGroup/Vulkan-Docs","homepage":null,"size":12559,"stargazers_count":1047,"watchers_count":1047,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":141,"mirror_url":null,"archived":false,"open_issues_count":98,"forks":141,"open_issues":98,"watchers":1047,"default_branch":"1.0"}},"_links":{"self":{"href":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/pulls/194"},"html":{"href":"https://github.com/KhronosGroup/Vulkan-Docs/pull/194"},"issue":{"href":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/issues/194"},"comments":{"href":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/issues/194/comments"},"review_comments":{"href":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/pulls/194/comments"},"review_comment":{"href":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/pulls/194/commits"},"statuses":{"href":"https://api.github.com/repos/KhronosGroup/Vulkan-Docs/statuses/16bb81c846abd89c8b2dd3a8c7f17115bf696054"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"krOoze"}}