-#include <msp/gl/extensions/arb_direct_state_access.h>
-#include <msp/gl/extensions/arb_texture_multisample.h>
-#include <msp/gl/extensions/arb_texture_storage_multisample.h>
-#include "deviceinfo.h"
+#include "device.h"
#include "error.h"
#include "texture2dmultisample.h"
namespace Msp {
namespace GL {
-Texture2DMultisample::Texture2DMultisample():
- Texture(GL_TEXTURE_2D_MULTISAMPLE),
- width(0),
- height(0)
-{
- static Require _req(ARB_texture_multisample);
-}
-
void Texture2DMultisample::storage(PixelFormat fmt, unsigned wd, unsigned ht, unsigned sm)
{
if(width>0)
}
if(wd==0 || ht==0)
throw invalid_argument("Texture2DMultisample::storage");
- if(!sm || sm>DeviceInfo::get_global().limits.max_samples)
+ if(!sm || sm>Device::get_current().get_info().limits.max_samples)
throw invalid_argument("Texture2DMultisample::storage");
set_format(fmt);
height = ht;
samples = sm;
- GLenum gl_fmt = get_gl_pixelformat(storage_fmt);
- if(ARB_texture_storage_multisample)
- {
- if(ARB_direct_state_access)
- glTextureStorage2DMultisample(id, samples, gl_fmt, width, height, false);
- else
- {
- bind_scratch();
- glTexStorage2DMultisample(target, samples, gl_fmt, width, height, false);
- }
- }
- else
- {
- bind_scratch();
- glTexImage2DMultisample(target, samples, gl_fmt, width, height, false);
- }
- apply_swizzle();
+ allocate();
}
-void Texture2DMultisample::image(const Graphics::Image &, unsigned)
+void Texture2DMultisample::image(unsigned, const void *)
{
throw invalid_operation("Texture2DMultisample::image");
}
-uint64_t Texture2DMultisample::get_data_size() const
+void Texture2DMultisample::image(const Graphics::Image &, unsigned)
{
- return id ? width*height*get_pixel_size(format)*samples : 0;
+ throw invalid_operation("Texture2DMultisample::image");
}
} // namespace GL