Skip to content

Commit

Permalink
Merge pull request #95945 from stuartcarnie/sgc/metal_mobile_fix
Browse files Browse the repository at this point in the history
Metal: Fix artefacts for mobile render method and disable multi-view
  • Loading branch information
akien-mga authored Aug 23, 2024
2 parents 568589c + bbc7962 commit a1acd38
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions drivers/metal/rendering_device_driver_metal.mm
Original file line number Diff line number Diff line change
Expand Up @@ -3091,12 +3091,22 @@ bool isArrayTexture(MTLTextureType p_type) {
}];
}

// Initialize an array of integers representing the indexes of p_specialization_constants
uint32_t *indexes = (uint32_t *)alloca(p_specialization_constants.size() * sizeof(uint32_t));
for (uint32_t i = 0; i < p_specialization_constants.size(); i++) {
indexes[i] = i;
}
// Sort the array of integers based on the values in p_specialization_constants
std::sort(indexes, &indexes[p_specialization_constants.size()], [&](int a, int b) {
return p_specialization_constants[a].constant_id < p_specialization_constants[b].constant_id;
});

MTLFunctionConstantValues *constantValues = [MTLFunctionConstantValues new];
uint32_t i = 0;
uint32_t j = 0;
while (i < constants.count && j < p_specialization_constants.size()) {
MTLFunctionConstant *curr = constants[i];
PipelineSpecializationConstant const &sc = p_specialization_constants[j];
PipelineSpecializationConstant const &sc = p_specialization_constants[indexes[j]];
if (curr.index == sc.constant_id) {
switch (curr.type) {
case MTLDataTypeBool:
Expand Down Expand Up @@ -3769,7 +3779,7 @@ bool isArrayTexture(MTLTextureType p_type) {
bool RenderingDeviceDriverMetal::has_feature(Features p_feature) {
switch (p_feature) {
case SUPPORTS_MULTIVIEW:
return true;
return false;
case SUPPORTS_FSR_HALF_FLOAT:
return true;
case SUPPORTS_ATTACHMENT_VRS:
Expand Down

0 comments on commit a1acd38

Please sign in to comment.