Revert miscommit of unfinished cogl changes in r2920

This commit is contained in:
Matthew Allum 2008-06-14 22:07:23 +00:00
parent 000806c4c3
commit 6fe23fefe9
4 changed files with 16 additions and 91 deletions

View File

@ -26,8 +26,6 @@
#ifndef __COGL_DEFINES_H__ #ifndef __COGL_DEFINES_H__
#define __COGL_DEFINES_H__ #define __COGL_DEFINES_H__
#define GL_GLEXT_PROTOTYPES 1
#include <@CLUTTER_GL_HEADER@> #include <@CLUTTER_GL_HEADER@>
G_BEGIN_DECLS G_BEGIN_DECLS

View File

@ -38,9 +38,6 @@
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
// #define HAVE_PBOS 1
#include <GL/glext.h>
/* /*
#define COGL_DEBUG 1 #define COGL_DEBUG 1
@ -247,39 +244,7 @@ _cogl_texture_upload_to_gl (CoglTexture *tex)
x_span->start, x_span->start,
y_span->start, y_span->start,
FALSE); FALSE);
{
#if HAVE_PBOS
void *io_mem;
GLuint buf;
buf = g_array_index (tex->slice_buf_handles, GLuint,
y * tex->slice_x_spans->len + x);
glBindBuffer (GL_PIXEL_UNPACK_BUFFER_ARB, buf);
glBufferData (GL_PIXEL_UNPACK_BUFFER_ARB,
tex->bitmap.height * tex->bitmap.rowstride,
NULL,
GL_STREAM_DRAW);
io_mem = glMapBuffer (GL_PIXEL_UNPACK_BUFFER_ARB, GL_WRITE_ONLY);
g_assert (io_mem);
memcpy (io_mem, tex->bitmap.data,
tex->bitmap.height * tex->bitmap.rowstride);
GE( glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER_ARB) );
GE( glBindTexture (tex->gl_target, gl_handle) );
GE( glTexSubImage2D (tex->gl_target, 0, 0, 0,
x_span->size - x_span->waste,
y_span->size - y_span->waste,
tex->gl_format, tex->gl_type,
(char *)NULL) );
GE( glBindBuffer(GL_PIXEL_UNPACK_BUFFER_ARB, 0) );
#else
/* Upload new image data */ /* Upload new image data */
GE( glBindTexture (tex->gl_target, gl_handle) ); GE( glBindTexture (tex->gl_target, gl_handle) );
@ -288,8 +253,6 @@ _cogl_texture_upload_to_gl (CoglTexture *tex)
y_span->size - y_span->waste, y_span->size - y_span->waste,
tex->gl_format, tex->gl_type, tex->gl_format, tex->gl_type,
tex->bitmap.data) ); tex->bitmap.data) );
#endif
}
} }
} }
@ -605,9 +568,6 @@ _cogl_texture_slices_create (CoglTexture *tex)
gint max_width; gint max_width;
gint max_height; gint max_height;
GLuint *gl_handles; GLuint *gl_handles;
#if HAVE_PBOS
GLuint *buf_handles;
#endif
gint n_x_slices; gint n_x_slices;
gint n_y_slices; gint n_y_slices;
gint n_slices; gint n_slices;
@ -743,17 +703,7 @@ _cogl_texture_slices_create (CoglTexture *tex)
gl_handles = (GLuint*) tex->slice_gl_handles->data; gl_handles = (GLuint*) tex->slice_gl_handles->data;
GE( glGenTextures (n_slices, gl_handles) ); GE( glGenTextures (n_slices, gl_handles) );
#if HAVE_PBOS
tex->slice_buf_handles = g_array_sized_new (FALSE, FALSE,
sizeof (GLuint),
n_slices);
g_array_set_size (tex->slice_buf_handles, n_slices);
buf_handles = (GLuint*) tex->slice_buf_handles->data;
GE( glGenBuffers(n_slices, buf_handles) );
#endif
/* Init each GL texture object */ /* Init each GL texture object */
for (y = 0; y < n_y_slices; ++y) for (y = 0; y < n_y_slices; ++y)
@ -762,11 +712,8 @@ _cogl_texture_slices_create (CoglTexture *tex)
for (x = 0; x < n_x_slices; ++x) for (x = 0; x < n_x_slices; ++x)
{ {
#if HAVE_PBOS
glBindBuffer(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
#endif
x_span = &g_array_index (tex->slice_x_spans, CoglTexSliceSpan, x); x_span = &g_array_index (tex->slice_x_spans, CoglTexSliceSpan, x);
#if COGL_DEBUG #if COGL_DEBUG
printf ("CREATE SLICE (%d,%d)\n", x,y); printf ("CREATE SLICE (%d,%d)\n", x,y);
printf ("size: (%d x %d)\n", printf ("size: (%d x %d)\n",
@ -774,12 +721,9 @@ _cogl_texture_slices_create (CoglTexture *tex)
y_span->size - y_span->waste); y_span->size - y_span->waste);
#endif #endif
/* Setup texture parameters */ /* Setup texture parameters */
GE( glBindTexture (tex->gl_target, GE( glBindTexture (tex->gl_target, gl_handles[y * n_x_slices + x]) );
gl_handles[y * n_x_slices + x]) ); GE( glTexParameteri (tex->gl_target, GL_TEXTURE_MAG_FILTER, tex->mag_filter) );
GE( glTexParameteri (tex->gl_target, GE( glTexParameteri (tex->gl_target, GL_TEXTURE_MIN_FILTER, tex->min_filter) );
GL_TEXTURE_MAG_FILTER, tex->mag_filter) );
GE( glTexParameteri (tex->gl_target,
GL_TEXTURE_MIN_FILTER, tex->min_filter) );
GE( glTexParameteri (tex->gl_target, GL_TEXTURE_WRAP_S, GE( glTexParameteri (tex->gl_target, GL_TEXTURE_WRAP_S,
tex->wrap_mode) ); tex->wrap_mode) );
@ -824,15 +768,6 @@ _cogl_texture_slices_free (CoglTexture *tex)
g_array_free (tex->slice_gl_handles, TRUE); g_array_free (tex->slice_gl_handles, TRUE);
} }
#if HAVE_PBOS
if (tex->slice_buf_handles != NULL)
{
glDeleteBuffers(tex->slice_buf_handles->len,
(GLuint*) tex->slice_buf_handles->data);
}
#endif
} }
static gboolean static gboolean

View File

@ -51,7 +51,6 @@ struct _CoglTexture
GArray *slice_x_spans; GArray *slice_x_spans;
GArray *slice_y_spans; GArray *slice_y_spans;
GArray *slice_gl_handles; GArray *slice_gl_handles;
GArray *slice_buf_handles;
gint max_waste; gint max_waste;
COGLenum min_filter; COGLenum min_filter;
COGLenum mag_filter; COGLenum mag_filter;

View File

@ -59,8 +59,6 @@ main (int argc, char *argv[])
ClutterActor *texture; ClutterActor *texture;
ClutterActor *stage; ClutterActor *stage;
gint i, j; gint i, j;
guchar *pixels;
int rowstride;
clutter_init (&argc, &argv); clutter_init (&argc, &argv);
@ -69,27 +67,23 @@ main (int argc, char *argv[])
SPIN(); SPIN();
pixels = make_rgba_data (1000, 1000, 4, TRUE, &rowstride);
texture = clutter_texture_new ();
clutter_container_add (CLUTTER_CONTAINER (stage), texture, NULL);
clutter_actor_set_size (texture, 400, 400);
clutter_actor_show (texture);
for (i=100; i<=5000; i += 100) for (i=100; i<=5000; i += 100)
for (j=0; j<4; j++) for (j=0; j<4; j++)
{ {
const int width = 1000; const int width = i+j;
const int height = 1000; const int height = i+j;
const gboolean has_alpha = TRUE; const gboolean has_alpha = TRUE;
const int bpp = has_alpha ? 4 : 3; const int bpp = has_alpha ? 4 : 3;
int rowstride;
guchar *pixels;
pixels = make_rgba_data (width, height, bpp, has_alpha, &rowstride);
if (!pixels) if (!pixels)
g_error("No memory for %ix%i RGBA data failed", width, height); g_error("No memory for %ix%i RGBA data failed", width, height);
printf("o %ix%i texture... ", width, height); printf("o %ix%i texture... ", width, height);
texture = clutter_texture_new ();
if (!clutter_texture_set_from_rgb_data (CLUTTER_TEXTURE (texture), if (!clutter_texture_set_from_rgb_data (CLUTTER_TEXTURE (texture),
pixels, pixels,
has_alpha, has_alpha,
@ -99,22 +93,21 @@ main (int argc, char *argv[])
bpp, bpp,
0, NULL)) 0, NULL))
g_error("texture creation failed"); g_error("texture creation failed");
// g_free(pixels); g_free(pixels);
printf("uploaded to texture...\n"); printf("uploaded to texture...\n");
clutter_container_add (CLUTTER_CONTAINER (stage), texture, NULL);
clutter_actor_set_size (texture, 400, 400);
clutter_actor_show (texture);
/* Hide & show to unreaise then realise the texture */ /* Hide & show to unreaise then realise the texture */
clutter_actor_hide (texture); clutter_actor_hide (texture);
clutter_actor_show (texture); clutter_actor_show (texture);
// clutter_actor_unrealize (texture);
SPIN(); SPIN();
// clutter_actor_destroy (texture); clutter_container_remove (CLUTTER_CONTAINER (stage), texture, NULL);
// clutter_container_remove (CLUTTER_CONTAINER (stage), texture, NULL);
} }
return EXIT_SUCCESS; return EXIT_SUCCESS;