<div dir="auto">R-b</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jul 12, 2019, 8:17 AM Samuel Pitoiset <<a href="mailto:samuel.pitoiset@gmail.com">samuel.pitoiset@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Mirror RadeonSI. This also fixes crashes in addrlib.<br>
<br>
v2: - fix ac_nir_to_llvm<br>
<br>
Signed-off-by: Samuel Pitoiset <<a href="mailto:samuel.pitoiset@gmail.com" target="_blank" rel="noreferrer">samuel.pitoiset@gmail.com</a>><br>
---<br>
 src/amd/common/ac_nir_to_llvm.c                    | 14 +++++++-------<br>
 src/amd/vulkan/radv_image.c                        |  4 ++--<br>
 src/amd/vulkan/winsys/amdgpu/radv_amdgpu_surface.c |  6 ++++--<br>
 3 files changed, 13 insertions(+), 11 deletions(-)<br>
<br>
diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c<br>
index 1fbbe507eae..96bf89a8bf9 100644<br>
--- a/src/amd/common/ac_nir_to_llvm.c<br>
+++ b/src/amd/common/ac_nir_to_llvm.c<br>
@@ -84,7 +84,7 @@ get_ac_sampler_dim(const struct ac_llvm_context *ctx, enum glsl_sampler_dim dim,<br>
 {<br>
        switch (dim) {<br>
        case GLSL_SAMPLER_DIM_1D:<br>
-               if (ctx->chip_class >= GFX9)<br>
+               if (ctx->chip_class == GFX9)<br>
                        return is_array ? ac_image_2darray : ac_image_2d;<br>
                return is_array ? ac_image_1darray : ac_image_1d;<br>
        case GLSL_SAMPLER_DIM_2D:<br>
@@ -1360,7 +1360,7 @@ static LLVMValueRef build_tex_intrinsic(struct ac_nir_context *ctx,<br>
        }<br>
<br>
        /* Fixup for GFX9 which allocates 1D textures as 2D. */<br>
-       if (instr->op == nir_texop_lod && ctx->ac.chip_class >= GFX9) {<br>
+       if (instr->op == nir_texop_lod && ctx->ac.chip_class == GFX9) {<br>
                if ((args->dim == ac_image_2darray ||<br>
                     args->dim == ac_image_2d) && !args->coords[1]) {<br>
                        args->coords[1] = ctx->ac.i32_0;<br>
@@ -2334,7 +2334,7 @@ static void get_image_coords(struct ac_nir_context *ctx,<br>
                                          dim == GLSL_SAMPLER_DIM_SUBPASS_MS);<br>
        bool is_ms = (dim == GLSL_SAMPLER_DIM_MS ||<br>
                      dim == GLSL_SAMPLER_DIM_SUBPASS_MS);<br>
-       bool gfx9_1d = ctx->ac.chip_class >= GFX9 && dim == GLSL_SAMPLER_DIM_1D;<br>
+       bool gfx9_1d = ctx->ac.chip_class == GFX9 && dim == GLSL_SAMPLER_DIM_1D;<br>
        assert(!add_frag_pos && "Input attachments should be lowered by this point.");<br>
        count = image_type_to_components_count(dim, is_array);<br>
<br>
@@ -2706,7 +2706,7 @@ static LLVMValueRef visit_image_size(struct ac_nir_context *ctx,<br>
                z = LLVMBuildSDiv(ctx->ac.builder, z, six, "");<br>
                res = LLVMBuildInsertElement(ctx->ac.builder, res, z, two, "");<br>
        }<br>
-       if (ctx->ac.chip_class >= GFX9 && dim == GLSL_SAMPLER_DIM_1D && is_array) {<br>
+       if (ctx->ac.chip_class == GFX9 && dim == GLSL_SAMPLER_DIM_1D && is_array) {<br>
                LLVMValueRef layers = LLVMBuildExtractElement(ctx->ac.builder, res, two, "");<br>
                res = LLVMBuildInsertElement(ctx->ac.builder, res, layers,<br>
                                                ctx->ac.i32_1, "");<br>
@@ -3829,7 +3829,7 @@ static void visit_tex(struct ac_nir_context *ctx, nir_tex_instr *instr)<br>
                        break;<br>
                case GLSL_SAMPLER_DIM_1D:<br>
                        num_src_deriv_channels = 1;<br>
-                       if (ctx->ac.chip_class >= GFX9) {<br>
+                       if (ctx->ac.chip_class == GFX9) {<br>
                                num_dest_deriv_channels = 2;<br>
                        } else {<br>
                                num_dest_deriv_channels = 1;<br>
@@ -3877,7 +3877,7 @@ static void visit_tex(struct ac_nir_context *ctx, nir_tex_instr *instr)<br>
                args.coords[2] = apply_round_slice(&ctx->ac, args.coords[2]);<br>
        }<br>
<br>
-       if (ctx->ac.chip_class >= GFX9 &&<br>
+       if (ctx->ac.chip_class == GFX9 &&<br>
            instr->sampler_dim == GLSL_SAMPLER_DIM_1D &&<br>
            instr->op != nir_texop_lod) {<br>
                LLVMValueRef filler;<br>
@@ -3963,7 +3963,7 @@ static void visit_tex(struct ac_nir_context *ctx, nir_tex_instr *instr)<br>
                LLVMValueRef z = LLVMBuildExtractElement(ctx->ac.builder, result, two, "");<br>
                z = LLVMBuildSDiv(ctx->ac.builder, z, six, "");<br>
                result = LLVMBuildInsertElement(ctx->ac.builder, result, z, two, "");<br>
-       } else if (ctx->ac.chip_class >= GFX9 &&<br>
+       } else if (ctx->ac.chip_class == GFX9 &&<br>
                   instr->op == nir_texop_txs &&<br>
                   instr->sampler_dim == GLSL_SAMPLER_DIM_1D &&<br>
                   instr->is_array) {<br>
diff --git a/src/amd/vulkan/radv_image.c b/src/amd/vulkan/radv_image.c<br>
index 368bd5d839d..ccbec36849e 100644<br>
--- a/src/amd/vulkan/radv_image.c<br>
+++ b/src/amd/vulkan/radv_image.c<br>
@@ -649,7 +649,7 @@ gfx10_make_texture_descriptor(struct radv_device *device,<br>
        }<br>
<br>
        type = radv_tex_dim(image->type, view_type, image->info.array_size, image->info.samples,<br>
-                           is_storage_image, device->physical_device->rad_info.chip_class >= GFX9);<br>
+                           is_storage_image, device->physical_device->rad_info.chip_class == GFX9);<br>
        if (type == V_008F1C_SQ_RSRC_IMG_1D_ARRAY) {<br>
                height = 1;<br>
                depth = image->info.array_size;<br>
@@ -796,7 +796,7 @@ si_make_texture_descriptor(struct radv_device *device,<br>
                        data_format = V_008F14_IMG_DATA_FORMAT_S8_16;<br>
        }<br>
        type = radv_tex_dim(image->type, view_type, image->info.array_size, image->info.samples,<br>
-                           is_storage_image, device->physical_device->rad_info.chip_class >= GFX9);<br>
+                           is_storage_image, device->physical_device->rad_info.chip_class == GFX9);<br>
        if (type == V_008F1C_SQ_RSRC_IMG_1D_ARRAY) {<br>
                height = 1;<br>
                depth = image->info.array_size;<br>
diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_surface.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_surface.c<br>
index 3f4cad861c2..598baa2addc 100644<br>
--- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_surface.c<br>
+++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_surface.c<br>
@@ -90,8 +90,10 @@ static int radv_amdgpu_winsys_surface_init(struct radeon_winsys *_ws,<br>
        struct ac_surf_config config;<br>
<br>
        memcpy(&<a href="http://config.info" rel="noreferrer noreferrer" target="_blank">config.info</a>, surf_info, sizeof(<a href="http://config.info" rel="noreferrer noreferrer" target="_blank">config.info</a>));<br>
-       config.is_3d = !!(type == RADEON_SURF_TYPE_3D);<br>
-       config.is_cube = !!(type == RADEON_SURF_TYPE_CUBEMAP);<br>
+       config.is_1d = type == RADEON_SURF_TYPE_1D ||<br>
+                      type == RADEON_SURF_TYPE_1D_ARRAY;<br>
+       config.is_3d = type == RADEON_SURF_TYPE_3D;<br>
+       config.is_cube = type == RADEON_SURF_TYPE_CUBEMAP;<br>
<br>
        return ac_compute_surface(ws->addrlib, &ws->info, &config, mode, surf);<br>
 }<br>
-- <br>
2.22.0<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank" rel="noreferrer">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a></blockquote></div>