Skip to content

Commit

Permalink
backup
Browse files Browse the repository at this point in the history
  • Loading branch information
bluesky013 committed Sep 12, 2023
1 parent 13f84e7 commit bd188a6
Show file tree
Hide file tree
Showing 15 changed files with 247 additions and 709 deletions.
4 changes: 3 additions & 1 deletion native/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1813,6 +1813,8 @@ if(CC_USE_VULKAN)
cocos/renderer/gfx-vulkan/VKGPURecycleBin.cpp
cocos/renderer/gfx-vulkan/VKPipelineCache.cpp
cocos/renderer/gfx-vulkan/VKPipelineCache.h
cocos/renderer/gfx-vulkan/VKFunctions.cpp
cocos/renderer/gfx-vulkan/VKFunctions.h
cocos/renderer/gfx-vulkan/states/VKGeneralBarrier.cpp
cocos/renderer/gfx-vulkan/states/VKGeneralBarrier.h
cocos/renderer/gfx-vulkan/states/VKSampler.cpp
Expand Down Expand Up @@ -3338,7 +3340,7 @@ set(COCOS_SOURCE_LIST_EXCLUDE_GENRATED ${COCOS_SOURCE_LIST})
set(COCOS_GENERATED_LIST)
foreach(src IN LISTS COCOS_SOURCE_LIST_EXCLUDE_GENRATED)
get_source_file_property(IS_GENERATED ${src} GENERATED)
if(IS_GENERATED)
if(IS_GENERATED)
list(REMOVE_ITEM COCOS_SOURCE_LIST_EXCLUDE_GENRATED ${src})
list(APPEND COCOS_GENERATED_LIST ${src})
endif()
Expand Down
11 changes: 1 addition & 10 deletions native/cocos/renderer/gfx-vulkan/VKBuffer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
****************************************************************************/

#include "VKBuffer.h"
#include "VKCommandBuffer.h"
#include "VKCommands.h"
#include "VKDevice.h"
#include "profiler/Profiler.h"
Expand Down Expand Up @@ -80,10 +79,8 @@ void CCVKBuffer::doResize(uint32_t size, uint32_t count) {
createBuffer(size, count);

// Hold reference to keep the old bufferView alive during DescriptorHub::update and IAHub::update.
IntrusivePtr<CCVKGPUBufferView> oldBufferView = _gpuBufferView;
IntrusivePtr<CCVKGPUBufferView> const oldBufferView = _gpuBufferView;
createBufferView(size);
CCVKDevice::getInstance()->gpuDescriptorHub()->update(oldBufferView, _gpuBufferView);
CCVKDevice::getInstance()->gpuIAHub()->update(oldBufferView, _gpuBufferView);
}

void CCVKBuffer::update(const void *buffer, uint32_t size) {
Expand All @@ -94,7 +91,6 @@ void CCVKBuffer::update(const void *buffer, uint32_t size) {
void CCVKGPUBuffer::shutdown() {
CCVKDevice::getInstance()->gpuBarrierManager()->cancel(this);
CCVKDevice::getInstance()->gpuRecycleBin()->collect(this);
CCVKDevice::getInstance()->gpuBufferHub()->erase(this);

CCVKDevice::getInstance()->getMemoryStatus().bufferSize -= size;
CC_PROFILE_MEMORY_DEC(Buffer, size);
Expand All @@ -112,10 +108,5 @@ void CCVKGPUBuffer::init() {
CC_PROFILE_MEMORY_INC(Buffer, size);
}

void CCVKGPUBufferView::shutdown() {
CCVKDevice::getInstance()->gpuDescriptorHub()->disengage(this);
CCVKDevice::getInstance()->gpuIAHub()->disengage(this);
}

} // namespace gfx
} // namespace cc
3 changes: 1 addition & 2 deletions native/cocos/renderer/gfx-vulkan/VKCommandBuffer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -762,8 +762,7 @@ void CCVKCommandBuffer::bindDescriptorSets(VkPipelineBindPoint bindPoint) {
uint32_t dirtyDescriptorSetCount = descriptorSetCount - _firstDirtyDescriptorSet;
for (uint32_t i = _firstDirtyDescriptorSet; i < descriptorSetCount; ++i) {
if (_curGPUDescriptorSets[i]) {
const CCVKGPUDescriptorSet::Instance &instance = _curGPUDescriptorSets[i]->instances[gpuDevice->curBackBufferIndex];
_curVkDescriptorSets[i] = instance.vkDescriptorSet;
_curVkDescriptorSets[i] = _curGPUDescriptorSets[i]->vkDescriptorSet;
} else {
_curVkDescriptorSets[i] = pipelineLayout->setLayouts[i]->defaultDescriptorSet;
}
Expand Down
35 changes: 2 additions & 33 deletions native/cocos/renderer/gfx-vulkan/VKCommands.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ void cmdFuncCCVKCreateTextureView(CCVKDevice *device, CCVKGPUTextureView *gpuTex

void cmdFuncCCVKCreateSampler(CCVKDevice *device, CCVKGPUSampler *gpuSampler) {
VkSamplerCreateInfo createInfo{VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO};
CCVKGPUContext *context = device->gpuContext();
const CCVKGPUContext *context = device->gpuContext();
float maxAnisotropy = context->physicalDeviceProperties.limits.maxSamplerAnisotropy;

createInfo.magFilter = VK_FILTERS[toNumber(gpuSampler->magFilter)];
Expand Down Expand Up @@ -791,7 +791,7 @@ void cmdFuncCCVKCreateRenderPass(CCVKDevice *device, CCVKGPURenderPass *gpuRende
renderPassCreateInfo.dependencyCount = utils::toUint(dependencyManager.subpassDependencies.size());
renderPassCreateInfo.pDependencies = dependencyManager.subpassDependencies.data();

VK_CHECK(device->gpuDevice()->createRenderPass2(device->gpuDevice()->vkDevice, &renderPassCreateInfo,
VK_CHECK(device->getFunctions().createRenderPass2(device->gpuDevice()->vkDevice, &renderPassCreateInfo,
nullptr, &gpuRenderPass->vkRenderPass));
}

Expand Down Expand Up @@ -1263,7 +1263,6 @@ void cmdFuncCCVKUpdateBuffer(CCVKDevice *device, CCVKGPUBuffer *gpuBuffer, const
// back buffer instances update command
uint32_t backBufferIndex = device->gpuDevice()->curBackBufferIndex;
if (gpuBuffer->instanceSize) {
device->gpuBufferHub()->record(gpuBuffer, backBufferIndex, sizeToUpload, !cmdBuffer);
if (!cmdBuffer) {
uint8_t *dst = gpuBuffer->mappedData + backBufferIndex * gpuBuffer->instanceSize;
memcpy(dst, dataToUpload, sizeToUpload);
Expand Down Expand Up @@ -1692,35 +1691,5 @@ void CCVKGPUBarrierManager::update(CCVKGPUTransportHub *transportHub) {
_texturesToBeChecked.clear();
}

void CCVKGPUBufferHub::flush(CCVKGPUTransportHub *transportHub) {
auto &buffers = _buffersToBeUpdated[_device->curBackBufferIndex];
if (buffers.empty()) return;

bool needTransferCmds = false;
for (auto &buffer : buffers) {
if (buffer.second.canMemcpy) {
uint8_t *src = buffer.first->mappedData + buffer.second.srcIndex * buffer.first->instanceSize;
uint8_t *dst = buffer.first->mappedData + _device->curBackBufferIndex * buffer.first->instanceSize;
memcpy(dst, src, buffer.second.size);
} else {
needTransferCmds = true;
}
}
if (needTransferCmds) {
transportHub->checkIn([&](const CCVKGPUCommandBuffer *gpuCommandBuffer) {
VkBufferCopy region;
for (auto &buffer : buffers) {
if (buffer.second.canMemcpy) continue;
region.srcOffset = buffer.first->getStartOffset(buffer.second.srcIndex);
region.dstOffset = buffer.first->getStartOffset(_device->curBackBufferIndex);
region.size = buffer.second.size;
vkCmdCopyBuffer(gpuCommandBuffer->vkCommandBuffer, buffer.first->vkBuffer, buffer.first->vkBuffer, 1, &region);
}
});
}

buffers.clear();
}

} // namespace gfx
} // namespace cc
Loading

0 comments on commit bd188a6

Please sign in to comment.