mirror of
https://github.com/Yours3lf/rpi-vk-driver.git
synced 2025-02-26 23:54:17 +01:00
depth texture reading and buffer copying works now
This commit is contained in:
parent
733aa0a25e
commit
e7294b896e
@ -839,6 +839,9 @@ uint8_t getTextureDataType(VkFormat format)
|
|||||||
return 8; //etc1
|
return 8; //etc1
|
||||||
case VK_FORMAT_G8B8G8R8_422_UNORM:
|
case VK_FORMAT_G8B8G8R8_422_UNORM:
|
||||||
return 17; //yuyv422r (raster format = not in T format, yuyv)
|
return 17; //yuyv422r (raster format = not in T format, yuyv)
|
||||||
|
case VK_FORMAT_X8_D24_UNORM_PACK32:
|
||||||
|
case VK_FORMAT_D24_UNORM_S8_UINT:
|
||||||
|
return 0; //rgba8
|
||||||
case VK_FORMAT_UNDEFINED: //TODO
|
case VK_FORMAT_UNDEFINED: //TODO
|
||||||
return -1;
|
return -1;
|
||||||
default://
|
default://
|
||||||
@ -917,8 +920,17 @@ uint32_t getRenderTargetFormatVC4(VkFormat format)
|
|||||||
{
|
{
|
||||||
case VK_FORMAT_R16G16B16A16_SFLOAT: //HDR mode set in tile binning config mode, so just return a valid format
|
case VK_FORMAT_R16G16B16A16_SFLOAT: //HDR mode set in tile binning config mode, so just return a valid format
|
||||||
case VK_FORMAT_R8G8B8A8_UNORM:
|
case VK_FORMAT_R8G8B8A8_UNORM:
|
||||||
|
//only here so we can do emulated buffer copies to depth textures
|
||||||
|
case VK_FORMAT_X8_D24_UNORM_PACK32:
|
||||||
|
case VK_FORMAT_D24_UNORM_S8_UINT:
|
||||||
return VC4_RENDER_CONFIG_FORMAT_RGBA8888;
|
return VC4_RENDER_CONFIG_FORMAT_RGBA8888;
|
||||||
case VK_FORMAT_B5G6R5_UNORM_PACK16:
|
case VK_FORMAT_B5G6R5_UNORM_PACK16:
|
||||||
|
//TODO
|
||||||
|
//case VK_FORMAT_R5G5B5A1_UNORM_PACK16:
|
||||||
|
//case VK_FORMAT_R4G4B4A4_UNORM_PACK16:
|
||||||
|
//case VK_FORMAT_R8G8_UNORM:
|
||||||
|
//case VK_FORMAT_R16_SFLOAT:
|
||||||
|
//case VK_FORMAT_R16_SINT:
|
||||||
return VC4_RENDER_CONFIG_FORMAT_BGR565;
|
return VC4_RENDER_CONFIG_FORMAT_BGR565;
|
||||||
default:
|
default:
|
||||||
fprintf(stderr, "rendertarget format: %i\n", format);
|
fprintf(stderr, "rendertarget format: %i\n", format);
|
||||||
|
@ -41,20 +41,20 @@ void rpi_vkCmdBeginRenderPass(VkCommandBuffer commandBuffer, const VkRenderPassB
|
|||||||
|
|
||||||
cb->currentSubpass = 0;
|
cb->currentSubpass = 0;
|
||||||
|
|
||||||
//TODO handle multiple attachments
|
|
||||||
_image* i = 0;
|
_image* i = 0;
|
||||||
_image* dsI = 0;
|
_image* dsI = 0;
|
||||||
|
|
||||||
for(uint32_t c = 0; c < cb->fbo->numAttachmentViews; ++c)
|
_renderpass* rp = pRenderPassBegin->renderPass;
|
||||||
|
|
||||||
|
for(uint32_t c = 0; c < rp->subpasses[cb->currentSubpass].colorAttachmentCount; ++c)
|
||||||
{
|
{
|
||||||
if(!isDepthStencilFormat(cb->fbo->attachmentViews[c].image->format))
|
i = cb->fbo->attachmentViews[rp->subpasses[cb->currentSubpass].pColorAttachments[c].attachment].image;
|
||||||
{
|
break; //TODO handle multiple attachments
|
||||||
i = cb->fbo->attachmentViews[c].image;
|
}
|
||||||
}
|
|
||||||
else
|
if(rp->subpasses[cb->currentSubpass].pDepthStencilAttachment)
|
||||||
{
|
{
|
||||||
dsI = cb->fbo->attachmentViews[c].image;
|
dsI = cb->fbo->attachmentViews[rp->subpasses[cb->currentSubpass].pDepthStencilAttachment->attachment].image;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
clFit(commandBuffer, &commandBuffer->binCl, sizeof(CLMarker));
|
clFit(commandBuffer, &commandBuffer->binCl, sizeof(CLMarker));
|
||||||
|
@ -767,7 +767,7 @@ void CreateRenderPass()
|
|||||||
subpassDesc.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS;
|
subpassDesc.pipelineBindPoint = VK_PIPELINE_BIND_POINT_GRAPHICS;
|
||||||
subpassDesc.colorAttachmentCount = 1;
|
subpassDesc.colorAttachmentCount = 1;
|
||||||
subpassDesc.pColorAttachments = &attachRef;
|
subpassDesc.pColorAttachments = &attachRef;
|
||||||
subpassDesc.pDepthStencilAttachment = &depthAttachmentRef;
|
//subpassDesc.pDepthStencilAttachment = &depthAttachmentRef;
|
||||||
|
|
||||||
VkAttachmentDescription attachDesc[2];
|
VkAttachmentDescription attachDesc[2];
|
||||||
attachDesc[0] = {};
|
attachDesc[0] = {};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user