{"action":"created","comment":{"url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/pulls/comments/74501456","id":74501456,"diff_hunk":"@@ -0,0 +1,86 @@\n+# Interface Class Specification: Display\n+> Status: Draft Proposal\n+\n+## Device class summary\n+The display interface is responsible for filling the role previously filled by static display config json in osvr_server_config.json. Where previously the user would be responsible for selecting the correct display configuration, the display interface allows hardware plugins to specify these parameters automatically at runtime.\n+\n+### Examples\n+- None\n+\n+\n+### Relation to other classes\n+**Factoring**: The display interface represents a collection of individual parameters for a given display, including parameters that don't fit neatly into an existing interface. While it might be possible (and in some cases appropriate) to expose certain display parameters individually as an analog or button type interface, other types of parameters, such as the distortion mesh or the logical display topology (viewer/eye/surface mapping to physical displays and viewports), cannot.\n+\n+**From other instances of the same interface**: It isn't likely that analysis plugins will consume a display interface and filter or transform any of its parameters, although it remains possible.\n+\n+**From other classes**: Although not expected to be common, it may be possible to derive a display interface out of a set of other interfaces representing individual parameters.\n+\n+**To other classes**: If some display parameters are dynamic, and the hardware in question can read the value of the parameter at runtime as it changes, then it may be useful to expose that parameter separately as its own interface. For example, a display's center of projection might be exposed as an `OSVR_Vec2` interface.\n+\n+## Messages\n+In general, to work smoothly with the rest of the OSVR system, distance units are meters and velocity units are meters/second.\n+\n+### Display\n+#### Data\n+- type (enum in fixed|hmd)\n+- vendor (string)\n+- model: (string)\n+- product URI (uri-string RFC 3986)\n+- driver URI (uri-string RFC 3986)\n+- notes: string\n+- number of DisplayInputs (whole number)\n+- number of logical DisplaySurfaces (whole number)\n+- k1[3] rgb radial distortion supported (boolean, hmd only?) and priority (whole number)\n+- RGB radial distortion supported (boolean, hmd only?, supercedes k1[3] in most cases) and priority (whole number)\n+- mono point mesh distortion supported (boolean, hmd only?) and priority (whole number)\n+- RGB mesh distortion supported (boolean, hmd only?) and priority (whole number)\n+\n+#### Rationale\n+The Display message is the root object of the Display interface. It references both the physical DisplayInputs and logical DisplaySurfaces, which define the mapping between them.\n+\n+### DisplayInput\n+> one per number of display inputs in Display message.\n+\n+#### Data\n+- resolution (width, height in whole numbers)\n+- vendor PNPID (string)\n+- product id (string)\n+- platform-specific hardware instance path to uniquely identify it (??? string?)\n+- if part of the desktop, origin on the desktop (X and Y in whole numbers)\n+- On Windows, dx adapter number (??? string?)\n+- logical id or platform-agnostic identifier (string? or int? referenced by logical topology)\n+- location and orientation (physical orientation and location? relative to what?)\n+- eye relief/lense-to-screen distance (if not represented with location/orientation above)","path":"Interface Class Specifications/Display/InterfaceSpec-Display.md","position":null,"original_position":53,"commit_id":"b7d55b94cf920f503662cfd86f46615774bd618e","original_commit_id":"e385bd5e3025803fdd05c7b46d59debf6822d20b","user":{"login":"russell-taylor","id":762320,"avatar_url":"https://avatars.githubusercontent.com/u/762320?v=3","gravatar_id":"","url":"https://api.github.com/users/russell-taylor","html_url":"https://github.com/russell-taylor","followers_url":"https://api.github.com/users/russell-taylor/followers","following_url":"https://api.github.com/users/russell-taylor/following{/other_user}","gists_url":"https://api.github.com/users/russell-taylor/gists{/gist_id}","starred_url":"https://api.github.com/users/russell-taylor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/russell-taylor/subscriptions","organizations_url":"https://api.github.com/users/russell-taylor/orgs","repos_url":"https://api.github.com/users/russell-taylor/repos","events_url":"https://api.github.com/users/russell-taylor/events{/privacy}","received_events_url":"https://api.github.com/users/russell-taylor/received_events","type":"User","site_admin":false},"body":"These were per-HMD.  Having DisplayInput will be even better and will avoid all sorts of math gymnastics in the distortion-correction code to convert things.","created_at":"2016-08-11T20:56:39Z","updated_at":"2016-08-11T20:56:39Z","html_url":"https://github.com/OSVR/OSVR-Specs-and-Proposals/pull/19#discussion_r74501456","pull_request_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/pulls/19","_links":{"self":{"href":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/pulls/comments/74501456"},"html":{"href":"https://github.com/OSVR/OSVR-Specs-and-Proposals/pull/19#discussion_r74501456"},"pull_request":{"href":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/pulls/19"}}},"pull_request":{"url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/pulls/19","id":80817921,"html_url":"https://github.com/OSVR/OSVR-Specs-and-Proposals/pull/19","diff_url":"https://github.com/OSVR/OSVR-Specs-and-Proposals/pull/19.diff","patch_url":"https://github.com/OSVR/OSVR-Specs-and-Proposals/pull/19.patch","issue_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/issues/19","number":19,"state":"open","locked":false,"title":"First draft of InterfaceSpec-Display.md proposal.","user":{"login":"JeroMiya","id":320332,"avatar_url":"https://avatars.githubusercontent.com/u/320332?v=3","gravatar_id":"","url":"https://api.github.com/users/JeroMiya","html_url":"https://github.com/JeroMiya","followers_url":"https://api.github.com/users/JeroMiya/followers","following_url":"https://api.github.com/users/JeroMiya/following{/other_user}","gists_url":"https://api.github.com/users/JeroMiya/gists{/gist_id}","starred_url":"https://api.github.com/users/JeroMiya/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JeroMiya/subscriptions","organizations_url":"https://api.github.com/users/JeroMiya/orgs","repos_url":"https://api.github.com/users/JeroMiya/repos","events_url":"https://api.github.com/users/JeroMiya/events{/privacy}","received_events_url":"https://api.github.com/users/JeroMiya/received_events","type":"User","site_admin":false},"body":"Early draft.","created_at":"2016-08-10T15:43:52Z","updated_at":"2016-08-11T20:56:39Z","closed_at":null,"merged_at":null,"merge_commit_sha":"dc79d43e4ff24ce0ba1b740c3eb46fff8ed2ee25","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/pulls/19/commits","review_comments_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/pulls/19/comments","review_comment_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/pulls/comments{/number}","comments_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/issues/19/comments","statuses_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/statuses/b7d55b94cf920f503662cfd86f46615774bd618e","head":{"label":"OSVR:display-interface","ref":"display-interface","sha":"b7d55b94cf920f503662cfd86f46615774bd618e","user":{"login":"OSVR","id":10343613,"avatar_url":"https://avatars.githubusercontent.com/u/10343613?v=3","gravatar_id":"","url":"https://api.github.com/users/OSVR","html_url":"https://github.com/OSVR","followers_url":"https://api.github.com/users/OSVR/followers","following_url":"https://api.github.com/users/OSVR/following{/other_user}","gists_url":"https://api.github.com/users/OSVR/gists{/gist_id}","starred_url":"https://api.github.com/users/OSVR/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OSVR/subscriptions","organizations_url":"https://api.github.com/users/OSVR/orgs","repos_url":"https://api.github.com/users/OSVR/repos","events_url":"https://api.github.com/users/OSVR/events{/privacy}","received_events_url":"https://api.github.com/users/OSVR/received_events","type":"Organization","site_admin":false},"repo":{"id":33330095,"name":"OSVR-Specs-and-Proposals","full_name":"OSVR/OSVR-Specs-and-Proposals","owner":{"login":"OSVR","id":10343613,"avatar_url":"https://avatars.githubusercontent.com/u/10343613?v=3","gravatar_id":"","url":"https://api.github.com/users/OSVR","html_url":"https://github.com/OSVR","followers_url":"https://api.github.com/users/OSVR/followers","following_url":"https://api.github.com/users/OSVR/following{/other_user}","gists_url":"https://api.github.com/users/OSVR/gists{/gist_id}","starred_url":"https://api.github.com/users/OSVR/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OSVR/subscriptions","organizations_url":"https://api.github.com/users/OSVR/orgs","repos_url":"https://api.github.com/users/OSVR/repos","events_url":"https://api.github.com/users/OSVR/events{/privacy}","received_events_url":"https://api.github.com/users/OSVR/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/OSVR/OSVR-Specs-and-Proposals","description":"Plugin schemas in development","fork":false,"url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals","forks_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/forks","keys_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/keys{/key_id}","collaborators_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/teams","hooks_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/hooks","issue_events_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/issues/events{/number}","events_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/events","assignees_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/assignees{/user}","branches_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/branches{/branch}","tags_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/tags","blobs_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/git/refs{/sha}","trees_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/git/trees{/sha}","statuses_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/statuses/{sha}","languages_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/languages","stargazers_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/stargazers","contributors_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/contributors","subscribers_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/subscribers","subscription_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/subscription","commits_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/commits{/sha}","git_commits_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/git/commits{/sha}","comments_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/comments{/number}","issue_comment_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/issues/comments{/number}","contents_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/contents/{+path}","compare_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/compare/{base}...{head}","merges_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/merges","archive_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/downloads","issues_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/issues{/number}","pulls_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/pulls{/number}","milestones_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/milestones{/number}","notifications_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/labels{/name}","releases_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/releases{/id}","deployments_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/deployments","created_at":"2015-04-02T20:24:19Z","updated_at":"2016-05-16T10:39:56Z","pushed_at":"2016-08-11T14:18:26Z","git_url":"git://github.com/OSVR/OSVR-Specs-and-Proposals.git","ssh_url":"git@github.com:OSVR/OSVR-Specs-and-Proposals.git","clone_url":"https://github.com/OSVR/OSVR-Specs-and-Proposals.git","svn_url":"https://github.com/OSVR/OSVR-Specs-and-Proposals","homepage":null,"size":4262,"stargazers_count":6,"watchers_count":6,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":7,"mirror_url":null,"open_issues_count":8,"forks":7,"open_issues":8,"watchers":6,"default_branch":"master"}},"base":{"label":"OSVR:master","ref":"master","sha":"980ea5032e0d7f05e182668698445205c46b9931","user":{"login":"OSVR","id":10343613,"avatar_url":"https://avatars.githubusercontent.com/u/10343613?v=3","gravatar_id":"","url":"https://api.github.com/users/OSVR","html_url":"https://github.com/OSVR","followers_url":"https://api.github.com/users/OSVR/followers","following_url":"https://api.github.com/users/OSVR/following{/other_user}","gists_url":"https://api.github.com/users/OSVR/gists{/gist_id}","starred_url":"https://api.github.com/users/OSVR/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OSVR/subscriptions","organizations_url":"https://api.github.com/users/OSVR/orgs","repos_url":"https://api.github.com/users/OSVR/repos","events_url":"https://api.github.com/users/OSVR/events{/privacy}","received_events_url":"https://api.github.com/users/OSVR/received_events","type":"Organization","site_admin":false},"repo":{"id":33330095,"name":"OSVR-Specs-and-Proposals","full_name":"OSVR/OSVR-Specs-and-Proposals","owner":{"login":"OSVR","id":10343613,"avatar_url":"https://avatars.githubusercontent.com/u/10343613?v=3","gravatar_id":"","url":"https://api.github.com/users/OSVR","html_url":"https://github.com/OSVR","followers_url":"https://api.github.com/users/OSVR/followers","following_url":"https://api.github.com/users/OSVR/following{/other_user}","gists_url":"https://api.github.com/users/OSVR/gists{/gist_id}","starred_url":"https://api.github.com/users/OSVR/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OSVR/subscriptions","organizations_url":"https://api.github.com/users/OSVR/orgs","repos_url":"https://api.github.com/users/OSVR/repos","events_url":"https://api.github.com/users/OSVR/events{/privacy}","received_events_url":"https://api.github.com/users/OSVR/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/OSVR/OSVR-Specs-and-Proposals","description":"Plugin schemas in development","fork":false,"url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals","forks_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/forks","keys_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/keys{/key_id}","collaborators_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/teams","hooks_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/hooks","issue_events_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/issues/events{/number}","events_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/events","assignees_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/assignees{/user}","branches_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/branches{/branch}","tags_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/tags","blobs_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/git/refs{/sha}","trees_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/git/trees{/sha}","statuses_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/statuses/{sha}","languages_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/languages","stargazers_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/stargazers","contributors_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/contributors","subscribers_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/subscribers","subscription_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/subscription","commits_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/commits{/sha}","git_commits_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/git/commits{/sha}","comments_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/comments{/number}","issue_comment_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/issues/comments{/number}","contents_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/contents/{+path}","compare_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/compare/{base}...{head}","merges_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/merges","archive_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/downloads","issues_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/issues{/number}","pulls_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/pulls{/number}","milestones_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/milestones{/number}","notifications_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/labels{/name}","releases_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/releases{/id}","deployments_url":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/deployments","created_at":"2015-04-02T20:24:19Z","updated_at":"2016-05-16T10:39:56Z","pushed_at":"2016-08-11T14:18:26Z","git_url":"git://github.com/OSVR/OSVR-Specs-and-Proposals.git","ssh_url":"git@github.com:OSVR/OSVR-Specs-and-Proposals.git","clone_url":"https://github.com/OSVR/OSVR-Specs-and-Proposals.git","svn_url":"https://github.com/OSVR/OSVR-Specs-and-Proposals","homepage":null,"size":4262,"stargazers_count":6,"watchers_count":6,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":7,"mirror_url":null,"open_issues_count":8,"forks":7,"open_issues":8,"watchers":6,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/pulls/19"},"html":{"href":"https://github.com/OSVR/OSVR-Specs-and-Proposals/pull/19"},"issue":{"href":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/issues/19"},"comments":{"href":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/issues/19/comments"},"review_comments":{"href":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/pulls/19/comments"},"review_comment":{"href":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/pulls/19/commits"},"statuses":{"href":"https://api.github.com/repos/OSVR/OSVR-Specs-and-Proposals/statuses/b7d55b94cf920f503662cfd86f46615774bd618e"}}}}
{"actor":{"display_login":"russell-taylor"}}