Merge pull request #832 from mahkoh/jorth/vulkan-fixes-2
Various vulkan fixes
This commit is contained in:
commit
2dbf6aa483
4 changed files with 18 additions and 6 deletions
|
|
@ -100,10 +100,12 @@ impl VulkanAllocation {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn incoherent_range(&self, mask: u64) -> MappedMemoryRange<'static> {
|
fn incoherent_range(&self, mask: u64) -> MappedMemoryRange<'static> {
|
||||||
|
let lo = self.offset & !mask;
|
||||||
|
let hi = (self.offset + self.size + mask) & !mask;
|
||||||
MappedMemoryRange::default()
|
MappedMemoryRange::default()
|
||||||
.memory(self.memory)
|
.memory(self.memory)
|
||||||
.offset(self.offset & !mask)
|
.offset(lo)
|
||||||
.size((self.size + mask) & !mask)
|
.size(hi - lo)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn device(&self) -> &VulkanDevice {
|
fn device(&self) -> &VulkanDevice {
|
||||||
|
|
|
||||||
|
|
@ -2304,6 +2304,9 @@ where
|
||||||
}
|
}
|
||||||
let x2 = x2.min(fb.width as i32);
|
let x2 = x2.min(fb.width as i32);
|
||||||
let y2 = y2.min(fb.height as i32);
|
let y2 = y2.min(fb.height as i32);
|
||||||
|
if x1 == x2 || y1 == y2 {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
Some([x1, y1, x2, y2])
|
Some([x1, y1, x2, y2])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -258,7 +258,10 @@ impl VulkanShmImage {
|
||||||
TransferType::Upload => AccessFlags2::SHADER_SAMPLED_READ,
|
TransferType::Upload => AccessFlags2::SHADER_SAMPLED_READ,
|
||||||
TransferType::Download => AccessFlags2::COLOR_ATTACHMENT_WRITE,
|
TransferType::Download => AccessFlags2::COLOR_ATTACHMENT_WRITE,
|
||||||
})
|
})
|
||||||
.dst_stage_mask(PipelineStageFlags2::FRAGMENT_SHADER);
|
.dst_stage_mask(match tt {
|
||||||
|
TransferType::Upload => PipelineStageFlags2::FRAGMENT_SHADER,
|
||||||
|
TransferType::Download => PipelineStageFlags2::COLOR_ATTACHMENT_OUTPUT,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
let final_buffer_barrier = memory_barrier(true);
|
let final_buffer_barrier = memory_barrier(true);
|
||||||
let final_dep_info = DependencyInfoKHR::default()
|
let final_dep_info = DependencyInfoKHR::default()
|
||||||
|
|
|
||||||
|
|
@ -54,9 +54,12 @@ pub struct VulkanShmImageAsyncData {
|
||||||
|
|
||||||
impl VulkanShmImageAsyncData {
|
impl VulkanShmImageAsyncData {
|
||||||
fn complete(&self, result: Result<(), VulkanError>) {
|
fn complete(&self, result: Result<(), VulkanError>) {
|
||||||
self.busy.set(false);
|
let staging = self.staging.take();
|
||||||
if let Some(staging) = self.staging.take() {
|
if result.is_ok() {
|
||||||
staging.busy.set(false);
|
self.busy.set(false);
|
||||||
|
if let Some(staging) = staging {
|
||||||
|
staging.busy.set(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
self.buffer.take();
|
self.buffer.take();
|
||||||
self.client_mem.take();
|
self.client_mem.take();
|
||||||
|
|
@ -676,6 +679,7 @@ fn complete_async_host_copy(
|
||||||
store(data);
|
store(data);
|
||||||
if let Err(e) = res {
|
if let Err(e) = res {
|
||||||
data.complete(Err(VulkanError::AsyncCopyToStaging(e)));
|
data.complete(Err(VulkanError::AsyncCopyToStaging(e)));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
data.data_copied.set(true);
|
data.data_copied.set(true);
|
||||||
match tt {
|
match tt {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue