SWDEV-207312 - Fix images_write_cube failure for gfx10

Change-Id: I7f6a8c77eb712103e4c0a5f36bba95093ffbff98
Esse commit está contido em:
Jason Tang
2020-03-12 13:33:27 -04:00
commit 9cfb973c3f
2 arquivos alterados com 30 adições e 18 exclusões
+21 -15
Ver Arquivo
@@ -22,11 +22,11 @@
#ifndef WITHOUT_HSA_BACKEND
#ifndef _WIN32
#include <GL/glx.h>
#include <EGL/egl.h>
#else
#include <GL/gl.h>
#ifndef _WIN32
#include <GL/glx.h>
#include <EGL/egl.h>
#else
#include <GL/gl.h>
#include <EGL/egl.h>
typedef _XDisplay Display;
typedef __GLXcontextRec* GLXContext;
@@ -77,18 +77,24 @@ class image_metadata {
return true;
}
bool setLayer(uint32_t layer) {
data->word3.bits.type = SQ_RSRC_IMG_2D_ARRAY;
data->word5.bits.last_array = layer;
data->word5.bits.base_array = layer;
return true;
}
bool setFace(GLenum face) {
bool setFace(GLenum face, int32_t gfxipMajor) {
int index = face - GL_TEXTURE_CUBE_MAP_POSITIVE_X;
if (index < 0 || index > 5) return false;
if (data->word3.bits.type != SQ_RSRC_IMG_CUBE) return false;
return setLayer(index);
if (index < 0 || index > 5) {
return false;
}
if (data->word3.bits.type != SQ_RSRC_IMG_CUBE) {
return false;
}
data->word3.bits.type = SQ_RSRC_IMG_2D_ARRAY;
if (gfxipMajor >= 10) {
// The base array is moved to word4 for gfx10
data->word4.u32_all = index << 16;
} else {
data->word5.bits.last_array = index;
data->word5.bits.base_array = index;
}
return true;
}
};
+9 -3
Ver Arquivo
@@ -1028,11 +1028,17 @@ bool Image::createInteropImage() {
}
image_metadata desc;
if (!desc.create(amdImageDesc_)) return false;
if (!desc.create(amdImageDesc_)) {
return false;
}
if (!desc.setMipLevel(obj->getGLMipLevel())) return false;
if (!desc.setMipLevel(obj->getGLMipLevel())) {
return false;
}
if (obj->getGLTarget() == GL_TEXTURE_CUBE_MAP) desc.setFace(obj->getCubemapFace());
if (obj->getGLTarget() == GL_TEXTURE_CUBE_MAP) {
desc.setFace(obj->getCubemapFace(), dev().deviceInfo().gfxipVersion_ / 100);
}
hsa_status_t err =
hsa_amd_image_create(dev().getBackendDevice(), &imageDescriptor_, amdImageDesc_,