Stop accessing CVulkanTexture members directly.
This commit is contained in:
parent
d29d83f792
commit
2f111b0b98
5 changed files with 60 additions and 64 deletions
|
@ -1109,8 +1109,8 @@ drm_prepare_basic( struct drm_t *drm, const struct FrameInfo_t *frameInfo )
|
|||
add_plane_property(req, drm->primary, "SRC_X", 0);
|
||||
add_plane_property(req, drm->primary, "SRC_Y", 0);
|
||||
|
||||
const uint16_t srcWidth = frameInfo->layers[ 0 ].tex->m_width;
|
||||
const uint16_t srcHeight = frameInfo->layers[ 0 ].tex->m_height;
|
||||
const uint16_t srcWidth = frameInfo->layers[ 0 ].tex->width();
|
||||
const uint16_t srcHeight = frameInfo->layers[ 0 ].tex->height();
|
||||
|
||||
add_plane_property(req, drm->primary, "SRC_W", srcWidth << 16);
|
||||
add_plane_property(req, drm->primary, "SRC_H", srcHeight << 16);
|
||||
|
@ -1174,8 +1174,8 @@ drm_prepare_liftoff( struct drm_t *drm, const struct FrameInfo_t *frameInfo )
|
|||
liftoff_layer_set_property( drm->lo_layers[ i ], "zpos", frameInfo->layers[ i ].zpos );
|
||||
liftoff_layer_set_property( drm->lo_layers[ i ], "alpha", frameInfo->layers[ i ].opacity * 0xffff);
|
||||
|
||||
const uint16_t srcWidth = frameInfo->layers[ i ].tex->m_width;
|
||||
const uint16_t srcHeight = frameInfo->layers[ i ].tex->m_height;
|
||||
const uint16_t srcWidth = frameInfo->layers[ i ].tex->width();
|
||||
const uint16_t srcHeight = frameInfo->layers[ i ].tex->height();
|
||||
|
||||
liftoff_layer_set_property( drm->lo_layers[ i ], "SRC_X", 0);
|
||||
liftoff_layer_set_property( drm->lo_layers[ i ], "SRC_Y", 0);
|
||||
|
|
|
@ -96,12 +96,12 @@ static void copy_buffer(struct pipewire_state *state, struct pipewire_buffer *bu
|
|||
{
|
||||
std::shared_ptr<CVulkanTexture> &tex = buffer->texture;
|
||||
assert(tex != nullptr);
|
||||
assert(tex->m_format == VK_FORMAT_B8G8R8A8_UNORM);
|
||||
assert(tex->format() == VK_FORMAT_B8G8R8A8_UNORM);
|
||||
|
||||
struct pw_buffer *pw_buffer = buffer->buffer;
|
||||
struct spa_buffer *spa_buffer = pw_buffer->buffer;
|
||||
|
||||
bool needs_reneg = buffer->video_info.size.width != tex->m_width || buffer->video_info.size.height != tex->m_height;
|
||||
bool needs_reneg = buffer->video_info.size.width != tex->width() || buffer->video_info.size.height != tex->height();
|
||||
|
||||
struct spa_meta_header *header = (struct spa_meta_header *) spa_buffer_find_meta_data(spa_buffer, SPA_META_Header, sizeof(*header));
|
||||
if (header != nullptr) {
|
||||
|
@ -123,13 +123,13 @@ static void copy_buffer(struct pipewire_state *state, struct pipewire_buffer *bu
|
|||
|
||||
if (!needs_reneg) {
|
||||
int bpp = 4;
|
||||
for (uint32_t i = 0; i < tex->m_height; i++) {
|
||||
memcpy(buffer->shm.data + i * buffer->shm.stride, (uint8_t *) tex->m_pMappedData + i * tex->m_unRowPitch, bpp * tex->m_width);
|
||||
for (uint32_t i = 0; i < tex->height(); i++) {
|
||||
memcpy(buffer->shm.data + i * buffer->shm.stride, (uint8_t *) tex->mappedData() + i * tex->rowPitch(), bpp * tex->width());
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SPA_DATA_DmaBuf:
|
||||
dmabuf = tex->m_dmabuf;
|
||||
dmabuf = tex->dmabuf();
|
||||
assert(dmabuf.n_planes == 1);
|
||||
chunk->offset = dmabuf.offset[0];
|
||||
chunk->stride = dmabuf.stride[0];
|
||||
|
@ -306,7 +306,7 @@ static void stream_handle_add_buffer(void *user_data, struct pw_buffer *pw_buffe
|
|||
assert(buffer->texture != nullptr);
|
||||
|
||||
if (is_dmabuf) {
|
||||
const struct wlr_dmabuf_attributes dmabuf = buffer->texture->m_dmabuf;
|
||||
const struct wlr_dmabuf_attributes dmabuf = buffer->texture->dmabuf();
|
||||
assert(dmabuf.n_planes == 1);
|
||||
|
||||
off_t size = lseek(dmabuf.fd[0], 0, SEEK_END);
|
||||
|
|
|
@ -2063,8 +2063,8 @@ bool vulkan_init( void )
|
|||
static void update_tmp_images( uint32_t width, uint32_t height )
|
||||
{
|
||||
if ( g_output.tmpOutput != nullptr
|
||||
&& width == g_output.tmpOutput->m_width
|
||||
&& height == g_output.tmpOutput->m_height )
|
||||
&& width == g_output.tmpOutput->width()
|
||||
&& height == g_output.tmpOutput->height() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -2248,14 +2248,14 @@ std::shared_ptr<CVulkanTexture> vulkan_create_texture_from_bits( uint32_t width,
|
|||
.newLayout = VK_IMAGE_LAYOUT_GENERAL,
|
||||
.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
|
||||
.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
|
||||
.image = pTex->m_vkImage,
|
||||
.image = pTex->vkImage(),
|
||||
.subresourceRange = subResRange
|
||||
};
|
||||
|
||||
vkCmdPipelineBarrier( commandBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT,
|
||||
0, 0, nullptr, 0, nullptr, 1, &memoryBarrier );
|
||||
|
||||
vkCmdCopyBufferToImage( commandBuffer, uploadBuffer, pTex->m_vkImage, VK_IMAGE_LAYOUT_GENERAL, 1, ®ion );
|
||||
vkCmdCopyBufferToImage( commandBuffer, uploadBuffer, pTex->vkImage(), VK_IMAGE_LAYOUT_GENERAL, 1, ®ion );
|
||||
|
||||
memoryBarrier.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
|
||||
memoryBarrier.dstAccessMask = VK_ACCESS_MEMORY_READ_BIT | VK_ACCESS_MEMORY_WRITE_BIT;
|
||||
|
@ -2338,7 +2338,7 @@ VkDescriptorSet vulkan_update_descriptor( const struct FrameInfo_t *frameInfo, b
|
|||
bool compositeLayer = i > 0;
|
||||
|
||||
VkImageView imageView = frameInfo->layers[i].tex
|
||||
? frameInfo->layers[i].tex->getView(compositeLayer || !firstSrgb)
|
||||
? frameInfo->layers[i].tex->view(compositeLayer || !firstSrgb)
|
||||
: VK_NULL_HANDLE;
|
||||
|
||||
VulkanSamplerCacheKey_t samplerKey;
|
||||
|
@ -2492,8 +2492,8 @@ bool vulkan_composite( struct FrameInfo_t *frameInfo, std::shared_ptr<CVulkanTex
|
|||
}
|
||||
else
|
||||
{
|
||||
compositeImage = g_output.outputImage[ g_output.nOutImage ]->m_vkImage;
|
||||
targetImageView = g_output.outputImage[ g_output.nOutImage ]->m_srgbView;
|
||||
compositeImage = g_output.outputImage[ g_output.nOutImage ]->vkImage();
|
||||
targetImageView = g_output.outputImage[ g_output.nOutImage ]->srgbView();
|
||||
}
|
||||
|
||||
VkCommandBuffer curCommandBuffer = g_output.commandBuffers[ g_output.nCurCmdBuffer ];
|
||||
|
@ -2562,7 +2562,7 @@ bool vulkan_composite( struct FrameInfo_t *frameInfo, std::shared_ptr<CVulkanTex
|
|||
? VK_QUEUE_FAMILY_FOREIGN_EXT
|
||||
: VK_QUEUE_FAMILY_EXTERNAL_KHR;
|
||||
textureBarriers[i].dstQueueFamilyIndex = queueFamilyIndex;
|
||||
textureBarriers[i].image = frameInfo->layers[i].tex->m_vkImage;
|
||||
textureBarriers[i].image = frameInfo->layers[i].tex->vkImage();
|
||||
textureBarriers[i].subresourceRange = subResRange;
|
||||
}
|
||||
|
||||
|
@ -2622,21 +2622,21 @@ bool vulkan_composite( struct FrameInfo_t *frameInfo, std::shared_ptr<CVulkanTex
|
|||
struct FrameInfo_t fsrFrameInfo = *frameInfo;
|
||||
fsrFrameInfo.layers[0].linearFilter = true;
|
||||
|
||||
uint32_t inputX = fsrFrameInfo.layers[0].tex->m_width;
|
||||
uint32_t inputY = fsrFrameInfo.layers[0].tex->m_height;
|
||||
uint32_t inputX = fsrFrameInfo.layers[0].tex->width();
|
||||
uint32_t inputY = fsrFrameInfo.layers[0].tex->height();
|
||||
|
||||
uint32_t tempX = fsrFrameInfo.layers[0].integerWidth();
|
||||
uint32_t tempY = fsrFrameInfo.layers[0].integerHeight();
|
||||
|
||||
update_tmp_images(tempX, tempY);
|
||||
|
||||
memoryBarrier.image = g_output.tmpOutput->m_vkImage;
|
||||
memoryBarrier.image = g_output.tmpOutput->vkImage();
|
||||
vkCmdPipelineBarrier( curCommandBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
|
||||
0, 0, nullptr, 0, nullptr, 1, &memoryBarrier );
|
||||
|
||||
vkCmdBindPipeline(curCommandBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, easuPipeline);
|
||||
|
||||
VkDescriptorSet descriptorSet = vulkan_update_descriptor( &fsrFrameInfo, true, true, g_output.tmpOutput->m_srgbView );
|
||||
VkDescriptorSet descriptorSet = vulkan_update_descriptor( &fsrFrameInfo, true, true, g_output.tmpOutput->srgbView() );
|
||||
|
||||
vkCmdBindDescriptorSets(curCommandBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, pipelineLayout, 0, 1, &descriptorSet, 0, 0);
|
||||
|
||||
|
@ -2660,7 +2660,7 @@ bool vulkan_composite( struct FrameInfo_t *frameInfo, std::shared_ptr<CVulkanTex
|
|||
.newLayout = VK_IMAGE_LAYOUT_GENERAL,
|
||||
.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
|
||||
.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
|
||||
.image = g_output.tmpOutput->m_vkImage,
|
||||
.image = g_output.tmpOutput->vkImage(),
|
||||
.subresourceRange = subResRange
|
||||
};
|
||||
|
||||
|
@ -2704,7 +2704,7 @@ bool vulkan_composite( struct FrameInfo_t *frameInfo, std::shared_ptr<CVulkanTex
|
|||
|
||||
update_tmp_images(currentOutputWidth, currentOutputHeight);
|
||||
|
||||
memoryBarrier.image = g_output.tmpOutput->m_vkImage;
|
||||
memoryBarrier.image = g_output.tmpOutput->vkImage();
|
||||
vkCmdPipelineBarrier( curCommandBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
|
||||
0, 0, nullptr, 0, nullptr, 1, &memoryBarrier );
|
||||
|
||||
|
@ -2717,7 +2717,7 @@ bool vulkan_composite( struct FrameInfo_t *frameInfo, std::shared_ptr<CVulkanTex
|
|||
|
||||
vkCmdBindPipeline(curCommandBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, get_vk_pipeline(blur_layer_count, blurFrameInfo.ycbcrMask() & 0x1u, blurFrameInfo.blurRadius, type));
|
||||
|
||||
VkDescriptorSet descriptorSet = vulkan_update_descriptor( &blurFrameInfo, false, false, g_output.tmpOutput->m_srgbView );
|
||||
VkDescriptorSet descriptorSet = vulkan_update_descriptor( &blurFrameInfo, false, false, g_output.tmpOutput->srgbView() );
|
||||
|
||||
vkCmdBindDescriptorSets(curCommandBuffer, VK_PIPELINE_BIND_POINT_COMPUTE,
|
||||
pipelineLayout, 0, 1, &descriptorSet, 0, 0);
|
||||
|
@ -2740,14 +2740,14 @@ bool vulkan_composite( struct FrameInfo_t *frameInfo, std::shared_ptr<CVulkanTex
|
|||
.newLayout = VK_IMAGE_LAYOUT_GENERAL,
|
||||
.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
|
||||
.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
|
||||
.image = g_output.tmpOutput->m_vkImage,
|
||||
.image = g_output.tmpOutput->vkImage(),
|
||||
.subresourceRange = subResRange
|
||||
};
|
||||
|
||||
vkCmdPipelineBarrier( curCommandBuffer, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT, VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
|
||||
0, 0, nullptr, 0, nullptr, 1, &memoryBarrier );
|
||||
|
||||
descriptorSet = vulkan_update_descriptor( &blurFrameInfo, false, false, targetImageView, g_output.tmpOutput->m_linearView );
|
||||
descriptorSet = vulkan_update_descriptor( &blurFrameInfo, false, false, targetImageView, g_output.tmpOutput->linearView() );
|
||||
|
||||
vkCmdBindDescriptorSets(curCommandBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, pipelineLayout, 0, 1, &descriptorSet, 0, 0);
|
||||
|
||||
|
@ -2803,7 +2803,7 @@ bool vulkan_composite( struct FrameInfo_t *frameInfo, std::shared_ptr<CVulkanTex
|
|||
.newLayout = VK_IMAGE_LAYOUT_GENERAL,
|
||||
.srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
|
||||
.dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
|
||||
.image = pScreenshotTexture->m_vkImage,
|
||||
.image = pScreenshotTexture->vkImage(),
|
||||
.subresourceRange = subResRange
|
||||
};
|
||||
|
||||
|
@ -2846,7 +2846,7 @@ bool vulkan_composite( struct FrameInfo_t *frameInfo, std::shared_ptr<CVulkanTex
|
|||
.depth = 1
|
||||
};
|
||||
|
||||
vkCmdCopyImage( curCommandBuffer, compositeImage, VK_IMAGE_LAYOUT_GENERAL, pScreenshotTexture->m_vkImage, VK_IMAGE_LAYOUT_GENERAL, 1, ®ion );
|
||||
vkCmdCopyImage( curCommandBuffer, compositeImage, VK_IMAGE_LAYOUT_GENERAL, pScreenshotTexture->vkImage(), VK_IMAGE_LAYOUT_GENERAL, 1, ®ion );
|
||||
}
|
||||
|
||||
bool useForeignQueue = !BIsNested() && g_vulkanSupportsModifiers;
|
||||
|
@ -2926,23 +2926,12 @@ std::shared_ptr<CVulkanTexture> vulkan_get_last_output_image( void )
|
|||
return g_output.outputImage[ !g_output.nOutImage ];
|
||||
}
|
||||
|
||||
uint32_t vulkan_texture_get_fbid( const std::shared_ptr<CVulkanTexture>& vulkanTex )
|
||||
int CVulkanTexture::memoryFence()
|
||||
{
|
||||
if ( !vulkanTex )
|
||||
return 0;
|
||||
|
||||
return vulkanTex->m_FBID;
|
||||
}
|
||||
|
||||
int vulkan_texture_get_fence( const std::shared_ptr<CVulkanTexture>& vulkanTex )
|
||||
{
|
||||
if ( !vulkanTex )
|
||||
return -1;
|
||||
|
||||
const VkMemoryGetFdInfoKHR memory_get_fd_info = {
|
||||
.sType = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR,
|
||||
.pNext = NULL,
|
||||
.memory = vulkanTex->m_vkImageMemory,
|
||||
.memory = m_vkImageMemory,
|
||||
.handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT,
|
||||
};
|
||||
int fence = -1;
|
||||
|
@ -3146,7 +3135,7 @@ std::shared_ptr<CVulkanTexture> vulkan_create_texture_from_wlr_buffer( struct wl
|
|||
.height = height,
|
||||
.depth = 1
|
||||
};
|
||||
vkCmdCopyBufferToImage( commandBuffer, buffer, pTex->m_vkImage, VK_IMAGE_LAYOUT_GENERAL, 1, ®ion );
|
||||
vkCmdCopyBufferToImage( commandBuffer, buffer, pTex->vkImage(), VK_IMAGE_LAYOUT_GENERAL, 1, ®ion );
|
||||
|
||||
std::vector<std::shared_ptr<CVulkanTexture>> refs;
|
||||
refs.push_back( pTex );
|
||||
|
|
|
@ -95,14 +95,26 @@ public:
|
|||
|
||||
bool BInit( uint32_t width, uint32_t height, uint32_t drmFormat, createFlags flags, wlr_dmabuf_attributes *pDMA = nullptr );
|
||||
|
||||
inline VkImageView getView( bool linear )
|
||||
{
|
||||
return linear ? m_linearView : m_srgbView;
|
||||
}
|
||||
inline VkImageView view( bool linear ) { return linear ? m_linearView : m_srgbView; }
|
||||
inline VkImageView linearView() { return m_linearView; }
|
||||
inline VkImageView srgbView() { return m_srgbView; }
|
||||
inline uint32_t width() { return m_width; }
|
||||
inline uint32_t height() { return m_height; }
|
||||
inline uint32_t rowPitch() { return m_unRowPitch; }
|
||||
inline uint32_t fbid() { return m_FBID; }
|
||||
inline void *mappedData() { return m_pMappedData; }
|
||||
inline VkFormat format() { return m_format; }
|
||||
inline const struct wlr_dmabuf_attributes& dmabuf() { return m_dmabuf; }
|
||||
inline VkImage vkImage() { return m_vkImage; }
|
||||
|
||||
int memoryFence();
|
||||
|
||||
CVulkanTexture( void );
|
||||
~CVulkanTexture( void );
|
||||
|
||||
bool m_bTransitioned = false;
|
||||
|
||||
private:
|
||||
bool m_bInitialized = false;
|
||||
|
||||
VkImage m_vkImage = VK_NULL_HANDLE;
|
||||
|
@ -121,8 +133,6 @@ public:
|
|||
VkFormat m_format = VK_FORMAT_UNDEFINED;
|
||||
|
||||
struct wlr_dmabuf_attributes m_dmabuf = {};
|
||||
|
||||
bool m_bTransitioned = false;
|
||||
};
|
||||
|
||||
struct vec2_t
|
||||
|
@ -158,8 +168,8 @@ struct FrameInfo_t
|
|||
bool blackBorder;
|
||||
bool linearFilter;
|
||||
|
||||
uint32_t integerWidth() const { return tex->m_width / scale.x; }
|
||||
uint32_t integerHeight() const { return tex->m_height / scale.y; }
|
||||
uint32_t integerWidth() const { return tex->width() / scale.x; }
|
||||
uint32_t integerHeight() const { return tex->height() / scale.y; }
|
||||
} layers[ k_nMaxLayers ];
|
||||
|
||||
uint32_t borderMask() const {
|
||||
|
@ -177,7 +187,7 @@ struct FrameInfo_t
|
|||
{
|
||||
if ( layers[ i ].tex )
|
||||
{
|
||||
if (layers[ i ].tex->m_format == VK_FORMAT_G8_B8R8_2PLANE_420_UNORM)
|
||||
if (layers[ i ].tex->format() == VK_FORMAT_G8_B8R8_2PLANE_420_UNORM)
|
||||
result |= 1 << i;
|
||||
}
|
||||
}
|
||||
|
@ -200,9 +210,6 @@ std::shared_ptr<CVulkanTexture> vulkan_create_texture_from_dmabuf( struct wlr_dm
|
|||
std::shared_ptr<CVulkanTexture> vulkan_create_texture_from_bits( uint32_t width, uint32_t height, uint32_t drmFormat, CVulkanTexture::createFlags texCreateFlags, void *bits );
|
||||
std::shared_ptr<CVulkanTexture> vulkan_create_texture_from_wlr_buffer( struct wlr_buffer *buf );
|
||||
|
||||
uint32_t vulkan_texture_get_fbid( const std::shared_ptr<CVulkanTexture>& vulkanTex );
|
||||
int vulkan_texture_get_fence( const std::shared_ptr<CVulkanTexture>& vulkanTex );
|
||||
|
||||
bool vulkan_composite( struct FrameInfo_t *frameInfo, std::shared_ptr<CVulkanTexture> pScreenshotTexture );
|
||||
std::shared_ptr<CVulkanTexture> vulkan_get_last_output_image( void );
|
||||
std::shared_ptr<CVulkanTexture> vulkan_acquire_screenshot_texture(bool exportable);
|
||||
|
|
|
@ -1264,7 +1264,7 @@ void MouseCursor::paint(win *window, win *fit, struct FrameInfo_t *frameInfo)
|
|||
layer->zpos = g_zposCursor; // cursor, on top of both bottom layers
|
||||
|
||||
layer->tex = m_texture;
|
||||
layer->fbid = BIsNested() ? 0 : vulkan_texture_get_fbid(m_texture);
|
||||
layer->fbid = BIsNested() ? 0 : m_texture->fbid();
|
||||
|
||||
layer->linearFilter = false;
|
||||
layer->blackBorder = false;
|
||||
|
@ -1812,7 +1812,7 @@ paint_all()
|
|||
layer->imageHeight = g_nOutputHeight;
|
||||
|
||||
layer->tex = vulkan_get_last_output_image();
|
||||
layer->fbid = layer->tex->m_FBID;
|
||||
layer->fbid = layer->tex->fbid();
|
||||
|
||||
layer->linearFilter = false;
|
||||
|
||||
|
@ -1855,12 +1855,12 @@ paint_all()
|
|||
if ( takeScreenshot )
|
||||
{
|
||||
assert( pCaptureTexture != nullptr );
|
||||
assert( pCaptureTexture->m_format == VK_FORMAT_B8G8R8A8_UNORM );
|
||||
assert( pCaptureTexture->format() == VK_FORMAT_B8G8R8A8_UNORM );
|
||||
|
||||
std::thread screenshotThread = std::thread([=] {
|
||||
pthread_setname_np( pthread_self(), "gamescope-scrsh" );
|
||||
|
||||
const uint8_t *mappedData = reinterpret_cast<const uint8_t *>(pCaptureTexture->m_pMappedData);
|
||||
const uint8_t *mappedData = reinterpret_cast<const uint8_t *>(pCaptureTexture->mappedData());
|
||||
|
||||
// Make our own copy of the image to remove the alpha channel.
|
||||
auto imageData = std::vector<uint8_t>(currentOutputWidth * currentOutputHeight * 4);
|
||||
|
@ -1871,9 +1871,9 @@ paint_all()
|
|||
for (uint32_t x = 0; x < currentOutputWidth; x++)
|
||||
{
|
||||
// BGR...
|
||||
imageData[y * pitch + x * comp + 0] = mappedData[y * pCaptureTexture->m_unRowPitch + x * comp + 2];
|
||||
imageData[y * pitch + x * comp + 1] = mappedData[y * pCaptureTexture->m_unRowPitch + x * comp + 1];
|
||||
imageData[y * pitch + x * comp + 2] = mappedData[y * pCaptureTexture->m_unRowPitch + x * comp + 0];
|
||||
imageData[y * pitch + x * comp + 0] = mappedData[y * pCaptureTexture->rowPitch() + x * comp + 2];
|
||||
imageData[y * pitch + x * comp + 1] = mappedData[y * pCaptureTexture->rowPitch() + x * comp + 1];
|
||||
imageData[y * pitch + x * comp + 2] = mappedData[y * pCaptureTexture->rowPitch() + x * comp + 0];
|
||||
imageData[y * pitch + x * comp + 3] = 255;
|
||||
}
|
||||
}
|
||||
|
@ -4335,7 +4335,7 @@ void check_new_wayland_res(xwayland_ctx_t *ctx)
|
|||
}
|
||||
else
|
||||
{
|
||||
fence = vulkan_texture_get_fence( newCommit->vulkanTex );
|
||||
fence = newCommit->vulkanTex->memoryFence();
|
||||
}
|
||||
|
||||
// Whether or not to nudge mango app when this commit is done.
|
||||
|
|
Loading…
Reference in a new issue