mirror of
https://github.com/skyline-emu/skyline.git
synced 2024-11-27 00:24:14 +01:00
Rename TextureView::backing
to TextureView::texture
It was determined that `backing` wasn't a very descriptive name and that it conflicted with the texture's own backing, the name was changed to `texture` to make it more apparent that it was specifically the `Texture` object backing the view.
This commit is contained in:
parent
482c573b81
commit
a55aca76c6
@ -24,9 +24,9 @@ namespace skyline::gpu::interconnect {
|
|||||||
void CommandExecutor::AddSubpass(const std::function<void(vk::raii::CommandBuffer &, const std::shared_ptr<FenceCycle> &, GPU &)> &function, vk::Rect2D renderArea, std::vector<TextureView> inputAttachments, std::vector<TextureView> colorAttachments, std::optional<TextureView> depthStencilAttachment) {
|
void CommandExecutor::AddSubpass(const std::function<void(vk::raii::CommandBuffer &, const std::shared_ptr<FenceCycle> &, GPU &)> &function, vk::Rect2D renderArea, std::vector<TextureView> inputAttachments, std::vector<TextureView> colorAttachments, std::optional<TextureView> depthStencilAttachment) {
|
||||||
for (const auto &attachments : {inputAttachments, colorAttachments})
|
for (const auto &attachments : {inputAttachments, colorAttachments})
|
||||||
for (const auto &attachment : attachments)
|
for (const auto &attachment : attachments)
|
||||||
syncTextures.emplace(attachment.backing.get());
|
syncTextures.emplace(attachment.texture.get());
|
||||||
if (depthStencilAttachment)
|
if (depthStencilAttachment)
|
||||||
syncTextures.emplace(depthStencilAttachment->backing.get());
|
syncTextures.emplace(depthStencilAttachment->texture.get());
|
||||||
|
|
||||||
bool newRenderPass{CreateRenderPass(renderArea)};
|
bool newRenderPass{CreateRenderPass(renderArea)};
|
||||||
renderPass->AddSubpass(inputAttachments, colorAttachments, depthStencilAttachment ? &*depthStencilAttachment : nullptr);
|
renderPass->AddSubpass(inputAttachments, colorAttachments, depthStencilAttachment ? &*depthStencilAttachment : nullptr);
|
||||||
@ -38,7 +38,7 @@ namespace skyline::gpu::interconnect {
|
|||||||
|
|
||||||
void CommandExecutor::AddClearColorSubpass(TextureView attachment, const vk::ClearColorValue &value) {
|
void CommandExecutor::AddClearColorSubpass(TextureView attachment, const vk::ClearColorValue &value) {
|
||||||
bool newRenderPass{CreateRenderPass(vk::Rect2D{
|
bool newRenderPass{CreateRenderPass(vk::Rect2D{
|
||||||
.extent = attachment.backing->dimensions,
|
.extent = attachment.texture->dimensions,
|
||||||
})};
|
})};
|
||||||
renderPass->AddSubpass({}, attachment, nullptr);
|
renderPass->AddSubpass({}, attachment, nullptr);
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ namespace skyline::gpu::interconnect {
|
|||||||
if (!newRenderPass)
|
if (!newRenderPass)
|
||||||
nodes.emplace_back(std::in_place_type_t<node::NextSubpassNode>());
|
nodes.emplace_back(std::in_place_type_t<node::NextSubpassNode>());
|
||||||
} else {
|
} else {
|
||||||
auto function{[scissor = attachment.backing->dimensions, value](vk::raii::CommandBuffer &commandBuffer, const std::shared_ptr<FenceCycle> &, GPU &) {
|
auto function{[scissor = attachment.texture->dimensions, value](vk::raii::CommandBuffer &commandBuffer, const std::shared_ptr<FenceCycle> &, GPU &) {
|
||||||
commandBuffer.clearAttachments(vk::ClearAttachment{
|
commandBuffer.clearAttachments(vk::ClearAttachment{
|
||||||
.aspectMask = vk::ImageAspectFlagBits::eColor,
|
.aspectMask = vk::ImageAspectFlagBits::eColor,
|
||||||
.colorAttachment = 0,
|
.colorAttachment = 0,
|
||||||
|
@ -15,9 +15,9 @@ namespace skyline::gpu::interconnect::node {
|
|||||||
|
|
||||||
u32 RenderPassNode::AddAttachment(TextureView &view) {
|
u32 RenderPassNode::AddAttachment(TextureView &view) {
|
||||||
auto &textures{storage->textures};
|
auto &textures{storage->textures};
|
||||||
auto texture{std::find(textures.begin(), textures.end(), view.backing)};
|
auto texture{std::find(textures.begin(), textures.end(), view.texture)};
|
||||||
if (texture == textures.end())
|
if (texture == textures.end())
|
||||||
textures.push_back(view.backing);
|
textures.push_back(view.texture);
|
||||||
|
|
||||||
auto vkView{view.GetView()};
|
auto vkView{view.GetView()};
|
||||||
auto attachment{std::find(attachments.begin(), attachments.end(), vkView)};
|
auto attachment{std::find(attachments.begin(), attachments.end(), vkView)};
|
||||||
@ -26,8 +26,8 @@ namespace skyline::gpu::interconnect::node {
|
|||||||
attachments.push_back(vkView);
|
attachments.push_back(vkView);
|
||||||
attachmentDescriptions.push_back(vk::AttachmentDescription{
|
attachmentDescriptions.push_back(vk::AttachmentDescription{
|
||||||
.format = *view.format,
|
.format = *view.format,
|
||||||
.initialLayout = view.backing->layout,
|
.initialLayout = view.texture->layout,
|
||||||
.finalLayout = view.backing->layout,
|
.finalLayout = view.texture->layout,
|
||||||
});
|
});
|
||||||
return static_cast<u32>(attachments.size() - 1);
|
return static_cast<u32>(attachments.size() - 1);
|
||||||
} else {
|
} else {
|
||||||
@ -104,7 +104,7 @@ namespace skyline::gpu::interconnect::node {
|
|||||||
for (auto &attachment : inputAttachments) {
|
for (auto &attachment : inputAttachments) {
|
||||||
attachmentReferences.push_back(vk::AttachmentReference{
|
attachmentReferences.push_back(vk::AttachmentReference{
|
||||||
.attachment = AddAttachment(attachment),
|
.attachment = AddAttachment(attachment),
|
||||||
.layout = attachment.backing->layout,
|
.layout = attachment.texture->layout,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,7 +112,7 @@ namespace skyline::gpu::interconnect::node {
|
|||||||
for (auto &attachment : colorAttachments) {
|
for (auto &attachment : colorAttachments) {
|
||||||
attachmentReferences.push_back(vk::AttachmentReference{
|
attachmentReferences.push_back(vk::AttachmentReference{
|
||||||
.attachment = AddAttachment(attachment),
|
.attachment = AddAttachment(attachment),
|
||||||
.layout = attachment.backing->layout,
|
.layout = attachment.texture->layout,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -120,7 +120,7 @@ namespace skyline::gpu::interconnect::node {
|
|||||||
if (depthStencilAttachment) {
|
if (depthStencilAttachment) {
|
||||||
attachmentReferences.push_back(vk::AttachmentReference{
|
attachmentReferences.push_back(vk::AttachmentReference{
|
||||||
.attachment = AddAttachment(*depthStencilAttachment),
|
.attachment = AddAttachment(*depthStencilAttachment),
|
||||||
.layout = depthStencilAttachment->backing->layout,
|
.layout = depthStencilAttachment->texture->layout,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -329,7 +329,7 @@ namespace skyline::gpu::interconnect {
|
|||||||
auto renderTargetPointer{GetRenderTarget(renderTargetIndex)};
|
auto renderTargetPointer{GetRenderTarget(renderTargetIndex)};
|
||||||
if (renderTargetPointer) {
|
if (renderTargetPointer) {
|
||||||
auto renderTarget{*renderTargetPointer};
|
auto renderTarget{*renderTargetPointer};
|
||||||
std::lock_guard lock(*renderTarget.backing);
|
std::lock_guard lock(*renderTarget.texture);
|
||||||
|
|
||||||
vk::ImageAspectFlags aspect{};
|
vk::ImageAspectFlags aspect{};
|
||||||
if (clear.depth)
|
if (clear.depth)
|
||||||
@ -344,15 +344,15 @@ namespace skyline::gpu::interconnect {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
auto scissor{scissors.at(renderTargetIndex)};
|
auto scissor{scissors.at(renderTargetIndex)};
|
||||||
scissor.extent.width = static_cast<u32>(std::min(static_cast<i32>(renderTarget.backing->dimensions.width) - scissor.offset.x,
|
scissor.extent.width = static_cast<u32>(std::min(static_cast<i32>(renderTarget.texture->dimensions.width) - scissor.offset.x,
|
||||||
static_cast<i32>(scissor.extent.width)));
|
static_cast<i32>(scissor.extent.width)));
|
||||||
scissor.extent.height = static_cast<u32>(std::min(static_cast<i32>(renderTarget.backing->dimensions.height) - scissor.offset.y,
|
scissor.extent.height = static_cast<u32>(std::min(static_cast<i32>(renderTarget.texture->dimensions.height) - scissor.offset.y,
|
||||||
static_cast<i32>(scissor.extent.height)));
|
static_cast<i32>(scissor.extent.height)));
|
||||||
|
|
||||||
if (scissor.extent.width == 0 || scissor.extent.height == 0)
|
if (scissor.extent.width == 0 || scissor.extent.height == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (scissor.extent.width == renderTarget.backing->dimensions.width && scissor.extent.height == renderTarget.backing->dimensions.height && renderTarget.range.baseArrayLayer == 0 && renderTarget.range.layerCount == 1 && clear.layerId == 0) {
|
if (scissor.extent.width == renderTarget.texture->dimensions.width && scissor.extent.height == renderTarget.texture->dimensions.height && renderTarget.range.baseArrayLayer == 0 && renderTarget.range.layerCount == 1 && clear.layerId == 0) {
|
||||||
executor.AddClearColorSubpass(renderTarget, clearColorValue);
|
executor.AddClearColorSubpass(renderTarget, clearColorValue);
|
||||||
} else {
|
} else {
|
||||||
executor.AddSubpass([aspect, clearColorValue = clearColorValue, layerId = clear.layerId, scissor](vk::raii::CommandBuffer &commandBuffer, const std::shared_ptr<FenceCycle> &, GPU &) {
|
executor.AddSubpass([aspect, clearColorValue = clearColorValue, layerId = clear.layerId, scissor](vk::raii::CommandBuffer &commandBuffer, const std::shared_ptr<FenceCycle> &, GPU &) {
|
||||||
@ -366,7 +366,7 @@ namespace skyline::gpu::interconnect {
|
|||||||
.layerCount = 1,
|
.layerCount = 1,
|
||||||
});
|
});
|
||||||
}, vk::Rect2D{
|
}, vk::Rect2D{
|
||||||
.extent = renderTarget.backing->dimensions,
|
.extent = renderTarget.texture->dimensions,
|
||||||
}, {}, {renderTarget});
|
}, {}, {renderTarget});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -455,14 +455,14 @@ namespace skyline::gpu {
|
|||||||
WaitOnFence();
|
WaitOnFence();
|
||||||
}
|
}
|
||||||
|
|
||||||
TextureView::TextureView(std::shared_ptr<Texture> backing, vk::ImageViewType type, vk::ImageSubresourceRange range, texture::Format format, vk::ComponentMapping mapping) : backing(std::move(backing)), type(type), format(format), mapping(mapping), range(range) {}
|
TextureView::TextureView(std::shared_ptr<Texture> texture, vk::ImageViewType type, vk::ImageSubresourceRange range, texture::Format format, vk::ComponentMapping mapping) : texture(std::move(texture)), type(type), format(format), mapping(mapping), range(range) {}
|
||||||
|
|
||||||
vk::ImageView TextureView::GetView() {
|
vk::ImageView TextureView::GetView() {
|
||||||
if (view)
|
if (view)
|
||||||
return **view;
|
return **view;
|
||||||
|
|
||||||
auto viewType{[&]() {
|
auto viewType{[&]() {
|
||||||
switch (backing->dimensions.GetType()) {
|
switch (texture->dimensions.GetType()) {
|
||||||
case vk::ImageType::e1D:
|
case vk::ImageType::e1D:
|
||||||
return range.layerCount > 1 ? vk::ImageViewType::e1DArray : vk::ImageViewType::e1D;
|
return range.layerCount > 1 ? vk::ImageViewType::e1DArray : vk::ImageViewType::e1D;
|
||||||
case vk::ImageType::e2D:
|
case vk::ImageType::e2D:
|
||||||
@ -473,20 +473,20 @@ namespace skyline::gpu {
|
|||||||
}()};
|
}()};
|
||||||
|
|
||||||
vk::ImageViewCreateInfo createInfo{
|
vk::ImageViewCreateInfo createInfo{
|
||||||
.image = backing->GetBacking(),
|
.image = texture->GetBacking(),
|
||||||
.viewType = viewType,
|
.viewType = viewType,
|
||||||
.format = format ? *format : *backing->format,
|
.format = format ? *format : *texture->format,
|
||||||
.components = mapping,
|
.components = mapping,
|
||||||
.subresourceRange = range,
|
.subresourceRange = range,
|
||||||
};
|
};
|
||||||
|
|
||||||
auto &views{backing->views};
|
auto &views{texture->views};
|
||||||
auto iterator{std::find_if(views.begin(), views.end(), [&](const std::pair<vk::ImageViewCreateInfo, vk::raii::ImageView> &item) {
|
auto iterator{std::find_if(views.begin(), views.end(), [&](const std::pair<vk::ImageViewCreateInfo, vk::raii::ImageView> &item) {
|
||||||
return item.first == createInfo;
|
return item.first == createInfo;
|
||||||
})};
|
})};
|
||||||
if (iterator != views.end())
|
if (iterator != views.end())
|
||||||
return *iterator->second;
|
return *iterator->second;
|
||||||
|
|
||||||
return *views.emplace_back(createInfo, vk::raii::ImageView(backing->gpu.vkDevice, createInfo)).second;
|
return *views.emplace_back(createInfo, vk::raii::ImageView(texture->gpu.vkDevice, createInfo)).second;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -296,7 +296,7 @@ namespace skyline::gpu {
|
|||||||
vk::raii::ImageView *view{};
|
vk::raii::ImageView *view{};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
std::shared_ptr<Texture> backing;
|
std::shared_ptr<Texture> texture;
|
||||||
vk::ImageViewType type;
|
vk::ImageViewType type;
|
||||||
texture::Format format;
|
texture::Format format;
|
||||||
vk::ComponentMapping mapping;
|
vk::ComponentMapping mapping;
|
||||||
@ -305,7 +305,7 @@ namespace skyline::gpu {
|
|||||||
/**
|
/**
|
||||||
* @param format A compatible format for the texture view (Defaults to the format of the backing texture)
|
* @param format A compatible format for the texture view (Defaults to the format of the backing texture)
|
||||||
*/
|
*/
|
||||||
TextureView(std::shared_ptr<Texture> backing, vk::ImageViewType type, vk::ImageSubresourceRange range, texture::Format format = {}, vk::ComponentMapping mapping = {});
|
TextureView(std::shared_ptr<Texture> texture, vk::ImageViewType type, vk::ImageSubresourceRange range, texture::Format format = {}, vk::ComponentMapping mapping = {});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return A Vulkan Image View that corresponds to the properties of this view
|
* @return A Vulkan Image View that corresponds to the properties of this view
|
||||||
@ -313,7 +313,7 @@ namespace skyline::gpu {
|
|||||||
vk::ImageView GetView();
|
vk::ImageView GetView();
|
||||||
|
|
||||||
bool operator==(const TextureView &rhs) {
|
bool operator==(const TextureView &rhs) {
|
||||||
return backing == rhs.backing && type == rhs.type && format == rhs.format && mapping == rhs.mapping && range == rhs.range;
|
return texture == rhs.texture && type == rhs.type && format == rhs.format && mapping == rhs.mapping && range == rhs.range;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -344,7 +344,7 @@ namespace skyline::service::hosbinder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
gpu::GuestTexture guestTexture(span<u8>(nvMapHandleObj->GetPointer() + surface.offset, surface.size), gpu::texture::Dimensions(surface.width, surface.height), format, tileConfig, gpu::texture::TextureType::e2D);
|
gpu::GuestTexture guestTexture(span<u8>(nvMapHandleObj->GetPointer() + surface.offset, surface.size), gpu::texture::Dimensions(surface.width, surface.height), format, tileConfig, gpu::texture::TextureType::e2D);
|
||||||
buffer.texture = state.gpu->texture.FindOrCreate(guestTexture).backing;
|
buffer.texture = state.gpu->texture.FindOrCreate(guestTexture).texture;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (transform) {
|
switch (transform) {
|
||||||
|
Loading…
Reference in New Issue
Block a user