vulkan - compute queuefamily - vkGetDeviceQueue - access violation
let me preface this with I've only tested this on my card (AMD r9 380).
vkGetPhysicalDeviceQueueFamilyProperties()
finds 3 QueueFamilies. One containing all the normal bits (graphics, compute, transfer), one missing graphics, and one missing compute and graphics. I've taken it as the one missing Graphics is the Compute queue family, and the one missing compute and graphics is the Transfer queue family.
vkGetDeviceQueue(instance, computeFamily, 0, &pComputeQueue);
instance being VkInstance, computeFamily being a uint32_t index value, 0 being the index of the queue requested, and pComputeQueue is a VkQueue. Attempting to run this function with this parameters generates Vulkan01.exe: 0xC0000005: Access violation writing location 0x0000000000000000.
vkGetDeviceQueue()
returns just fine for Graphics, Presentation (which returns the same as graphics on my implementation, as expected), and transfer.
So the question is: Why would I get an error trying to return a handle to one of my listed Queue Families? Is it likely just my card? (some of the Sascha Williams examples won't run on my computer either, so I theorize that perhaps my card is just too old for some features?)
c++ access-violation vulkan
add a comment |
let me preface this with I've only tested this on my card (AMD r9 380).
vkGetPhysicalDeviceQueueFamilyProperties()
finds 3 QueueFamilies. One containing all the normal bits (graphics, compute, transfer), one missing graphics, and one missing compute and graphics. I've taken it as the one missing Graphics is the Compute queue family, and the one missing compute and graphics is the Transfer queue family.
vkGetDeviceQueue(instance, computeFamily, 0, &pComputeQueue);
instance being VkInstance, computeFamily being a uint32_t index value, 0 being the index of the queue requested, and pComputeQueue is a VkQueue. Attempting to run this function with this parameters generates Vulkan01.exe: 0xC0000005: Access violation writing location 0x0000000000000000.
vkGetDeviceQueue()
returns just fine for Graphics, Presentation (which returns the same as graphics on my implementation, as expected), and transfer.
So the question is: Why would I get an error trying to return a handle to one of my listed Queue Families? Is it likely just my card? (some of the Sascha Williams examples won't run on my computer either, so I theorize that perhaps my card is just too old for some features?)
c++ access-violation vulkan
add a comment |
let me preface this with I've only tested this on my card (AMD r9 380).
vkGetPhysicalDeviceQueueFamilyProperties()
finds 3 QueueFamilies. One containing all the normal bits (graphics, compute, transfer), one missing graphics, and one missing compute and graphics. I've taken it as the one missing Graphics is the Compute queue family, and the one missing compute and graphics is the Transfer queue family.
vkGetDeviceQueue(instance, computeFamily, 0, &pComputeQueue);
instance being VkInstance, computeFamily being a uint32_t index value, 0 being the index of the queue requested, and pComputeQueue is a VkQueue. Attempting to run this function with this parameters generates Vulkan01.exe: 0xC0000005: Access violation writing location 0x0000000000000000.
vkGetDeviceQueue()
returns just fine for Graphics, Presentation (which returns the same as graphics on my implementation, as expected), and transfer.
So the question is: Why would I get an error trying to return a handle to one of my listed Queue Families? Is it likely just my card? (some of the Sascha Williams examples won't run on my computer either, so I theorize that perhaps my card is just too old for some features?)
c++ access-violation vulkan
let me preface this with I've only tested this on my card (AMD r9 380).
vkGetPhysicalDeviceQueueFamilyProperties()
finds 3 QueueFamilies. One containing all the normal bits (graphics, compute, transfer), one missing graphics, and one missing compute and graphics. I've taken it as the one missing Graphics is the Compute queue family, and the one missing compute and graphics is the Transfer queue family.
vkGetDeviceQueue(instance, computeFamily, 0, &pComputeQueue);
instance being VkInstance, computeFamily being a uint32_t index value, 0 being the index of the queue requested, and pComputeQueue is a VkQueue. Attempting to run this function with this parameters generates Vulkan01.exe: 0xC0000005: Access violation writing location 0x0000000000000000.
vkGetDeviceQueue()
returns just fine for Graphics, Presentation (which returns the same as graphics on my implementation, as expected), and transfer.
So the question is: Why would I get an error trying to return a handle to one of my listed Queue Families? Is it likely just my card? (some of the Sascha Williams examples won't run on my computer either, so I theorize that perhaps my card is just too old for some features?)
c++ access-violation vulkan
c++ access-violation vulkan
edited Jan 1 at 20:50
FrozenFirebat
asked Jan 1 at 20:42
FrozenFirebatFrozenFirebat
82
82
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Why would I get an error trying to return a handle to one of my listed Queue Families?
Because they're not "your" queue families. They're the device's queue families.
They only become "your" queue families if you ask for them at device creation time. Your VkDeviceCreateInfo
structure must have a VkDeviceQueueCreateInfo
that has a queueFamilyIndex
referencing the compute queue family, requesting (at least) one queue from that family.
And I'm dumb. I forgot to include a reference to that family index when building the array of VkDeviceQueueCreateInfo. Thx
– FrozenFirebat
Jan 1 at 22:36
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53998788%2fvulkan-compute-queuefamily-vkgetdevicequeue-access-violation%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Why would I get an error trying to return a handle to one of my listed Queue Families?
Because they're not "your" queue families. They're the device's queue families.
They only become "your" queue families if you ask for them at device creation time. Your VkDeviceCreateInfo
structure must have a VkDeviceQueueCreateInfo
that has a queueFamilyIndex
referencing the compute queue family, requesting (at least) one queue from that family.
And I'm dumb. I forgot to include a reference to that family index when building the array of VkDeviceQueueCreateInfo. Thx
– FrozenFirebat
Jan 1 at 22:36
add a comment |
Why would I get an error trying to return a handle to one of my listed Queue Families?
Because they're not "your" queue families. They're the device's queue families.
They only become "your" queue families if you ask for them at device creation time. Your VkDeviceCreateInfo
structure must have a VkDeviceQueueCreateInfo
that has a queueFamilyIndex
referencing the compute queue family, requesting (at least) one queue from that family.
And I'm dumb. I forgot to include a reference to that family index when building the array of VkDeviceQueueCreateInfo. Thx
– FrozenFirebat
Jan 1 at 22:36
add a comment |
Why would I get an error trying to return a handle to one of my listed Queue Families?
Because they're not "your" queue families. They're the device's queue families.
They only become "your" queue families if you ask for them at device creation time. Your VkDeviceCreateInfo
structure must have a VkDeviceQueueCreateInfo
that has a queueFamilyIndex
referencing the compute queue family, requesting (at least) one queue from that family.
Why would I get an error trying to return a handle to one of my listed Queue Families?
Because they're not "your" queue families. They're the device's queue families.
They only become "your" queue families if you ask for them at device creation time. Your VkDeviceCreateInfo
structure must have a VkDeviceQueueCreateInfo
that has a queueFamilyIndex
referencing the compute queue family, requesting (at least) one queue from that family.
answered Jan 1 at 21:27
Nicol BolasNicol Bolas
290k34481655
290k34481655
And I'm dumb. I forgot to include a reference to that family index when building the array of VkDeviceQueueCreateInfo. Thx
– FrozenFirebat
Jan 1 at 22:36
add a comment |
And I'm dumb. I forgot to include a reference to that family index when building the array of VkDeviceQueueCreateInfo. Thx
– FrozenFirebat
Jan 1 at 22:36
And I'm dumb. I forgot to include a reference to that family index when building the array of VkDeviceQueueCreateInfo. Thx
– FrozenFirebat
Jan 1 at 22:36
And I'm dumb. I forgot to include a reference to that family index when building the array of VkDeviceQueueCreateInfo. Thx
– FrozenFirebat
Jan 1 at 22:36
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53998788%2fvulkan-compute-queuefamily-vkgetdevicequeue-access-violation%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown