mirror of
https://github.com/EduApps-CDG/OpenDX
synced 2024-12-30 09:45:37 +01:00
[d3d11] Catch invalid ClearUnorderedAccessViewFloat calls
This method cannot be called on integer UAVs.
This commit is contained in:
parent
b20ceec727
commit
11b7fc8914
@ -838,6 +838,16 @@ namespace dxvk {
|
|||||||
if (!uav)
|
if (!uav)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
auto imgView = uav->GetImageView();
|
||||||
|
auto bufView = uav->GetBufferView();
|
||||||
|
|
||||||
|
const DxvkFormatInfo* info = nullptr;
|
||||||
|
if (imgView != nullptr) info = imgView->formatInfo();
|
||||||
|
if (bufView != nullptr) info = bufView->formatInfo();
|
||||||
|
|
||||||
|
if (!info || info->flags.any(DxvkFormatFlag::SampledSInt, DxvkFormatFlag::SampledUInt))
|
||||||
|
return;
|
||||||
|
|
||||||
VkClearValue clearValue;
|
VkClearValue clearValue;
|
||||||
clearValue.color.float32[0] = Values[0];
|
clearValue.color.float32[0] = Values[0];
|
||||||
clearValue.color.float32[1] = Values[1];
|
clearValue.color.float32[1] = Values[1];
|
||||||
@ -847,7 +857,7 @@ namespace dxvk {
|
|||||||
if (uav->GetResourceType() == D3D11_RESOURCE_DIMENSION_BUFFER) {
|
if (uav->GetResourceType() == D3D11_RESOURCE_DIMENSION_BUFFER) {
|
||||||
EmitCs([
|
EmitCs([
|
||||||
cClearValue = clearValue,
|
cClearValue = clearValue,
|
||||||
cDstView = uav->GetBufferView()
|
cDstView = std::move(bufView)
|
||||||
] (DxvkContext* ctx) {
|
] (DxvkContext* ctx) {
|
||||||
ctx->clearBufferView(
|
ctx->clearBufferView(
|
||||||
cDstView, 0,
|
cDstView, 0,
|
||||||
@ -857,7 +867,7 @@ namespace dxvk {
|
|||||||
} else {
|
} else {
|
||||||
EmitCs([
|
EmitCs([
|
||||||
cClearValue = clearValue,
|
cClearValue = clearValue,
|
||||||
cDstView = uav->GetImageView()
|
cDstView = std::move(imgView)
|
||||||
] (DxvkContext* ctx) {
|
] (DxvkContext* ctx) {
|
||||||
ctx->clearImageView(cDstView,
|
ctx->clearImageView(cDstView,
|
||||||
VkOffset3D { 0, 0, 0 },
|
VkOffset3D { 0, 0, 0 },
|
||||||
|
Loading…
x
Reference in New Issue
Block a user