Replace TextureType::(Is|As)Sampled with Castable

Change-Id: Id997f118a8ce9f4f7c42bed306368d3f204b6607
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/34279
Reviewed-by: dan sinclair <dsinclair@chromium.org>
This commit is contained in:
Ben Clayton
2020-11-30 23:30:58 +00:00
parent 1a23756294
commit b062bbdce8
16 changed files with 53 additions and 92 deletions

View File

@@ -19,6 +19,7 @@
#include "src/ast/decorated_variable.h"
#include "src/ast/stage_decoration.h"
#include "src/ast/type/multisampled_texture_type.h"
#include "src/ast/type/sampled_texture_type.h"
#include "src/ast/type/texture_type.h"
#include "src/ast/workgroup_decoration.h"
@@ -318,7 +319,7 @@ Function::ReferencedSampledTextureVariablesImpl(bool multisampled) const {
if ((multisampled &&
!unwrapped_type->Is<ast::type::MultisampledTextureType>()) ||
(!multisampled &&
!unwrapped_type->As<ast::type::TextureType>()->IsSampled())) {
!unwrapped_type->Is<ast::type::SampledTextureType>())) {
continue;
}

View File

@@ -23,6 +23,7 @@
#include "src/ast/type/i32_type.h"
#include "src/ast/type/matrix_type.h"
#include "src/ast/type/pointer_type.h"
#include "src/ast/type/sampled_texture_type.h"
#include "src/ast/type/storage_texture_type.h"
#include "src/ast/type/struct_type.h"
#include "src/ast/type/u32_type.h"
@@ -55,9 +56,9 @@ TEST_F(DepthTextureTypeTest, Is) {
TEST_F(DepthTextureTypeTest, IsTextureType) {
DepthTextureType d(TextureDimension::kCube);
TextureType*ty = &d;
TextureType* ty = &d;
EXPECT_TRUE(ty->Is<DepthTextureType>());
EXPECT_FALSE(ty->IsSampled());
EXPECT_FALSE(ty->Is<SampledTextureType>());
EXPECT_FALSE(ty->Is<StorageTextureType>());
}

View File

@@ -23,6 +23,7 @@
#include "src/ast/type/i32_type.h"
#include "src/ast/type/matrix_type.h"
#include "src/ast/type/pointer_type.h"
#include "src/ast/type/sampled_texture_type.h"
#include "src/ast/type/storage_texture_type.h"
#include "src/ast/type/struct_type.h"
#include "src/ast/type/u32_type.h"
@@ -60,7 +61,7 @@ TEST_F(MultisampledTextureTypeTest, IsTextureType) {
TextureType* ty = &s;
EXPECT_FALSE(ty->Is<DepthTextureType>());
EXPECT_TRUE(ty->Is<MultisampledTextureType>());
EXPECT_FALSE(ty->IsSampled());
EXPECT_FALSE(ty->Is<SampledTextureType>());
EXPECT_FALSE(ty->Is<StorageTextureType>());
}

View File

@@ -30,10 +30,6 @@ SampledTextureType::SampledTextureType(SampledTextureType&&) = default;
SampledTextureType::~SampledTextureType() = default;
bool SampledTextureType::IsSampled() const {
return true;
}
std::string SampledTextureType::type_name() const {
std::ostringstream out;
out << "__sampled_texture_" << dim() << type_->type_name();

View File

@@ -34,9 +34,6 @@ class SampledTextureType : public Castable<SampledTextureType, TextureType> {
SampledTextureType(SampledTextureType&&);
~SampledTextureType() override;
/// @returns true if the type is a sampled texture type
bool IsSampled() const override;
/// @returns the subtype of the sampled texture
Type* type() const { return type_; }

View File

@@ -59,7 +59,7 @@ TEST_F(SampledTextureTypeTest, IsTextureType) {
SampledTextureType s(TextureDimension::kCube, &f32);
TextureType* ty = &s;
EXPECT_FALSE(ty->Is<DepthTextureType>());
EXPECT_TRUE(ty->IsSampled());
EXPECT_TRUE(ty->Is<SampledTextureType>());
EXPECT_FALSE(ty->Is<StorageTextureType>());
}

View File

@@ -26,6 +26,7 @@
#include "src/ast/type/i32_type.h"
#include "src/ast/type/matrix_type.h"
#include "src/ast/type/pointer_type.h"
#include "src/ast/type/sampled_texture_type.h"
#include "src/ast/type/struct_type.h"
#include "src/ast/type/u32_type.h"
#include "src/ast/type/vector_type.h"
@@ -62,7 +63,7 @@ TEST_F(StorageTextureTypeTest, IsTextureType) {
ImageFormat::kRgba32Float);
TextureType* ty = &s;
EXPECT_FALSE(ty->Is<DepthTextureType>());
EXPECT_FALSE(ty->IsSampled());
EXPECT_FALSE(ty->Is<SampledTextureType>());
EXPECT_TRUE(ty->Is<StorageTextureType>());
}

View File

@@ -59,20 +59,6 @@ TextureType::TextureType(TextureType&&) = default;
TextureType::~TextureType() = default;
bool TextureType::IsSampled() const {
return false;
}
const SampledTextureType* TextureType::AsSampled() const {
assert(IsSampled());
return static_cast<const SampledTextureType*>(this);
}
SampledTextureType* TextureType::AsSampled() {
assert(IsSampled());
return static_cast<SampledTextureType*>(this);
}
} // namespace type
} // namespace ast
} // namespace tint

View File

@@ -24,8 +24,6 @@ namespace tint {
namespace ast {
namespace type {
class SampledTextureType;
/// The dimensionality of the texture
enum class TextureDimension {
/// Invalid texture
@@ -60,15 +58,6 @@ class TextureType : public Castable<TextureType, Type> {
/// @returns the texture dimension
TextureDimension dim() const { return dim_; }
/// @returns true if this is a sampled texture
virtual bool IsSampled() const;
/// @returns the texture as a sampled texture
const SampledTextureType* AsSampled() const;
/// @returns the texture as a sampled texture
SampledTextureType* AsSampled();
private:
TextureDimension dim_ = TextureDimension::k1d;
};