r300g, radeon-gallium: Fix API, cleanup.
Something called "validate" should return FALSE on failure, not TRUE.
This commit is contained in:
parent
27b3c435ba
commit
ca83d5a8db
|
@ -531,10 +531,11 @@ validate:
|
||||||
} else {
|
} else {
|
||||||
debug_printf("No VBO while emitting dirty state!\n");
|
debug_printf("No VBO while emitting dirty state!\n");
|
||||||
}
|
}
|
||||||
if (r300->winsys->validate(r300->winsys)) {
|
if (!r300->winsys->validate(r300->winsys)) {
|
||||||
r300->context.flush(&r300->context, 0, NULL);
|
r300->context.flush(&r300->context, 0, NULL);
|
||||||
if (invalid) {
|
if (invalid) {
|
||||||
/* Well, hell. */
|
/* Well, hell. */
|
||||||
|
debug_printf("r300: Stuck in validation loop, gonna quit now.");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
invalid = TRUE;
|
invalid = TRUE;
|
||||||
|
|
|
@ -125,9 +125,10 @@ validate:
|
||||||
r300->context.flush(&r300->context, 0, NULL);
|
r300->context.flush(&r300->context, 0, NULL);
|
||||||
goto validate;
|
goto validate;
|
||||||
}
|
}
|
||||||
if (r300->winsys->validate(r300->winsys)) {
|
if (!r300->winsys->validate(r300->winsys)) {
|
||||||
r300->context.flush(&r300->context, 0, NULL);
|
r300->context.flush(&r300->context, 0, NULL);
|
||||||
if (invalid) {
|
if (invalid) {
|
||||||
|
debug_printf("r300: Stuck in validation loop, gonna fallback.");
|
||||||
goto fallback;
|
goto fallback;
|
||||||
}
|
}
|
||||||
invalid = TRUE;
|
invalid = TRUE;
|
||||||
|
@ -256,9 +257,10 @@ validate:
|
||||||
r300->context.flush(&r300->context, 0, NULL);
|
r300->context.flush(&r300->context, 0, NULL);
|
||||||
goto validate;
|
goto validate;
|
||||||
}
|
}
|
||||||
if (r300->winsys->validate(r300->winsys)) {
|
if (!r300->winsys->validate(r300->winsys)) {
|
||||||
r300->context.flush(&r300->context, 0, NULL);
|
r300->context.flush(&r300->context, 0, NULL);
|
||||||
if (invalid) {
|
if (invalid) {
|
||||||
|
debug_printf("r300: Stuck in validation loop, gonna fallback.");
|
||||||
goto fallback;
|
goto fallback;
|
||||||
}
|
}
|
||||||
invalid = TRUE;
|
invalid = TRUE;
|
||||||
|
|
|
@ -29,12 +29,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "radeon_drm.h"
|
#include "radeon_drm.h"
|
||||||
#include "trace/tr_drm.h"
|
|
||||||
|
|
||||||
#include "r300_screen.h"
|
|
||||||
#include "xf86drm.h"
|
|
||||||
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
|
|
||||||
/* Create a pipe_screen. */
|
/* Create a pipe_screen. */
|
||||||
struct pipe_screen* radeon_create_screen(struct drm_api* api,
|
struct pipe_screen* radeon_create_screen(struct drm_api* api,
|
||||||
|
@ -59,7 +53,8 @@ struct pipe_context* radeon_create_context(struct drm_api* api,
|
||||||
if (getenv("RADEON_SOFTPIPE")) {
|
if (getenv("RADEON_SOFTPIPE")) {
|
||||||
return radeon_create_softpipe(screen->winsys);
|
return radeon_create_softpipe(screen->winsys);
|
||||||
} else {
|
} else {
|
||||||
return r300_create_context(screen, screen->winsys);
|
return r300_create_context(screen,
|
||||||
|
(struct r300_winsys*)screen->winsys);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,8 +30,13 @@
|
||||||
#ifndef RADEON_DRM_H
|
#ifndef RADEON_DRM_H
|
||||||
#define RADEON_DRM_H
|
#define RADEON_DRM_H
|
||||||
|
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
|
||||||
|
#include "xf86drm.h"
|
||||||
|
|
||||||
#include "pipe/p_screen.h"
|
#include "pipe/p_screen.h"
|
||||||
|
|
||||||
|
#include "trace/tr_drm.h"
|
||||||
#include "util/u_memory.h"
|
#include "util/u_memory.h"
|
||||||
|
|
||||||
#include "state_tracker/drm_api.h"
|
#include "state_tracker/drm_api.h"
|
||||||
|
@ -40,6 +45,9 @@
|
||||||
#include "radeon_r300.h"
|
#include "radeon_r300.h"
|
||||||
#include "radeon_winsys_softpipe.h"
|
#include "radeon_winsys_softpipe.h"
|
||||||
|
|
||||||
|
/* XXX */
|
||||||
|
#include "r300_screen.h"
|
||||||
|
|
||||||
struct pipe_screen* radeon_create_screen(struct drm_api* api,
|
struct pipe_screen* radeon_create_screen(struct drm_api* api,
|
||||||
int drmFB,
|
int drmFB,
|
||||||
struct drm_create_screen_arg *arg);
|
struct drm_create_screen_arg *arg);
|
||||||
|
|
|
@ -41,11 +41,11 @@ static boolean radeon_r300_validate(struct r300_winsys* winsys)
|
||||||
(struct radeon_winsys_priv*)winsys->radeon_winsys;
|
(struct radeon_winsys_priv*)winsys->radeon_winsys;
|
||||||
|
|
||||||
if (radeon_cs_space_check(priv->cs) < 0) {
|
if (radeon_cs_space_check(priv->cs) < 0) {
|
||||||
return TRUE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Things are fine, we can proceed as normal. */
|
/* Things are fine, we can proceed as normal. */
|
||||||
return FALSE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static boolean radeon_r300_check_cs(struct r300_winsys* winsys, int size)
|
static boolean radeon_r300_check_cs(struct r300_winsys* winsys, int size)
|
||||||
|
@ -118,10 +118,15 @@ static void radeon_r300_flush_cs(struct r300_winsys* winsys)
|
||||||
debug_printf("radeon: Bad CS, dumping...\n");
|
debug_printf("radeon: Bad CS, dumping...\n");
|
||||||
radeon_cs_print(priv->cs, stderr);
|
radeon_cs_print(priv->cs, stderr);
|
||||||
}
|
}
|
||||||
radeon_cs_erase(priv->cs);
|
|
||||||
|
|
||||||
/* Clean out BOs. */
|
/* Clean out BOs. */
|
||||||
radeon_cs_space_reset_bos(priv->cs);
|
radeon_cs_space_reset_bos(priv->cs);
|
||||||
|
|
||||||
|
/* Reset CS.
|
||||||
|
* Someday, when we care about performance, we should really find a way
|
||||||
|
* to rotate between two or three CS objects so that the GPU can be
|
||||||
|
* spinning through one CS while another one is being filled. */
|
||||||
|
radeon_cs_erase(priv->cs);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Helper function to do the ioctls needed for setup and init. */
|
/* Helper function to do the ioctls needed for setup and init. */
|
||||||
|
|
|
@ -34,19 +34,6 @@
|
||||||
|
|
||||||
#include "radeon_buffer.h"
|
#include "radeon_buffer.h"
|
||||||
|
|
||||||
/* protect us from bonghits */
|
|
||||||
#ifndef RADEON_INFO_DEVICE_ID
|
|
||||||
#define RADEON_INFO_DEVICE_ID 0
|
|
||||||
#endif
|
|
||||||
#ifndef DRM_RADEON_INFO
|
|
||||||
#define DRM_RADEON_INFO 0x1
|
|
||||||
struct drm_radeon_info {
|
|
||||||
uint32_t request;
|
|
||||||
uint32_t pad;
|
|
||||||
uint64_t value;
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct radeon_winsys;
|
struct radeon_winsys;
|
||||||
|
|
||||||
struct r300_winsys*
|
struct r300_winsys*
|
||||||
|
|
Loading…
Reference in New Issue