mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-12-15 08:03:30 -08:00
tests/shader_runner: Add support for cube resources.
This commit is contained in:
committed by
Henri Verbeet
parent
b58ff893a5
commit
e312207124
Notes:
Henri Verbeet
2025-06-26 17:50:53 +02:00
Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1606
@@ -455,10 +455,14 @@ static bool init_resource_texture(struct gl_resource *resource, const struct res
|
||||
else
|
||||
target = GL_TEXTURE_2D;
|
||||
}
|
||||
else
|
||||
else if (params->desc.dimension == RESOURCE_DIMENSION_3D)
|
||||
{
|
||||
target = GL_TEXTURE_3D;
|
||||
}
|
||||
else
|
||||
{
|
||||
target = GL_TEXTURE_CUBE_MAP;
|
||||
}
|
||||
resource->target = target;
|
||||
|
||||
resource->format = get_format_info(params->desc.format, params->is_shadow);
|
||||
@@ -487,7 +491,7 @@ static bool init_resource_texture(struct gl_resource *resource, const struct res
|
||||
if (params->desc.dimension == RESOURCE_DIMENSION_3D)
|
||||
glTexStorage3D(target, params->desc.level_count, resource->format->internal_format,
|
||||
params->desc.width, params->desc.height, params->desc.depth);
|
||||
else if (params->desc.layer_count > 1)
|
||||
else if (params->desc.layer_count > 1 && params->desc.dimension != RESOURCE_DIMENSION_CUBE)
|
||||
glTexStorage3D(target, params->desc.level_count, resource->format->internal_format,
|
||||
params->desc.width, params->desc.height, params->desc.layer_count);
|
||||
else
|
||||
@@ -511,6 +515,25 @@ static bool init_resource_texture(struct gl_resource *resource, const struct res
|
||||
resource->format->type, params->data + offset);
|
||||
offset += w * h * d * params->desc.texel_size;
|
||||
}
|
||||
else if (params->desc.dimension == RESOURCE_DIMENSION_CUBE)
|
||||
{
|
||||
static const GLenum faces[] =
|
||||
{
|
||||
GL_TEXTURE_CUBE_MAP_POSITIVE_X,
|
||||
GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
|
||||
GL_TEXTURE_CUBE_MAP_POSITIVE_Y,
|
||||
GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
|
||||
GL_TEXTURE_CUBE_MAP_POSITIVE_Z,
|
||||
GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
|
||||
};
|
||||
|
||||
for (unsigned int face = 0; face < 6; ++face)
|
||||
{
|
||||
glTexSubImage2D(faces[face], i, 0, 0, w, h, resource->format->format,
|
||||
resource->format->type, params->data + offset);
|
||||
offset += w * h * params->desc.texel_size;
|
||||
}
|
||||
}
|
||||
else if (params->desc.layer_count > 1)
|
||||
{
|
||||
glTexSubImage3D(target, i, 0, 0, 0, w, h, params->desc.layer_count, resource->format->format,
|
||||
|
||||
Reference in New Issue
Block a user